0
|
1 package Fingerprints::MACCSKeys;
|
|
2 #
|
|
3 # $RCSfile: MACCSKeys.pm,v $
|
|
4 # $Date: 2015/02/28 20:48:54 $
|
|
5 # $Revision: 1.33 $
|
|
6 #
|
|
7 # Author: Manish Sud <msud@san.rr.com>
|
|
8 #
|
|
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
|
|
10 #
|
|
11 # This file is part of MayaChemTools.
|
|
12 #
|
|
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
|
|
14 # the terms of the GNU Lesser General Public License as published by the Free
|
|
15 # Software Foundation; either version 3 of the License, or (at your option) any
|
|
16 # later version.
|
|
17 #
|
|
18 # MayaChemTools is distributed in the hope that it will be useful, but without
|
|
19 # any warranty; without even the implied warranty of merchantability of fitness
|
|
20 # for a particular purpose. See the GNU Lesser General Public License for more
|
|
21 # details.
|
|
22 #
|
|
23 # You should have received a copy of the GNU Lesser General Public License
|
|
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
|
|
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
|
|
26 # Boston, MA, 02111-1307, USA.
|
|
27 #
|
|
28
|
|
29 use strict;
|
|
30 use Carp;
|
|
31 use Exporter;
|
|
32 use Fingerprints::Fingerprints;
|
|
33 use TextUtil ();
|
|
34 use Molecule;
|
|
35 use PeriodicTable;
|
|
36
|
|
37 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
|
|
38
|
|
39 @ISA = qw(Fingerprints::Fingerprints Exporter);
|
|
40 @EXPORT = qw();
|
|
41 @EXPORT_OK = qw();
|
|
42
|
|
43 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
|
|
44
|
|
45 # Setup class variables...
|
|
46 my($ClassName);
|
|
47 _InitializeClass();
|
|
48
|
|
49 # Overload Perl functions...
|
|
50 use overload '""' => 'StringifyMACCSKeys';
|
|
51
|
|
52 # Class constructor...
|
|
53 sub new {
|
|
54 my($Class, %NamesAndValues) = @_;
|
|
55
|
|
56 # Initialize object...
|
|
57 my $This = $Class->SUPER::new();
|
|
58 bless $This, ref($Class) || $Class;
|
|
59 $This->_InitializeMACCSKeys();
|
|
60
|
|
61 $This->_InitializeMACCSKeysProperties(%NamesAndValues);
|
|
62
|
|
63 return $This;
|
|
64 }
|
|
65
|
|
66 # Initialize object data...
|
|
67 #
|
|
68 sub _InitializeMACCSKeys {
|
|
69 my($This) = @_;
|
|
70
|
|
71 # Type of fingerprint to generate:
|
|
72 #
|
|
73 # MACCSKeyBits - A bit vector indicating presence/absence of keys
|
|
74 # MACCSKeyCount - A vector containing count of keys
|
|
75 #
|
|
76 $This->{Type} = '';
|
|
77 $This->{KeyBits} = '';
|
|
78
|
|
79 # Size of key set: 166 or 322...
|
|
80 $This->{Size} = '';
|
|
81 }
|
|
82
|
|
83 # Initialize class ...
|
|
84 sub _InitializeClass {
|
|
85 #Class name...
|
|
86 $ClassName = __PACKAGE__;
|
|
87 }
|
|
88
|
|
89 # Initialize object properties....
|
|
90 sub _InitializeMACCSKeysProperties {
|
|
91 my($This, %NamesAndValues) = @_;
|
|
92
|
|
93 my($Name, $Value, $MethodName);
|
|
94 while (($Name, $Value) = each %NamesAndValues) {
|
|
95 $MethodName = "Set${Name}";
|
|
96 $This->$MethodName($Value);
|
|
97 }
|
|
98
|
|
99 # Make sure molecule object was specified...
|
|
100 if (!exists $NamesAndValues{Molecule}) {
|
|
101 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying molecule...";
|
|
102 }
|
|
103
|
|
104 # Make sure type and size were specified...
|
|
105 if (!exists $NamesAndValues{Type}) {
|
|
106 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying type...";
|
|
107 }
|
|
108 if (!exists $NamesAndValues{Size}) {
|
|
109 croak "Error: ${ClassName}->New: Object can't be instantiated without specifying size...";
|
|
110 }
|
|
111
|
|
112 # Make sure approriate size is specified...
|
|
113 if ($NamesAndValues{Size} !~ /^(166|322)$/) {
|
|
114 croak "Error: ${ClassName}->New: The current release of MayaChemTools doesn't support MDL MACCS $NamesAndValues{Size} keys...";
|
|
115 }
|
|
116
|
|
117 if ($This->{Type} =~ /^MACCSKeyBits$/i) {
|
|
118 $This->_InitializeMACCSKeyBits();
|
|
119 }
|
|
120 elsif ($This->{Type} =~ /^MACCSKeyCount$/i) {
|
|
121 $This->_InitializeMACCSKeyCounts();
|
|
122 }
|
|
123 else {
|
|
124 croak "Error: ${ClassName}->_InitializeMACCSKeysProperties: Unknown MACCS keys type: $This->{Type}; Supported type keys: MACCSKeyBits or MACCSKeyCount......";
|
|
125 }
|
|
126
|
|
127 return $This;
|
|
128 }
|
|
129
|
|
130 # Initialize MACCS key bits...
|
|
131 #
|
|
132 sub _InitializeMACCSKeyBits {
|
|
133 my($This) = @_;
|
|
134
|
|
135 $This->{KeyBits} = 1;
|
|
136
|
|
137 # Vector type...
|
|
138 $This->{VectorType} = 'FingerprintsBitVector';
|
|
139
|
|
140 $This->_InitializeFingerprintsBitVector();
|
|
141
|
|
142 return $This;
|
|
143 }
|
|
144
|
|
145 # Initialize MACCS key counts...
|
|
146 #
|
|
147 sub _InitializeMACCSKeyCounts {
|
|
148 my($This) = @_;
|
|
149
|
|
150 $This->{KeyBits} = 0;
|
|
151
|
|
152 # Vector type and type of values...
|
|
153 $This->{VectorType} = 'FingerprintsVector';
|
|
154 $This->{FingerprintsVectorType} = 'OrderedNumericalValues';
|
|
155
|
|
156 $This->_InitializeFingerprintsVector();
|
|
157
|
|
158 # Initialize values to zero...
|
|
159 my(@Values);
|
|
160 @Values = (0) x $This->{Size};
|
|
161 $This->{FingerprintsVector}->AddValues(\@Values);
|
|
162
|
|
163 return $This;
|
|
164 }
|
|
165
|
|
166 # Set type...
|
|
167 #
|
|
168 sub SetType {
|
|
169 my($This, $Type) = @_;
|
|
170
|
|
171 if ($This->{Type}) {
|
|
172 croak "Error: ${ClassName}->SetType: Can't change type: It's already set...";
|
|
173 }
|
|
174
|
|
175 if ($Type =~ /^MACCSKeyBits$/i) {
|
|
176 $This->{Type} = 'MACCSKeyBits';;
|
|
177 $This->{KeyBits} = 1;
|
|
178 }
|
|
179 elsif ($Type =~ /^MACCSKeyCount$/i) {
|
|
180 $This->{Type} = 'MACCSKeyCount';;
|
|
181 $This->{KeyBits} = 0;
|
|
182 }
|
|
183 else {
|
|
184 croak "Error: ${ClassName}->SetType: Unknown type MACCS keys: $Type; Supported type keys: MACCSKeyBits or MACCSKeyCount...";
|
|
185 }
|
|
186 return $This;
|
|
187 }
|
|
188
|
|
189 # Set size...
|
|
190 #
|
|
191 sub SetSize {
|
|
192 my($This, $Value) = @_;
|
|
193
|
|
194 if ($This->{Size}) {
|
|
195 croak "Error: ${ClassName}->SetSize: Can't change size: It's already set...";
|
|
196 }
|
|
197 if (!TextUtil::IsPositiveInteger($Value)) {
|
|
198 croak "Error: ${ClassName}->SetSize: Size value, $Value, is not valid: It must be a positive integer...";
|
|
199 }
|
|
200 if ($Value !~ /^(166|322)/i) {
|
|
201 croak "Error: ${ClassName}->Size: The current release of MayaChemTools doesn't support MDL MACCS $Value keys...";
|
|
202 }
|
|
203 $This->{Size} = $Value;
|
|
204
|
|
205 return $This;
|
|
206 }
|
|
207
|
|
208 # Generate description...
|
|
209 #
|
|
210 sub GetDescription {
|
|
211 my($This) = @_;
|
|
212
|
|
213 # Is description explicity set?
|
|
214 if (exists $This->{Description}) {
|
|
215 return $This->{Description};
|
|
216 }
|
|
217
|
|
218 return "$This->{Type}";
|
|
219 }
|
|
220
|
|
221 # Generate MDL MACCS keys..
|
|
222 #
|
|
223 sub GenerateMACCSKeys {
|
|
224 my($This) = @_;
|
|
225
|
|
226 # Cache appropriate molecule data...
|
|
227 $This->_SetupMoleculeDataCache();
|
|
228
|
|
229 if ($This->{Size} == 166) {
|
|
230 $This->_GenerateMACCS166Keys();
|
|
231 }
|
|
232 elsif ($This->{Size} == 322) {
|
|
233 $This->_GenerateMACCS322Keys();
|
|
234 }
|
|
235 else {
|
|
236 croak "Error: ${ClassName}->GenerateMACCSKeys: The current release of MayaChemTools doesn't support MDL MACCS $This->{Size} keys...";
|
|
237 }
|
|
238
|
|
239 $This->{FingerprintsGenerated} = 1;
|
|
240
|
|
241 # Clear cached molecule data...
|
|
242 $This->_ClearMoleculeDataCache();
|
|
243
|
|
244 return $This;
|
|
245 }
|
|
246
|
|
247 # Setup GenerateFingerprints method in order to be consistent with all other
|
|
248 # fingerprints classes implemented in the current release of MayaChemTools...
|
|
249 #
|
|
250 sub GenerateFingerprints {
|
|
251 my($This) = @_;
|
|
252
|
|
253 return $This->GenerateMACCSKeys();
|
|
254 }
|
|
255
|
|
256 # Generate MDL MACCS 166 keys...
|
|
257 #
|
|
258 # Information on the 166 keys [ Ref. 45-47 ]:
|
|
259 #
|
|
260 # Atom symbols:
|
|
261 #
|
|
262 # A : Any valid perodic table element symbol
|
|
263 # Q : Hetro atoms; any non-C or non-H atom
|
|
264 # X : Halogens; F, Cl, Br, I
|
|
265 # Z : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I
|
|
266 #
|
|
267 # Bond types:
|
|
268 #
|
|
269 # - : Single
|
|
270 # = : Double
|
|
271 # T : Triple
|
|
272 # # : Triple
|
|
273 # ~ : Single or double query bond
|
|
274 # % : An aromatic query bond
|
|
275 #
|
|
276 # None : Any bond type; no explict bond specified
|
|
277 #
|
|
278 # $ : Ring bond; $ before a bond type specifies ring bond
|
|
279 # ! : Chain or non-ring bond; ! before a bond type specifies chain bond
|
|
280 #
|
|
281 # @ : A ring linkage and the number following it specifies the
|
|
282 # atoms position in the line, thus @1 means linked back to the first atom in
|
|
283 # the list.
|
|
284 #
|
|
285 # Aromatic: Kekule or Arom5
|
|
286 #
|
|
287 # Kekule: Bonds in 6-membered rings with alternalte single/double bonds or perimeter
|
|
288 # bonds
|
|
289 #
|
|
290 # Arom5: Bonds in 5-membered rings with two double bonds and a hetro atom at
|
|
291 # the apex of the ring.
|
|
292 #
|
|
293 # Index Key Description
|
|
294 # 1 ISOTOPE
|
|
295 # 2 103 < ATOMIC NO. < 256
|
|
296 # 3 GROUP IVA,VA,VIA PERIODS 4-6 (Ge...)
|
|
297 # 4 ACTINIDE
|
|
298 # 5 GROUP IIIB,IVB (Sc...)
|
|
299 # 6 LANTHANIDE
|
|
300 # 7 GROUP VB,VIB,VIIB (V...)
|
|
301 # 8 QAAA@1
|
|
302 # 9 GROUP VIII (Fe...)
|
|
303 # 10 GROUP IIA (ALKALINE EARTH)
|
|
304 # 11 4M RING
|
|
305 # 12 GROUP IB,IIB (Cu...)
|
|
306 # 13 ON(C)C
|
|
307 # 14 S-S
|
|
308 # 15 OC(O)O
|
|
309 # 16 QAA@1
|
|
310 # 17 CTC
|
|
311 # 18 GROUP IIIA (B...)
|
|
312 # 19 7M RING
|
|
313 # 20 SI
|
|
314 # 21 C=C(Q)Q
|
|
315 # 22 3M RING
|
|
316 # 23 NC(O)O
|
|
317 # 24 N-O
|
|
318 # 25 NC(N)N
|
|
319 # 26 C$=C($A)$A
|
|
320 # 27 I
|
|
321 # 28 QCH2Q
|
|
322 # 29 P
|
|
323 # 30 CQ(C)(C)A
|
|
324 # 31 QX
|
|
325 # 32 CSN
|
|
326 # 33 NS
|
|
327 # 34 CH2=A
|
|
328 # 35 GROUP IA (ALKALI METAL)
|
|
329 # 36 S HETEROCYCLE
|
|
330 # 37 NC(O)N
|
|
331 # 38 NC(C)N
|
|
332 # 39 OS(O)O
|
|
333 # 40 S-O
|
|
334 # 41 CTN
|
|
335 # 42 F
|
|
336 # 43 QHAQH
|
|
337 # 44 OTHER
|
|
338 # 45 C=CN
|
|
339 # 46 BR
|
|
340 # 47 SAN
|
|
341 # 48 OQ(O)O
|
|
342 # 49 CHARGE
|
|
343 # 50 C=C(C)C
|
|
344 # 51 CSO
|
|
345 # 52 NN
|
|
346 # 53 QHAAAQH
|
|
347 # 54 QHAAQH
|
|
348 # 55 OSO
|
|
349 # 56 ON(O)C
|
|
350 # 57 O HETEROCYCLE
|
|
351 # 58 QSQ
|
|
352 # 59 Snot%A%A
|
|
353 # 60 S=O
|
|
354 # 61 AS(A)A
|
|
355 # 62 A$A!A$A
|
|
356 # 63 N=O
|
|
357 # 64 A$A!S
|
|
358 # 65 C%N
|
|
359 # 66 CC(C)(C)A
|
|
360 # 67 QS
|
|
361 # 68 QHQH (&...)
|
|
362 # 69 QQH
|
|
363 # 70 QNQ
|
|
364 # 71 NO
|
|
365 # 72 OAAO
|
|
366 # 73 S=A
|
|
367 # 74 CH3ACH3
|
|
368 # 75 A!N$A
|
|
369 # 76 C=C(A)A
|
|
370 # 77 NAN
|
|
371 # 78 C=N
|
|
372 # 79 NAAN
|
|
373 # 80 NAAAN
|
|
374 # 81 SA(A)A
|
|
375 # 82 ACH2QH
|
|
376 # 83 QAAAA@1
|
|
377 # 84 NH2
|
|
378 # 85 CN(C)C
|
|
379 # 86 CH2QCH2
|
|
380 # 87 X!A$A
|
|
381 # 88 S
|
|
382 # 89 OAAAO
|
|
383 # 90 QHAACH2A
|
|
384 # 91 QHAAACH2A
|
|
385 # 92 OC(N)C
|
|
386 # 93 QCH3
|
|
387 # 94 QN
|
|
388 # 95 NAAO
|
|
389 # 96 5M RING
|
|
390 # 97 NAAAO
|
|
391 # 98 QAAAAA@1
|
|
392 # 99 C=C
|
|
393 # 100 ACH2N
|
|
394 # 101 8M RING
|
|
395 # 102 QO
|
|
396 # 103 CL
|
|
397 # 104 QHACH2A
|
|
398 # 105 A$A($A)$A
|
|
399 # 106 QA(Q)Q
|
|
400 # 107 XA(A)A
|
|
401 # 108 CH3AAACH2A
|
|
402 # 109 ACH2O
|
|
403 # 110 NCO
|
|
404 # 111 NACH2A
|
|
405 # 112 AA(A)(A)A
|
|
406 # 113 Onot%A%A
|
|
407 # 114 CH3CH2A
|
|
408 # 115 CH3ACH2A
|
|
409 # 116 CH3AACH2A
|
|
410 # 117 NAO
|
|
411 # 118 ACH2CH2A > 1
|
|
412 # 119 N=A
|
|
413 # 120 HETEROCYCLIC ATOM > 1 (&...)
|
|
414 # 121 N HETEROCYCLE
|
|
415 # 122 AN(A)A
|
|
416 # 123 OCO
|
|
417 # 124 QQ
|
|
418 # 125 AROMATIC RING > 1
|
|
419 # 126 A!O!A
|
|
420 # 127 A$A!O > 1 (&...)
|
|
421 # 128 ACH2AAACH2A
|
|
422 # 129 ACH2AACH2A
|
|
423 # 130 QQ > 1 (&...)
|
|
424 # 131 QH > 1
|
|
425 # 132 OACH2A
|
|
426 # 133 A$A!N
|
|
427 # 134 X (HALOGEN)
|
|
428 # 135 Nnot%A%A
|
|
429 # 136 O=A > 1
|
|
430 # 137 HETEROCYCLE
|
|
431 # 138 QCH2A > 1 (&...)
|
|
432 # 139 OH
|
|
433 # 140 O > 3 (&...)
|
|
434 # 141 CH3 > 2 (&...)
|
|
435 # 142 N > 1
|
|
436 # 143 A$A!O
|
|
437 # 144 Anot%A%Anot%A
|
|
438 # 145 6M RING > 1
|
|
439 # 146 O > 2
|
|
440 # 147 ACH2CH2A
|
|
441 # 148 AQ(A)A
|
|
442 # 149 CH3 > 1
|
|
443 # 150 A!A$A!A
|
|
444 # 151 NH
|
|
445 # 152 OC(C)C
|
|
446 # 153 QCH2A
|
|
447 # 154 C=O
|
|
448 # 155 A!CH2!A
|
|
449 # 156 NA(A)A
|
|
450 # 157 C-O
|
|
451 # 158 C-N
|
|
452 # 159 O > 1
|
|
453 # 160 CH3
|
|
454 # 161 N
|
|
455 # 162 AROMATIC
|
|
456 # 163 6M RING
|
|
457 # 164 O
|
|
458 # 165 RING
|
|
459 # 166 FRAGMENTS
|
|
460 #
|
|
461 sub _GenerateMACCS166Keys {
|
|
462 my($This) = @_;
|
|
463 my($KeyNum, $KeyIndex, $MethodName, $KeyValue, $SkipPosCheck);
|
|
464
|
|
465 $SkipPosCheck = 1;
|
|
466
|
|
467 # Generate and set key values...
|
|
468 KEYNUM: for $KeyNum (1 .. 166) {
|
|
469 $MethodName = "_Generate166KeySetKey${KeyNum}";
|
|
470 $KeyValue = $This->$MethodName();
|
|
471
|
|
472 if (!$KeyValue) {
|
|
473 next KEYNUM;
|
|
474 }
|
|
475 $KeyIndex = $KeyNum - 1;
|
|
476 if ($This->{KeyBits}) {
|
|
477 $This->{FingerprintsBitVector}->SetBit($KeyIndex, $SkipPosCheck);
|
|
478 }
|
|
479 else {
|
|
480 $This->{FingerprintsVector}->SetValue($KeyIndex, $KeyValue, $SkipPosCheck);
|
|
481 }
|
|
482 }
|
|
483
|
|
484 # Add key labels for MACCSKeyCount...
|
|
485 if (!$This->{KeyBits}) {
|
|
486 $This->_SetMACCSKeyCountValueIDs();
|
|
487 }
|
|
488
|
|
489 return $This;
|
|
490 }
|
|
491
|
|
492 # Generate MDL MACCS 322 keys...
|
|
493 #
|
|
494 # MDL MACCS 322 key set is defined in tables 1, 2 and 3 by: Joseph L. Durant; Burton A. Leland;
|
|
495 # Douglas R. Henry; James G. Nourse. Reoptimization of MDL Keys for Use in Drug Discovery [ Ref. 46 ].
|
|
496 #
|
|
497 # Atom symbols:
|
|
498 #
|
|
499 # A : Any valid perodic table element symbol
|
|
500 # Q : Hetro atoms; any non-C or non-H atom
|
|
501 # X : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I
|
|
502 # Z is neither defined nor used
|
|
503 #
|
|
504 # Atom symbol, X, used for 322 keys [ Ref 46 ] doesn't refer to Halogens as it does for 166 keys. In
|
|
505 # order to keep the definition of 322 keys consistent with the published definitions, the symbol X is
|
|
506 # used to imply "others" atoms, but it's internally mapped to symbol X as defined for 166 keys
|
|
507 # during the generation of key values.
|
|
508 #
|
|
509 # The keys include:
|
|
510 #
|
|
511 # o 26 atom properties of type P, as listed in Table 1
|
|
512 # o 32 one-atom environments, as listed in Table 3
|
|
513 # o 264 atom-bond-atom combinations listed in Table 4
|
|
514 #
|
|
515 # Total number of keys in three tables: 322
|
|
516 #
|
|
517 # Removal of two rare properties in Table 1 number 21 and 22 results in a 320 keyset.
|
|
518 #
|
|
519 # Atom properties-based keys (26):
|
|
520 #
|
|
521 # Index Description
|
|
522 # 1 A(AAA) or AA(A)A - atom with at least three neighbors
|
|
523 # 2 Q - heteroatom
|
|
524 # 3 Anot%not-A - atom involved in one or more multiple bonds, not aromatic
|
|
525 # 4 A(AAAA) or AA(A)(A)A - atom with at least four neighbors
|
|
526 # 5 A(QQ) or QA(Q) - atom with at least two heteroatom neighbors
|
|
527 # 6 A(QQQ) or QA(Q)Q - atom with at least three heteroatom neighbors
|
|
528 # 7 QH - heteroatom with at least one hydrogen attached
|
|
529 # 8 CH2(AA) or ACH2A - carbon with at least two single bonds and at least two hydrogens attached
|
|
530 # 9 CH3(A) or ACH3 - carbon with at least one single bond and at least three hydrogens attached
|
|
531 # 10 Halogen
|
|
532 # 11 A(-A-A-A) or A-A(-A)-A - atom has at least three single bonds
|
|
533 # 12 AAAAAA@1 > 2 - atom is in at least two different six-membered rings
|
|
534 # 13 A($A$A$A) or A$A($A)$A - atom has more than two ring bonds
|
|
535 # 14 A$A!A$A - atom is at a ring/chain boundary. When a comparison is done
|
|
536 # with another atom the path passes through the chain bond.
|
|
537 # 15 Anot%A%Anot%A - atom is at an aromatic/nonaromatic boundary. When a
|
|
538 # comparison is done with another atom the path
|
|
539 # passes through the aromatic bond.
|
|
540 # 16 A!A!A - atom with more than one chain bond
|
|
541 # 17 A!A$A!A - atom is at a ring/chain boundary. When a comparison is done
|
|
542 # with another atom the path passes through the ring bond.
|
|
543 # 18 A%Anot%A%A - atom is at an aromatic/nonaromatic boundary. When a
|
|
544 # comparison is done with another atom the
|
|
545 # path passes through the nonaromatic bond.
|
|
546 # 19 HETEROCYCLE - atom is a heteroatom in a ring.
|
|
547 # 20 rare properties: atom with five or more neighbors, atom in
|
|
548 # four or more rings, or atom types other than
|
|
549 # H, C, N, O, S, F, Cl, Br, or I
|
|
550 # 21 rare properties: atom has a charge, is an isotope, has two or
|
|
551 # more multiple bonds, or has a triple bond.
|
|
552 # 22 N - nitrogen
|
|
553 # 23 S - sulfur
|
|
554 # 24 O - oxygen
|
|
555 # 25 A(AA)A(A)A(AA) - atom has two neighbors, each with three or more neighbors
|
|
556 # (including the central atom).
|
|
557 # 26 CHACH2 - atom has two hydrocarbon (CH2) neighbors
|
|
558 #
|
|
559 #
|
|
560 # Atomic environments properties-based keys (32):
|
|
561 #
|
|
562 # Index Key Description
|
|
563 # 27 C(CC)
|
|
564 # 28 C(CCC)
|
|
565 # 29 C(CN)
|
|
566 # 30 C(CCN)
|
|
567 # 31 C(NN)
|
|
568 # 32 C(NNC)
|
|
569 # 33 C(NNN)
|
|
570 # 34 C(CO)
|
|
571 # 35 C(CCO)
|
|
572 # 36 C(NO)
|
|
573 # 37 C(NCO)
|
|
574 # 38 C(NNO)
|
|
575 # 39 C(OO)
|
|
576 # 40 C(COO)
|
|
577 # 41 C(NOO)
|
|
578 # 42 C(OOO)
|
|
579 # 43 Q(CC)
|
|
580 # 44 Q(CCC)
|
|
581 # 45 Q(CN)
|
|
582 # 46 Q(CCN)
|
|
583 # 47 Q(NN)
|
|
584 # 48 Q(CNN)
|
|
585 # 49 Q(NNN)
|
|
586 # 50 Q(CO)
|
|
587 # 51 Q(CCO)
|
|
588 # 52 Q(NO)
|
|
589 # 53 Q(CNO)
|
|
590 # 54 Q(NNO)
|
|
591 # 55 Q(OO)
|
|
592 # 56 Q(COO)
|
|
593 # 57 Q(NOO)
|
|
594 # 58 Q(OOO)
|
|
595 #
|
|
596 # Note: The first symbol is the central atom, with atoms bonded to the
|
|
597 # central atom listed in parentheses. Q is any non-C, non-H atom. If
|
|
598 # only two atoms are in parentheses, there is no implication concerning
|
|
599 # the other atoms bonded to the central atom.
|
|
600 #
|
|
601 # Atom-Bond-Atom properties-based keys: (264)
|
|
602 #
|
|
603 # Index Key Description
|
|
604 # 59 C-C
|
|
605 # 60 C-N
|
|
606 # 61 C-O
|
|
607 # 62 C-S
|
|
608 # 63 C-Cl
|
|
609 # 64 C-P
|
|
610 # 65 C-F
|
|
611 # 66 C-Br
|
|
612 # 67 C-Si
|
|
613 # 68 C-I
|
|
614 # 69 C-X
|
|
615 # 70 N-N
|
|
616 # 71 N-O
|
|
617 # 72 N-S
|
|
618 # 73 N-Cl
|
|
619 # 74 N-P
|
|
620 # 75 N-F
|
|
621 # 76 N-Br
|
|
622 # 77 N-Si
|
|
623 # 78 N-I
|
|
624 # 79 N-X
|
|
625 # 80 O-O
|
|
626 # 81 O-S
|
|
627 # 82 O-Cl
|
|
628 # 83 O-P
|
|
629 # 84 O-F
|
|
630 # 85 O-Br
|
|
631 # 86 O-Si
|
|
632 # 87 O-I
|
|
633 # 88 O-X
|
|
634 # 89 S-S
|
|
635 # 90 S-Cl
|
|
636 # 91 S-P
|
|
637 # 92 S-F
|
|
638 # 93 S-Br
|
|
639 # 94 S-Si
|
|
640 # 95 S-I
|
|
641 # 96 S-X
|
|
642 # 97 Cl-Cl
|
|
643 # 98 Cl-P
|
|
644 # 99 Cl-F
|
|
645 # 100 Cl-Br
|
|
646 # 101 Cl-Si
|
|
647 # 102 Cl-I
|
|
648 # 103 Cl-X
|
|
649 # 104 P-P
|
|
650 # 105 P-F
|
|
651 # 106 P-Br
|
|
652 # 107 P-Si
|
|
653 # 108 P-I
|
|
654 # 109 P-X
|
|
655 # 110 F-F
|
|
656 # 111 F-Br
|
|
657 # 112 F-Si
|
|
658 # 113 F-I
|
|
659 # 114 F-X
|
|
660 # 115 Br-Br
|
|
661 # 116 Br-Si
|
|
662 # 117 Br-I
|
|
663 # 118 Br-X
|
|
664 # 119 Si-Si
|
|
665 # 120 Si-I
|
|
666 # 121 Si-X
|
|
667 # 122 I-I
|
|
668 # 123 I-X
|
|
669 # 124 X-X
|
|
670 # 125 C=C
|
|
671 # 126 C=N
|
|
672 # 127 C=O
|
|
673 # 128 C=S
|
|
674 # 129 C=Cl
|
|
675 # 130 C=P
|
|
676 # 131 C=F
|
|
677 # 132 C=Br
|
|
678 # 133 C=Si
|
|
679 # 134 C=I
|
|
680 # 135 C=X
|
|
681 # 136 N=N
|
|
682 # 137 N=O
|
|
683 # 138 N=S
|
|
684 # 139 N=Cl
|
|
685 # 140 N=P
|
|
686 # 141 N=F
|
|
687 # 142 N=Br
|
|
688 # 143 N=Si
|
|
689 # 144 N=I
|
|
690 # 145 N=X
|
|
691 # 146 O=O
|
|
692 # 147 O=S
|
|
693 # 148 O=Cl
|
|
694 # 149 O=P
|
|
695 # 150 O=F
|
|
696 # 151 O=Br
|
|
697 # 152 O=Si
|
|
698 # 153 O=I
|
|
699 # 154 O=X
|
|
700 # 155 S=S
|
|
701 # 156 S=Cl
|
|
702 # 157 S=P
|
|
703 # 158 S=F
|
|
704 # 159 S=Br
|
|
705 # 160 S=Si
|
|
706 # 161 S=I
|
|
707 # 162 S=X
|
|
708 # 163 Cl=Cl
|
|
709 # 164 Cl=P
|
|
710 # 165 Cl=F
|
|
711 # 166 Cl=Br
|
|
712 # 167 Cl=Si
|
|
713 # 168 Cl=I
|
|
714 # 169 Cl=X
|
|
715 # 170 P=P
|
|
716 # 171 P=F
|
|
717 # 172 P=Br
|
|
718 # 173 P=Si
|
|
719 # 174 P=I
|
|
720 # 175 P=X
|
|
721 # 176 F=F
|
|
722 # 177 F=Br
|
|
723 # 178 F=Si
|
|
724 # 179 F=I
|
|
725 # 180 F=X
|
|
726 # 181 Br=Br
|
|
727 # 182 Br=Si
|
|
728 # 183 Br=I
|
|
729 # 184 Br=X
|
|
730 # 185 Si=Si
|
|
731 # 186 Si=I
|
|
732 # 187 Si=X
|
|
733 # 188 I=I
|
|
734 # 189 I=X
|
|
735 # 190 X=X
|
|
736 # 191 C#C
|
|
737 # 192 C#N
|
|
738 # 193 C#O
|
|
739 # 194 C#S
|
|
740 # 195 C#Cl
|
|
741 # 196 C#P
|
|
742 # 197 C#F
|
|
743 # 198 C#Br
|
|
744 # 199 C#Si
|
|
745 # 200 C#I
|
|
746 # 201 C#X
|
|
747 # 202 N#N
|
|
748 # 203 N#O
|
|
749 # 204 N#S
|
|
750 # 205 N#Cl
|
|
751 # 206 N#P
|
|
752 # 207 N#F
|
|
753 # 208 N#Br
|
|
754 # 209 N#Si
|
|
755 # 210 N#I
|
|
756 # 211 N#X
|
|
757 # 212 O#O
|
|
758 # 213 O#S
|
|
759 # 214 O#Cl
|
|
760 # 215 O#P
|
|
761 # 216 O#F
|
|
762 # 217 O#Br
|
|
763 # 218 O#Si
|
|
764 # 219 O#I
|
|
765 # 220 O#X
|
|
766 # 221 S#S
|
|
767 # 222 S#Cl
|
|
768 # 223 S#P
|
|
769 # 224 S#F
|
|
770 # 225 S#Br
|
|
771 # 226 S#Si
|
|
772 # 227 S#I
|
|
773 # 228 S#X
|
|
774 # 229 Cl#Cl
|
|
775 # 230 Cl#P
|
|
776 # 231 Cl#F
|
|
777 # 232 Cl#Br
|
|
778 # 233 Cl#Si
|
|
779 # 234 Cl#I
|
|
780 # 235 Cl#X
|
|
781 # 236 P#P
|
|
782 # 237 P#F
|
|
783 # 238 P#Br
|
|
784 # 239 P#Si
|
|
785 # 240 P#I
|
|
786 # 241 P#X
|
|
787 # 242 F#F
|
|
788 # 243 F#Br
|
|
789 # 244 F#Si
|
|
790 # 245 F#I
|
|
791 # 246 F#X
|
|
792 # 247 Br#Br
|
|
793 # 248 Br#Si
|
|
794 # 249 Br#I
|
|
795 # 250 Br#X
|
|
796 # 251 Si#Si
|
|
797 # 252 Si#I
|
|
798 # 253 Si#X
|
|
799 # 254 I#I
|
|
800 # 255 I#X
|
|
801 # 256 X#X
|
|
802 # 257 C$C
|
|
803 # 258 C$N
|
|
804 # 259 C$O
|
|
805 # 260 C$S
|
|
806 # 261 C$Cl
|
|
807 # 262 C$P
|
|
808 # 263 C$F
|
|
809 # 264 C$Br
|
|
810 # 265 C$Si
|
|
811 # 266 C$I
|
|
812 # 267 C$X
|
|
813 # 268 N$N
|
|
814 # 269 N$O
|
|
815 # 270 N$S
|
|
816 # 271 N$Cl
|
|
817 # 272 N$P
|
|
818 # 273 N$F
|
|
819 # 274 N$Br
|
|
820 # 275 N$Si
|
|
821 # 276 N$I
|
|
822 # 277 N$X
|
|
823 # 278 O$O
|
|
824 # 279 O$S
|
|
825 # 280 O$Cl
|
|
826 # 281 O$P
|
|
827 # 282 O$F
|
|
828 # 283 O$Br
|
|
829 # 284 O$Si
|
|
830 # 285 O$I
|
|
831 # 286 O$X
|
|
832 # 287 S$S
|
|
833 # 288 S$Cl
|
|
834 # 289 S$P
|
|
835 # 290 S$F
|
|
836 # 291 S$Br
|
|
837 # 292 S$Si
|
|
838 # 293 S$I
|
|
839 # 294 S$X
|
|
840 # 295 Cl$Cl
|
|
841 # 296 Cl$P
|
|
842 # 297 Cl$F
|
|
843 # 298 Cl$Br
|
|
844 # 299 Cl$Si
|
|
845 # 300 Cl$I
|
|
846 # 301 Cl$X
|
|
847 # 302 P$P
|
|
848 # 303 P$F
|
|
849 # 304 P$Br
|
|
850 # 305 P$Si
|
|
851 # 306 P$I
|
|
852 # 307 P$X
|
|
853 # 308 F$F
|
|
854 # 309 F$Br
|
|
855 # 310 F$Si
|
|
856 # 311 F$I
|
|
857 # 312 F$X
|
|
858 # 313 Br$Br
|
|
859 # 314 Br$Si
|
|
860 # 315 Br$I
|
|
861 # 316 Br$X
|
|
862 # 317 Si$Si
|
|
863 # 318 Si$I
|
|
864 # 319 Si$X
|
|
865 # 320 I$I
|
|
866 # 321 I$X
|
|
867 # 322 X$X
|
|
868 #
|
|
869 # Note: Instead of using '%' as rind bond as mentioned in the article [ Ref. 46 ], MayaChemTools
|
|
870 # used '$' as a symbol for ring bond to follow conventions used for MACCS 166 keys; the symbol '%'
|
|
871 # is used to indicate an aromatic query bond.
|
|
872 #
|
|
873 sub _GenerateMACCS322Keys {
|
|
874 my($This) = @_;
|
|
875 my($KeyNum, $KeyIndex, $MethodName, $KeyValue, $SkipPosCheck);
|
|
876
|
|
877 $SkipPosCheck = 1;
|
|
878
|
|
879 # Generate and set key values...
|
|
880 KEYNUM: for $KeyNum (1 .. 322) {
|
|
881 $MethodName = "_Generate322KeySetKey${KeyNum}";
|
|
882 $KeyValue = $This->$MethodName();
|
|
883
|
|
884 if (!$KeyValue) {
|
|
885 next KEYNUM;
|
|
886 }
|
|
887 $KeyIndex = $KeyNum - 1;
|
|
888 if ($This->{KeyBits}) {
|
|
889 $This->{FingerprintsBitVector}->SetBit($KeyIndex, $SkipPosCheck);
|
|
890 }
|
|
891 else {
|
|
892 $This->{FingerprintsVector}->SetValue($KeyIndex, $KeyValue, $SkipPosCheck);
|
|
893 }
|
|
894 }
|
|
895
|
|
896 # Add key labels for MACCSKeyCount...
|
|
897 if (!$This->{KeyBits}) {
|
|
898 $This->_SetMACCSKeyCountValueIDs();
|
|
899 }
|
|
900 return $This;
|
|
901 }
|
|
902
|
|
903 # Set MACCS key count value IDs for fingerprint vector. The value IDs labels format
|
|
904 # is: Key<KeyNum>.
|
|
905 #
|
|
906 # By default, no value IDs are set for fingerprint vector values.
|
|
907 #
|
|
908 sub _SetMACCSKeyCountValueIDs {
|
|
909 my($This) = @_;
|
|
910
|
|
911 if (!$This->{FingerprintsVector}) {
|
|
912 return;
|
|
913 }
|
|
914 my(@ValueIDs);
|
|
915
|
|
916 @ValueIDs = map { "Key$_"; } (1 .. $This->{Size});
|
|
917 $This->{FingerprintsVector}->AddValueIDs(\@ValueIDs);
|
|
918
|
|
919 return $This;
|
|
920 }
|
|
921
|
|
922 ##################################
|
|
923 #
|
|
924 # Implementation of MDL MACCS 166 keys...
|
|
925 #
|
|
926 ##################################
|
|
927
|
|
928 # Generate key 1 value as 1/0 indicating its presence/absence or count of its
|
|
929 # presence in a molecule.
|
|
930 #
|
|
931 # Key 1 description: ISOTOPE
|
|
932 #
|
|
933 sub _Generate166KeySetKey1 {
|
|
934 my($This) = @_;
|
|
935 my($Atom, $KeyValue);
|
|
936
|
|
937 $KeyValue = 0;
|
|
938 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
939 if ($Atom->IsIsotope()) {
|
|
940 if ($This->{KeyBits}) {
|
|
941 $KeyValue = 1;
|
|
942 last ATOM;
|
|
943 }
|
|
944 $KeyValue++;
|
|
945 }
|
|
946 }
|
|
947 return $KeyValue;
|
|
948 }
|
|
949
|
|
950 # Generate key 2 value as 1/0 indicating its presence/absence or count of its
|
|
951 # presence in a molecule.
|
|
952 #
|
|
953 # Key 2 description: 103 < ATOMIC NO. < 256
|
|
954 #
|
|
955 sub _Generate166KeySetKey2 {
|
|
956 my($This) = @_;
|
|
957 my($Atom, $AtomicNumber, $KeyValue);
|
|
958
|
|
959 $KeyValue = 0;
|
|
960 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
961 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
962 if ($AtomicNumber > 103 && $AtomicNumber < 256) {
|
|
963 if ($This->{KeyBits}) {
|
|
964 $KeyValue = 1;
|
|
965 last ATOM;
|
|
966 }
|
|
967 $KeyValue++;
|
|
968 }
|
|
969 }
|
|
970 return $KeyValue;
|
|
971 }
|
|
972
|
|
973 # Generate key 3 value as 1/0 indicating its presence/absence or count of its
|
|
974 # presence in a molecule.
|
|
975 #
|
|
976 # Key 3 description: GROUP IVA,VA,VIA (GroupNumber: 14, 15, 16) PERIODS 4-6 (Ge...)
|
|
977 #
|
|
978 sub _Generate166KeySetKey3 {
|
|
979 my($This) = @_;
|
|
980 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber, $PeriodNumber);
|
|
981
|
|
982 $KeyValue = 0;
|
|
983 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
984 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
985 if ($AtomicNumber) {
|
|
986 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
987 $PeriodNumber = PeriodicTable::GetElementPeriodNumber($AtomicNumber);
|
|
988 if ($PeriodNumber =~ /^(4|5|6)$/ && $GroupNumber =~ /^(14|15|16)$/) {
|
|
989 if ($This->{KeyBits}) {
|
|
990 $KeyValue = 1;
|
|
991 last ATOM;
|
|
992 }
|
|
993 $KeyValue++;
|
|
994 }
|
|
995 }
|
|
996 }
|
|
997 return $KeyValue;
|
|
998 }
|
|
999
|
|
1000 # Generate key 4 value as 1/0 indicating its presence/absence or count of its
|
|
1001 # presence in a molecule.
|
|
1002 #
|
|
1003 # Key 4 description: ACTINIDE
|
|
1004 #
|
|
1005 sub _Generate166KeySetKey4 {
|
|
1006 my($This) = @_;
|
|
1007 my($Atom, $AtomicNumber, $KeyValue);
|
|
1008
|
|
1009 $KeyValue = 0;
|
|
1010 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1011 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1012 if ($AtomicNumber >= 89 && $AtomicNumber <= 103) {
|
|
1013 if ($This->{KeyBits}) {
|
|
1014 $KeyValue = 1;
|
|
1015 last ATOM;
|
|
1016 }
|
|
1017 $KeyValue++;
|
|
1018 }
|
|
1019 }
|
|
1020 return $KeyValue;
|
|
1021 }
|
|
1022
|
|
1023 # Generate key 5 value as 1/0 indicating its presence/absence or count of its
|
|
1024 # presence in a molecule.
|
|
1025 #
|
|
1026 # Key 5 description: GROUP IIIB,IVB (Sc...)
|
|
1027 #
|
|
1028 sub _Generate166KeySetKey5 {
|
|
1029 my($This) = @_;
|
|
1030 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber);
|
|
1031
|
|
1032 $KeyValue = 0;
|
|
1033 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1034 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1035 if ($AtomicNumber) {
|
|
1036 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
1037 if ($GroupNumber =~ /^(3|4)$/) {
|
|
1038 if ($This->{KeyBits}) {
|
|
1039 $KeyValue = 1;
|
|
1040 last ATOM;
|
|
1041 }
|
|
1042 $KeyValue++;
|
|
1043 }
|
|
1044 }
|
|
1045 }
|
|
1046 return $KeyValue;
|
|
1047 }
|
|
1048
|
|
1049 # Generate key 6 value as 1/0 indicating its presence/absence or count of its
|
|
1050 # presence in a molecule.
|
|
1051 #
|
|
1052 # Key 6 description: LANTHANIDE
|
|
1053 #
|
|
1054 sub _Generate166KeySetKey6 {
|
|
1055 my($This) = @_;
|
|
1056 my($Atom, $AtomicNumber, $KeyValue);
|
|
1057
|
|
1058 $KeyValue = 0;
|
|
1059 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1060 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1061 if ($AtomicNumber >= 57 && $AtomicNumber <= 71) {
|
|
1062 if ($This->{KeyBits}) {
|
|
1063 $KeyValue = 1;
|
|
1064 last ATOM;
|
|
1065 }
|
|
1066 $KeyValue++;
|
|
1067 }
|
|
1068 }
|
|
1069 return $KeyValue;
|
|
1070 }
|
|
1071
|
|
1072 # Generate key 7 value as 1/0 indicating its presence/absence or count of its
|
|
1073 # presence in a molecule.
|
|
1074 #
|
|
1075 # Key 7 description: GROUP VB,VIB,VIIB (V...)
|
|
1076 #
|
|
1077 sub _Generate166KeySetKey7 {
|
|
1078 my($This) = @_;
|
|
1079 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber);
|
|
1080
|
|
1081 $KeyValue = 0;
|
|
1082 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1083 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1084 if ($AtomicNumber) {
|
|
1085 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
1086 if ($GroupNumber =~ /^(5|6|7)$/) {
|
|
1087 if ($This->{KeyBits}) {
|
|
1088 $KeyValue = 1;
|
|
1089 last ATOM;
|
|
1090 }
|
|
1091 $KeyValue++;
|
|
1092 }
|
|
1093 }
|
|
1094 }
|
|
1095 return $KeyValue;
|
|
1096 }
|
|
1097
|
|
1098 # Generate key 8 value as 1/0 indicating its presence/absence or count of its
|
|
1099 # presence in a molecule.
|
|
1100 #
|
|
1101 # Key 8 description: QAAA@1
|
|
1102 #
|
|
1103 sub _Generate166KeySetKey8 {
|
|
1104 my($This) = @_;
|
|
1105 my($Atom, $KeyValue, $RingSize);
|
|
1106
|
|
1107 $RingSize = 4;
|
|
1108 $KeyValue = 0;
|
|
1109 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1110 if ($This->_IsHeteroAtom($Atom) && $Atom->IsInRingOfSize($RingSize)) {
|
|
1111 if ($This->{KeyBits}) {
|
|
1112 $KeyValue = 1;
|
|
1113 last ATOM;
|
|
1114 }
|
|
1115 $KeyValue++;
|
|
1116 }
|
|
1117 }
|
|
1118 return $KeyValue;
|
|
1119 }
|
|
1120
|
|
1121 # Generate key 9 value as 1/0 indicating its presence/absence or count of its
|
|
1122 # presence in a molecule.
|
|
1123 #
|
|
1124 # Key 9 description: GROUP VIII (Fe...)
|
|
1125 #
|
|
1126 sub _Generate166KeySetKey9 {
|
|
1127 my($This) = @_;
|
|
1128 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber);
|
|
1129
|
|
1130 $KeyValue = 0;
|
|
1131 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1132 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1133 if ($AtomicNumber) {
|
|
1134 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
1135 if ($GroupNumber =~ /^(8|9|10)$/) {
|
|
1136 if ($This->{KeyBits}) {
|
|
1137 $KeyValue = 1;
|
|
1138 last ATOM;
|
|
1139 }
|
|
1140 $KeyValue++;
|
|
1141 }
|
|
1142 }
|
|
1143 }
|
|
1144 return $KeyValue;
|
|
1145 }
|
|
1146
|
|
1147 # Generate key 10 value as 1/0 indicating its presence/absence or count of its
|
|
1148 # presence in a molecule.
|
|
1149 #
|
|
1150 # Key 10 description: GROUP IIA (ALKALINE EARTH)
|
|
1151 #
|
|
1152 sub _Generate166KeySetKey10 {
|
|
1153 my($This) = @_;
|
|
1154 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber);
|
|
1155
|
|
1156 $KeyValue = 0;
|
|
1157 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1158 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1159 if ($AtomicNumber) {
|
|
1160 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
1161 if ($GroupNumber =~ /^2$/) {
|
|
1162 if ($This->{KeyBits}) {
|
|
1163 $KeyValue = 1;
|
|
1164 last ATOM;
|
|
1165 }
|
|
1166 $KeyValue++;
|
|
1167 }
|
|
1168 }
|
|
1169 }
|
|
1170 return $KeyValue;
|
|
1171 }
|
|
1172
|
|
1173 # Generate key 11 value as 1/0 indicating its presence/absence or count of its
|
|
1174 # presence in a molecule.
|
|
1175 #
|
|
1176 # Key 11 description: 4M RING
|
|
1177 #
|
|
1178 sub _Generate166KeySetKey11 {
|
|
1179 my($This) = @_;
|
|
1180 my($Molecule, $KeyValue, $RingSize, $NumOfRings);
|
|
1181
|
|
1182 $RingSize = 4;
|
|
1183 $Molecule = $This->GetMolecule();
|
|
1184 $NumOfRings = $Molecule->GetNumOfRingsWithSize($RingSize);
|
|
1185
|
|
1186 if ($This->{KeyBits}) {
|
|
1187 $KeyValue = $NumOfRings ? 1 : 0;
|
|
1188 }
|
|
1189 else {
|
|
1190 $KeyValue = $NumOfRings;
|
|
1191 }
|
|
1192 return $KeyValue;
|
|
1193 }
|
|
1194
|
|
1195 # Generate key 12 value as 1/0 indicating its presence/absence or count of its
|
|
1196 # presence in a molecule.
|
|
1197 #
|
|
1198 # Key 12 description: GROUP IB,IIB (Cu...)
|
|
1199 #
|
|
1200 sub _Generate166KeySetKey12 {
|
|
1201 my($This) = @_;
|
|
1202 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber);
|
|
1203
|
|
1204 $KeyValue = 0;
|
|
1205 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1206 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1207 if ($AtomicNumber) {
|
|
1208 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
1209 if ($GroupNumber =~ /^(11|12)$/) {
|
|
1210 if ($This->{KeyBits}) {
|
|
1211 $KeyValue = 1;
|
|
1212 last ATOM;
|
|
1213 }
|
|
1214 $KeyValue++;
|
|
1215 }
|
|
1216 }
|
|
1217 }
|
|
1218 return $KeyValue;
|
|
1219 }
|
|
1220
|
|
1221 # Generate key 13 value as 1/0 indicating its presence/absence or count of its
|
|
1222 # presence in a molecule.
|
|
1223 #
|
|
1224 # Key 13 description: ON(C)C
|
|
1225 #
|
|
1226 sub _Generate166KeySetKey13 {
|
|
1227 my($This) = @_;
|
|
1228 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1229
|
|
1230 $CentralAtomSymbol = 'N';
|
|
1231 @NbrAtomSymbols = ('O', 'C', 'C');
|
|
1232 @NbrBondSymbols = (undef, undef, undef);
|
|
1233
|
|
1234 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1235 }
|
|
1236
|
|
1237 # Generate key 14 value as 1/0 indicating its presence/absence or count of its
|
|
1238 # presence in a molecule.
|
|
1239 #
|
|
1240 # Key 14 description: S-S
|
|
1241 #
|
|
1242 sub _Generate166KeySetKey14 {
|
|
1243 my($This) = @_;
|
|
1244 my($BondOrder) = 1;
|
|
1245
|
|
1246 return $This->_DetectBondKeys('S', 'S', $BondOrder);
|
|
1247 }
|
|
1248
|
|
1249 # Generate key 15 value as 1/0 indicating its presence/absence or count of its
|
|
1250 # presence in a molecule.
|
|
1251 #
|
|
1252 # Key 15 description: OC(O)O
|
|
1253 #
|
|
1254 sub _Generate166KeySetKey15 {
|
|
1255 my($This) = @_;
|
|
1256 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1257
|
|
1258 $CentralAtomSymbol = 'C';
|
|
1259 @NbrAtomSymbols = ('O', 'O', 'O');
|
|
1260 @NbrBondSymbols = (undef, undef, undef);
|
|
1261
|
|
1262 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1263 }
|
|
1264
|
|
1265 # Generate key 16 value as 1/0 indicating its presence/absence or count of its
|
|
1266 # presence in a molecule.
|
|
1267 #
|
|
1268 # Key 16 description: QAA@1
|
|
1269 #
|
|
1270 sub _Generate166KeySetKey16 {
|
|
1271 my($This) = @_;
|
|
1272 my($Atom, $KeyValue, $RingSize);
|
|
1273
|
|
1274 $RingSize = 3;
|
|
1275 $KeyValue = 0;
|
|
1276 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1277 if ($This->_IsHeteroAtom($Atom) && $Atom->IsInRingOfSize($RingSize)) {
|
|
1278 if ($This->{KeyBits}) {
|
|
1279 $KeyValue = 1;
|
|
1280 last ATOM;
|
|
1281 }
|
|
1282 $KeyValue++;
|
|
1283 }
|
|
1284 }
|
|
1285 return $KeyValue;
|
|
1286 }
|
|
1287
|
|
1288 # Generate key 17 value as 1/0 indicating its presence/absence or count of its
|
|
1289 # presence in a molecule.
|
|
1290 #
|
|
1291 # Key 17 description: CTC
|
|
1292 #
|
|
1293 sub _Generate166KeySetKey17 {
|
|
1294 my($This) = @_;
|
|
1295 my($BondOrder) = 3;
|
|
1296
|
|
1297 return $This->_DetectBondKeys('C', 'C', $BondOrder);
|
|
1298 }
|
|
1299
|
|
1300 # Generate key 18 value as 1/0 indicating its presence/absence or count of its
|
|
1301 # presence in a molecule.
|
|
1302 #
|
|
1303 # Key 18 description: GROUP IIIA (B...)
|
|
1304 #
|
|
1305 sub _Generate166KeySetKey18 {
|
|
1306 my($This) = @_;
|
|
1307 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber);
|
|
1308
|
|
1309 $KeyValue = 0;
|
|
1310 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1311 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1312 if ($AtomicNumber) {
|
|
1313 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
1314 if ($GroupNumber =~ /^13$/) {
|
|
1315 if ($This->{KeyBits}) {
|
|
1316 $KeyValue = 1;
|
|
1317 last ATOM;
|
|
1318 }
|
|
1319 $KeyValue++;
|
|
1320 }
|
|
1321 }
|
|
1322 }
|
|
1323 return $KeyValue;
|
|
1324 }
|
|
1325
|
|
1326 # Generate key 19 value as 1/0 indicating its presence/absence or count of its
|
|
1327 # presence in a molecule.
|
|
1328 #
|
|
1329 # Key 19 description: 7M RING
|
|
1330 #
|
|
1331 sub _Generate166KeySetKey19 {
|
|
1332 my($This) = @_;
|
|
1333 my($Molecule, $KeyValue, $RingSize, $NumOfRings);
|
|
1334
|
|
1335 $RingSize = 7;
|
|
1336 $Molecule = $This->GetMolecule();
|
|
1337 $NumOfRings = $Molecule->GetNumOfRingsWithSize($RingSize);
|
|
1338
|
|
1339 $KeyValue = 0;
|
|
1340 if ($NumOfRings) {
|
|
1341 $KeyValue = ($This->{KeyBits}) ? 1 : $NumOfRings;
|
|
1342 }
|
|
1343 return $KeyValue;
|
|
1344 }
|
|
1345
|
|
1346 # Generate key 20 value as 1/0 indicating its presence/absence or count of its
|
|
1347 # presence in a molecule.
|
|
1348 #
|
|
1349 # Key 20 description: SI
|
|
1350 #
|
|
1351 sub _Generate166KeySetKey20 {
|
|
1352 my($This) = @_;
|
|
1353
|
|
1354 return $This->_DetectAtomKeys('Si');
|
|
1355 }
|
|
1356
|
|
1357 # Generate key 21 value as 1/0 indicating its presence/absence or count of its
|
|
1358 # presence in a molecule.
|
|
1359 #
|
|
1360 # Key 21 description: C=C(Q)Q
|
|
1361 #
|
|
1362 sub _Generate166KeySetKey21 {
|
|
1363 my($This) = @_;
|
|
1364 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1365
|
|
1366 $CentralAtomSymbol = 'C';
|
|
1367 @NbrAtomSymbols = ('C', 'Q', 'Q');
|
|
1368 @NbrBondSymbols = ('=', undef, undef);
|
|
1369
|
|
1370 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1371 }
|
|
1372
|
|
1373 # Generate key 22 value as 1/0 indicating its presence/absence or count of its
|
|
1374 # presence in a molecule.
|
|
1375 #
|
|
1376 # Key 22 description: 3M RING
|
|
1377 #
|
|
1378 sub _Generate166KeySetKey22 {
|
|
1379 my($This) = @_;
|
|
1380 my($Molecule, $KeyValue, $RingSize, $NumOfRings);
|
|
1381
|
|
1382 $RingSize = 3;
|
|
1383 $Molecule = $This->GetMolecule();
|
|
1384 $NumOfRings = $Molecule->GetNumOfRingsWithSize($RingSize);
|
|
1385
|
|
1386 if ($This->{KeyBits}) {
|
|
1387 $KeyValue = $NumOfRings ? 1 : 0;
|
|
1388 }
|
|
1389 else {
|
|
1390 $KeyValue = $NumOfRings;
|
|
1391 }
|
|
1392 return $KeyValue;
|
|
1393 }
|
|
1394
|
|
1395 # Generate key 23 value as 1/0 indicating its presence/absence or count of its
|
|
1396 # presence in a molecule.
|
|
1397 #
|
|
1398 # Key 23 description: NC(O)O
|
|
1399 #
|
|
1400 sub _Generate166KeySetKey23 {
|
|
1401 my($This) = @_;
|
|
1402 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1403
|
|
1404 $CentralAtomSymbol = 'C';
|
|
1405 @NbrAtomSymbols = ('N', 'O', 'O');
|
|
1406 @NbrBondSymbols = (undef, undef, undef);
|
|
1407
|
|
1408 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1409 }
|
|
1410
|
|
1411 # Generate key 24 value as 1/0 indicating its presence/absence or count of its
|
|
1412 # presence in a molecule.
|
|
1413 #
|
|
1414 # Key 24 description: N-O
|
|
1415 #
|
|
1416 sub _Generate166KeySetKey24 {
|
|
1417 my($This) = @_;
|
|
1418 my($BondOrder) = 1;
|
|
1419
|
|
1420 return $This->_DetectBondKeys('N', 'O', $BondOrder);
|
|
1421 }
|
|
1422
|
|
1423 # Generate key 25 value as 1/0 indicating its presence/absence or count of its
|
|
1424 # presence in a molecule.
|
|
1425 #
|
|
1426 # Key 25 description: NC(N)N
|
|
1427 #
|
|
1428 sub _Generate166KeySetKey25 {
|
|
1429 my($This) = @_;
|
|
1430 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1431
|
|
1432 $CentralAtomSymbol = 'C';
|
|
1433 @NbrAtomSymbols = ('N', 'N', 'N');
|
|
1434 @NbrBondSymbols = (undef, undef, undef);
|
|
1435
|
|
1436 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1437 }
|
|
1438
|
|
1439 # Generate key 26 value as 1/0 indicating its presence/absence or count of its
|
|
1440 # presence in a molecule.
|
|
1441 #
|
|
1442 # Key 26 description: C$=C($A)$A
|
|
1443 #
|
|
1444 sub _Generate166KeySetKey26 {
|
|
1445 my($This) = @_;
|
|
1446 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1447
|
|
1448 $CentralAtomSymbol = 'C';
|
|
1449 @NbrAtomSymbols = ('C', 'A', 'A');
|
|
1450 @NbrBondSymbols = ('$=', '$', '$');
|
|
1451
|
|
1452 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1453 }
|
|
1454
|
|
1455 # Generate key 27 value as 1/0 indicating its presence/absence or count of its
|
|
1456 # presence in a molecule.
|
|
1457 #
|
|
1458 # Key 27 description: I
|
|
1459 #
|
|
1460 sub _Generate166KeySetKey27 {
|
|
1461 my($This) = @_;
|
|
1462
|
|
1463 return $This->_DetectAtomKeys('I');
|
|
1464 }
|
|
1465
|
|
1466 # Generate key 28 value as 1/0 indicating its presence/absence or count of its
|
|
1467 # presence in a molecule.
|
|
1468 #
|
|
1469 # Key 28 description: QCH2Q
|
|
1470 #
|
|
1471 sub _Generate166KeySetKey28 {
|
|
1472 my($This) = @_;
|
|
1473 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1474
|
|
1475 $CentralAtomSymbol = 'C';
|
|
1476 @NbrAtomSymbols = ('Q', 'Q');
|
|
1477 @NbrBondSymbols = (undef, undef);
|
|
1478 $MinKeyCount = undef;
|
|
1479 $CentralAtomMinHydrogenCount = 2;
|
|
1480
|
|
1481 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
1482 }
|
|
1483
|
|
1484 # Generate key 29 value as 1/0 indicating its presence/absence or count of its
|
|
1485 # presence in a molecule.
|
|
1486 #
|
|
1487 # Key 29 description: P
|
|
1488 #
|
|
1489 sub _Generate166KeySetKey29 {
|
|
1490 my($This) = @_;
|
|
1491
|
|
1492 return $This->_DetectAtomKeys('P');
|
|
1493 }
|
|
1494
|
|
1495 # Generate key 30 value as 1/0 indicating its presence/absence or count of its
|
|
1496 # presence in a molecule.
|
|
1497 #
|
|
1498 # Key 30 description: CQ(C)(C)A
|
|
1499 #
|
|
1500 sub _Generate166KeySetKey30 {
|
|
1501 my($This) = @_;
|
|
1502 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1503
|
|
1504 $CentralAtomSymbol = 'Q';
|
|
1505 @NbrAtomSymbols = ('C', 'C', 'C', 'A');
|
|
1506 @NbrBondSymbols = (undef, undef, undef, undef);
|
|
1507
|
|
1508 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1509 }
|
|
1510
|
|
1511 # Generate key 31 value as 1/0 indicating its presence/absence or count of its
|
|
1512 # presence in a molecule.
|
|
1513 #
|
|
1514 # Key 31 description: QX
|
|
1515 #
|
|
1516 sub _Generate166KeySetKey31 {
|
|
1517 my($This) = @_;
|
|
1518
|
|
1519 return $This->_DetectBondKeys('Q', 'X');
|
|
1520 }
|
|
1521
|
|
1522 # Generate key 32 value as 1/0 indicating its presence/absence or count of its
|
|
1523 # presence in a molecule.
|
|
1524 #
|
|
1525 # Key 32 description: CSN
|
|
1526 #
|
|
1527 sub _Generate166KeySetKey32 {
|
|
1528 my($This) = @_;
|
|
1529 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1530
|
|
1531 $CentralAtomSymbol = 'S';
|
|
1532 @NbrAtomSymbols = ('C', 'N');
|
|
1533 @NbrBondSymbols = (undef, undef);
|
|
1534
|
|
1535 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1536 }
|
|
1537
|
|
1538 # Generate key 33 value as 1/0 indicating its presence/absence or count of its
|
|
1539 # presence in a molecule.
|
|
1540 #
|
|
1541 # Key 33 description: NS
|
|
1542 #
|
|
1543 sub _Generate166KeySetKey33 {
|
|
1544 my($This) = @_;
|
|
1545
|
|
1546 return $This->_DetectBondKeys('N', 'S');
|
|
1547 }
|
|
1548
|
|
1549 # Generate key 34 value as 1/0 indicating its presence/absence or count of its
|
|
1550 # presence in a molecule.
|
|
1551 #
|
|
1552 # Key 34 description: CH2=A
|
|
1553 #
|
|
1554 sub _Generate166KeySetKey34 {
|
|
1555 my($This) = @_;
|
|
1556 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1557
|
|
1558 $CentralAtomSymbol = 'C';
|
|
1559 @NbrAtomSymbols = ('A');
|
|
1560 @NbrBondSymbols = ('=');
|
|
1561 $MinKeyCount = undef;
|
|
1562 $CentralAtomMinHydrogenCount = 2;
|
|
1563
|
|
1564 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
1565 }
|
|
1566
|
|
1567 # Generate key 35 value as 1/0 indicating its presence/absence or count of its
|
|
1568 # presence in a molecule.
|
|
1569 #
|
|
1570 # Key 35 description: GROUP IA (ALKALI METAL)
|
|
1571 #
|
|
1572 sub _Generate166KeySetKey35 {
|
|
1573 my($This) = @_;
|
|
1574 my($Atom, $KeyValue, $AtomicNumber, $GroupNumber);
|
|
1575
|
|
1576 $KeyValue = 0;
|
|
1577 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
1578 $AtomicNumber = $Atom->GetAtomicNumber();
|
|
1579 if ($AtomicNumber) {
|
|
1580 $GroupNumber = PeriodicTable::GetElementGroupNumber($AtomicNumber);
|
|
1581 if ($GroupNumber =~ /^1$/) {
|
|
1582 if ($This->{KeyBits}) {
|
|
1583 $KeyValue = 1;
|
|
1584 last ATOM;
|
|
1585 }
|
|
1586 $KeyValue++;
|
|
1587 }
|
|
1588 }
|
|
1589 }
|
|
1590 return $KeyValue;
|
|
1591 }
|
|
1592
|
|
1593 # Generate key 36 value as 1/0 indicating its presence/absence or count of its
|
|
1594 # presence in a molecule.
|
|
1595 #
|
|
1596 # Key 36 description: S HETEROCYCLE
|
|
1597 #
|
|
1598 sub _Generate166KeySetKey36 {
|
|
1599 my($This) = @_;
|
|
1600 my($MinKeyCount, $IsInRing) = (1, 1);
|
|
1601
|
|
1602 return $This->_DetectAtomKeys('S', $MinKeyCount, $IsInRing);
|
|
1603 }
|
|
1604
|
|
1605 # Generate key 37 value as 1/0 indicating its presence/absence or count of its
|
|
1606 # presence in a molecule.
|
|
1607 #
|
|
1608 # Key 37 description: NC(O)N
|
|
1609 #
|
|
1610 sub _Generate166KeySetKey37 {
|
|
1611 my($This) = @_;
|
|
1612 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1613
|
|
1614 $CentralAtomSymbol = 'C';
|
|
1615 @NbrAtomSymbols = ('N', 'O', 'N');
|
|
1616 @NbrBondSymbols = (undef, undef, undef);
|
|
1617
|
|
1618 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1619 }
|
|
1620
|
|
1621 # Generate key 38 value as 1/0 indicating its presence/absence or count of its
|
|
1622 # presence in a molecule.
|
|
1623 #
|
|
1624 # Key 38 description: NC(C)N
|
|
1625 #
|
|
1626 sub _Generate166KeySetKey38 {
|
|
1627 my($This) = @_;
|
|
1628 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1629
|
|
1630 $CentralAtomSymbol = 'C';
|
|
1631 @NbrAtomSymbols = ('N', 'C', 'N');
|
|
1632 @NbrBondSymbols = (undef, undef, undef);
|
|
1633
|
|
1634 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1635 }
|
|
1636
|
|
1637 # Generate key 39 value as 1/0 indicating its presence/absence or count of its
|
|
1638 # presence in a molecule.
|
|
1639 #
|
|
1640 # Key 39 description: OS(O)O
|
|
1641 #
|
|
1642 sub _Generate166KeySetKey39 {
|
|
1643 my($This) = @_;
|
|
1644 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1645
|
|
1646 $CentralAtomSymbol = 'S';
|
|
1647 @NbrAtomSymbols = ('O', 'O', 'O');
|
|
1648 @NbrBondSymbols = (undef, undef, undef);
|
|
1649
|
|
1650 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1651 }
|
|
1652
|
|
1653 # Generate key 40 value as 1/0 indicating its presence/absence or count of its
|
|
1654 # presence in a molecule.
|
|
1655 #
|
|
1656 # Key 40 description: S-O
|
|
1657 #
|
|
1658 sub _Generate166KeySetKey40 {
|
|
1659 my($This) = @_;
|
|
1660 my($BondOrder) = 1;
|
|
1661
|
|
1662 return $This->_DetectBondKeys('S', 'O', $BondOrder);
|
|
1663 }
|
|
1664
|
|
1665 # Generate key 41 value as 1/0 indicating its presence/absence or count of its
|
|
1666 # presence in a molecule.
|
|
1667 #
|
|
1668 # Key 41 description: CTN
|
|
1669 #
|
|
1670 sub _Generate166KeySetKey41 {
|
|
1671 my($This) = @_;
|
|
1672 my($BondOrder) = 3;
|
|
1673
|
|
1674 return $This->_DetectBondKeys('C', 'N', $BondOrder);
|
|
1675 }
|
|
1676
|
|
1677 # Generate key 42 value as 1/0 indicating its presence/absence or count of its
|
|
1678 # presence in a molecule.
|
|
1679 #
|
|
1680 # Key 42 description: F
|
|
1681 #
|
|
1682 sub _Generate166KeySetKey42 {
|
|
1683 my($This) = @_;
|
|
1684
|
|
1685 return $This->_DetectAtomKeys('F');
|
|
1686 }
|
|
1687
|
|
1688 # Generate key 43 value as 1/0 indicating its presence/absence or count of its
|
|
1689 # presence in a molecule.
|
|
1690 #
|
|
1691 # Key 43 description: QHAQH
|
|
1692 #
|
|
1693 sub _Generate166KeySetKey43 {
|
|
1694 my($This) = @_;
|
|
1695 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols, @NbrAtomMinHydrogenCount);
|
|
1696
|
|
1697 $CentralAtomSymbol = 'A';
|
|
1698 $CentralAtomMinHydrogenCount = undef;
|
|
1699
|
|
1700 @NbrAtomSymbols = ('Q', 'Q');
|
|
1701 @NbrBondSymbols = (undef, undef);
|
|
1702 @NbrAtomMinHydrogenCount = (1, 1);
|
|
1703
|
|
1704 $MinKeyCount = undef;
|
|
1705
|
|
1706 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount, \@NbrAtomMinHydrogenCount);
|
|
1707 }
|
|
1708
|
|
1709 # Generate key 44 value as 1/0 indicating its presence/absence or count of its
|
|
1710 # presence in a molecule.
|
|
1711 #
|
|
1712 # Key 44 description: OTHER
|
|
1713 #
|
|
1714 sub _Generate166KeySetKey44 {
|
|
1715 my($This) = @_;
|
|
1716
|
|
1717 return $This->_DetectAtomKeys('Z');
|
|
1718 }
|
|
1719
|
|
1720 # Generate key 45 value as 1/0 indicating its presence/absence or count of its
|
|
1721 # presence in a molecule.
|
|
1722 #
|
|
1723 # Key 45 description: C=CN
|
|
1724 #
|
|
1725 sub _Generate166KeySetKey45 {
|
|
1726 my($This) = @_;
|
|
1727 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1728
|
|
1729 $CentralAtomSymbol = 'C';
|
|
1730 @NbrAtomSymbols = ('C', 'N');
|
|
1731 @NbrBondSymbols = ('=', undef);
|
|
1732
|
|
1733 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1734 }
|
|
1735
|
|
1736 # Generate key 46 value as 1/0 indicating its presence/absence or count of its
|
|
1737 # presence in a molecule.
|
|
1738 #
|
|
1739 # Key 46 description: BR
|
|
1740 #
|
|
1741 sub _Generate166KeySetKey46 {
|
|
1742 my($This) = @_;
|
|
1743
|
|
1744 return $This->_DetectAtomKeys('Br');
|
|
1745 }
|
|
1746
|
|
1747 # Generate key 47 value as 1/0 indicating its presence/absence or count of its
|
|
1748 # presence in a molecule.
|
|
1749 #
|
|
1750 # Key 47 description: SAN
|
|
1751 #
|
|
1752 sub _Generate166KeySetKey47 {
|
|
1753 my($This) = @_;
|
|
1754 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1755
|
|
1756 $CentralAtomSymbol = 'A';
|
|
1757 @NbrAtomSymbols = ('S', 'N');
|
|
1758 @NbrBondSymbols = (undef, undef);
|
|
1759
|
|
1760 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1761 }
|
|
1762
|
|
1763 # Generate key 48 value as 1/0 indicating its presence/absence or count of its
|
|
1764 # presence in a molecule.
|
|
1765 #
|
|
1766 # Key 48 description: OQ(O)O
|
|
1767 #
|
|
1768 sub _Generate166KeySetKey48 {
|
|
1769 my($This) = @_;
|
|
1770 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1771
|
|
1772 $CentralAtomSymbol = 'Q';
|
|
1773 @NbrAtomSymbols = ('O', 'O', 'O');
|
|
1774 @NbrBondSymbols = (undef, undef, undef);
|
|
1775
|
|
1776 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1777 }
|
|
1778
|
|
1779 # Generate key 49 value as 1/0 indicating its presence/absence or count of its
|
|
1780 # presence in a molecule.
|
|
1781 #
|
|
1782 # Key 49 description: CHARGE
|
|
1783 #
|
|
1784 sub _Generate166KeySetKey49 {
|
|
1785 my($This) = @_;
|
|
1786 my($Molecule, $KeyValue);
|
|
1787
|
|
1788 $Molecule = $This->GetMolecule();
|
|
1789 $KeyValue = $Molecule->GetFormalCharge() ? 1 : 0;
|
|
1790
|
|
1791 return $KeyValue;
|
|
1792 }
|
|
1793
|
|
1794 # Generate key 50 value as 1/0 indicating its presence/absence or count of its
|
|
1795 # presence in a molecule.
|
|
1796 #
|
|
1797 # Key 50 description: C=C(C)C
|
|
1798 #
|
|
1799 sub _Generate166KeySetKey50 {
|
|
1800 my($This) = @_;
|
|
1801 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1802
|
|
1803 $CentralAtomSymbol = 'C';
|
|
1804 @NbrAtomSymbols = ('C', 'C', 'C');
|
|
1805 @NbrBondSymbols = ('=', undef, undef);
|
|
1806
|
|
1807 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1808 }
|
|
1809
|
|
1810 # Generate key 51 value as 1/0 indicating its presence/absence or count of its
|
|
1811 # presence in a molecule.
|
|
1812 #
|
|
1813 # Key 51 description: CSO
|
|
1814 #
|
|
1815 sub _Generate166KeySetKey51 {
|
|
1816 my($This) = @_;
|
|
1817 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1818
|
|
1819 $CentralAtomSymbol = 'S';
|
|
1820 @NbrAtomSymbols = ('C', 'O');
|
|
1821 @NbrBondSymbols = (undef, undef);
|
|
1822
|
|
1823 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1824 }
|
|
1825
|
|
1826 # Generate key 52 value as 1/0 indicating its presence/absence or count of its
|
|
1827 # presence in a molecule.
|
|
1828 #
|
|
1829 # Key 52 description: NN
|
|
1830 #
|
|
1831 sub _Generate166KeySetKey52 {
|
|
1832 my($This) = @_;
|
|
1833
|
|
1834 return $This->_DetectBondKeys('N', 'N');
|
|
1835 }
|
|
1836
|
|
1837 # Generate key 53 value as 1/0 indicating its presence/absence or count of its
|
|
1838 # presence in a molecule.
|
|
1839 #
|
|
1840 # Key 53 description: QHAAAQH
|
|
1841 #
|
|
1842 sub _Generate166KeySetKey53 {
|
|
1843 my($This) = @_;
|
|
1844 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
1845
|
|
1846 @CentralAtomsSymbols = ('Q', 'A', 'A', 'A', 'Q');
|
|
1847 @CentralAtomsBondSymbols = (undef, undef, undef, undef);
|
|
1848 @CentralAtomsMinHydrogenCount = (1, undef, undef, undef, 1);
|
|
1849
|
|
1850 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
1851 }
|
|
1852
|
|
1853 # Generate key 54 value as 1/0 indicating its presence/absence or count of its
|
|
1854 # presence in a molecule.
|
|
1855 #
|
|
1856 # Key 54 description: QHAAQH
|
|
1857 #
|
|
1858 sub _Generate166KeySetKey54 {
|
|
1859 my($This) = @_;
|
|
1860 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
1861
|
|
1862 @CentralAtomsSymbols = ('Q', 'A', 'A', 'Q');
|
|
1863 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
1864 @CentralAtomsMinHydrogenCount = (1, undef, undef, 1);
|
|
1865
|
|
1866 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
1867 }
|
|
1868
|
|
1869 # Generate key 55 value as 1/0 indicating its presence/absence or count of its
|
|
1870 # presence in a molecule.
|
|
1871 #
|
|
1872 # Key 55 description: OSO
|
|
1873 #
|
|
1874 sub _Generate166KeySetKey55 {
|
|
1875 my($This) = @_;
|
|
1876 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1877
|
|
1878 $CentralAtomSymbol = 'S';
|
|
1879 @NbrAtomSymbols = ('O', 'O');
|
|
1880 @NbrBondSymbols = (undef, undef);
|
|
1881
|
|
1882 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1883 }
|
|
1884
|
|
1885 # Generate key 56 value as 1/0 indicating its presence/absence or count of its
|
|
1886 # presence in a molecule.
|
|
1887 #
|
|
1888 # Key 56 description: ON(O)C
|
|
1889 #
|
|
1890 sub _Generate166KeySetKey56 {
|
|
1891 my($This) = @_;
|
|
1892 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1893
|
|
1894 $CentralAtomSymbol = 'N';
|
|
1895 @NbrAtomSymbols = ('O', 'O', 'C');
|
|
1896 @NbrBondSymbols = (undef, undef, undef);
|
|
1897
|
|
1898 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1899 }
|
|
1900
|
|
1901 # Generate key 57 value as 1/0 indicating its presence/absence or count of its
|
|
1902 # presence in a molecule.
|
|
1903 #
|
|
1904 # Key 57 description: O HETEROCYCLE
|
|
1905 #
|
|
1906 sub _Generate166KeySetKey57 {
|
|
1907 my($This) = @_;
|
|
1908 my($MinKeyCount, $IsInRing) = (undef, 1);
|
|
1909
|
|
1910 return $This->_DetectAtomKeys('O', $MinKeyCount, $IsInRing);
|
|
1911 }
|
|
1912
|
|
1913 # Generate key 58 value as 1/0 indicating its presence/absence or count of its
|
|
1914 # presence in a molecule.
|
|
1915 #
|
|
1916 # Key 58 description: QSQ
|
|
1917 #
|
|
1918 sub _Generate166KeySetKey58 {
|
|
1919 my($This) = @_;
|
|
1920 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1921
|
|
1922 $CentralAtomSymbol = 'S';
|
|
1923 @NbrAtomSymbols = ('Q', 'Q');
|
|
1924 @NbrBondSymbols = (undef, undef);
|
|
1925
|
|
1926 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1927 }
|
|
1928
|
|
1929 # Generate key 59 value as 1/0 indicating its presence/absence or count of its
|
|
1930 # presence in a molecule.
|
|
1931 #
|
|
1932 # Key 59 description: Snot%A%A
|
|
1933 #
|
|
1934 sub _Generate166KeySetKey59 {
|
|
1935 my($This) = @_;
|
|
1936 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1937
|
|
1938 $CentralAtomSymbol = 'A';
|
|
1939 @NbrAtomSymbols = ('S', 'A');
|
|
1940 @NbrBondSymbols = ('not%', '%');
|
|
1941
|
|
1942 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1943 }
|
|
1944
|
|
1945 # Generate key 60 value as 1/0 indicating its presence/absence or count of its
|
|
1946 # presence in a molecule.
|
|
1947 #
|
|
1948 # Key 60 description: S=O
|
|
1949 #
|
|
1950 sub _Generate166KeySetKey60 {
|
|
1951 my($This) = @_;
|
|
1952 my($BondOrder) = 2;
|
|
1953
|
|
1954 return $This->_DetectBondKeys('S', 'O', $BondOrder);
|
|
1955 }
|
|
1956
|
|
1957 # Generate key 61 value as 1/0 indicating its presence/absence or count of its
|
|
1958 # presence in a molecule.
|
|
1959 #
|
|
1960 # Key 61 description: AS(A)A
|
|
1961 #
|
|
1962 sub _Generate166KeySetKey61 {
|
|
1963 my($This) = @_;
|
|
1964 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
1965
|
|
1966 $CentralAtomSymbol = 'S';
|
|
1967 @NbrAtomSymbols = ('A', 'A', 'A');
|
|
1968 @NbrBondSymbols = (undef, undef, undef);
|
|
1969
|
|
1970 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
1971 }
|
|
1972
|
|
1973 # Generate key 62 value as 1/0 indicating its presence/absence or count of its
|
|
1974 # presence in a molecule.
|
|
1975 #
|
|
1976 # Key 62 description: A$A!A$A
|
|
1977 #
|
|
1978 sub _Generate166KeySetKey62 {
|
|
1979 my($This) = @_;
|
|
1980 my($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, @NbrAtomsSymbols, @NbrAtomsBondSymbols);
|
|
1981
|
|
1982 ($BondAtomSymbol1, $BondAtomSymbol2) = ('A', 'A');
|
|
1983 $BondSymbol = '!';
|
|
1984
|
|
1985 @NbrAtomsSymbols = (['A'], ['A']);
|
|
1986 @NbrAtomsBondSymbols = (['$'], ['$']);
|
|
1987 return $This->_DetectBondNeighborhoodKeys($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, \@NbrAtomsSymbols, \@NbrAtomsBondSymbols);
|
|
1988 }
|
|
1989
|
|
1990 # Generate key 63 value as 1/0 indicating its presence/absence or count of its
|
|
1991 # presence in a molecule.
|
|
1992 #
|
|
1993 # Key 63 description: N=O
|
|
1994 #
|
|
1995 sub _Generate166KeySetKey63 {
|
|
1996 my($This) = @_;
|
|
1997 my($BondOrder) = 2;
|
|
1998
|
|
1999 return $This->_DetectBondKeys('N', 'O', $BondOrder);
|
|
2000 }
|
|
2001
|
|
2002 # Generate key 64 value as 1/0 indicating its presence/absence or count of its
|
|
2003 # presence in a molecule.
|
|
2004 #
|
|
2005 # Key 64 description: A$A!S
|
|
2006 #
|
|
2007 sub _Generate166KeySetKey64 {
|
|
2008 my($This) = @_;
|
|
2009 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2010
|
|
2011 $CentralAtomSymbol = 'A';
|
|
2012 @NbrAtomSymbols = ('A', 'S');
|
|
2013 @NbrBondSymbols = ('$', '!');
|
|
2014
|
|
2015 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2016 }
|
|
2017
|
|
2018 # Generate key 65 value as 1/0 indicating its presence/absence or count of its
|
|
2019 # presence in a molecule.
|
|
2020 #
|
|
2021 # Key 65 description: C%N
|
|
2022 #
|
|
2023 sub _Generate166KeySetKey65 {
|
|
2024 my($This) = @_;
|
|
2025 my($BondSymbol) = '%';
|
|
2026
|
|
2027 return $This->_DetectBondKeys('C', 'N', $BondSymbol);
|
|
2028 }
|
|
2029
|
|
2030 # Generate key 66 value as 1/0 indicating its presence/absence or count of its
|
|
2031 # presence in a molecule.
|
|
2032 #
|
|
2033 # Key 66 description: CC(C)(C)A
|
|
2034 #
|
|
2035 sub _Generate166KeySetKey66 {
|
|
2036 my($This) = @_;
|
|
2037 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2038
|
|
2039 $CentralAtomSymbol = 'C';
|
|
2040 @NbrAtomSymbols = ('C', 'C', 'C', 'A');
|
|
2041 @NbrBondSymbols = (undef, undef, undef, undef);
|
|
2042
|
|
2043 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2044 }
|
|
2045
|
|
2046 # Generate key 67 value as 1/0 indicating its presence/absence or count of its
|
|
2047 # presence in a molecule.
|
|
2048 #
|
|
2049 # Key 67 description: QS
|
|
2050 #
|
|
2051 sub _Generate166KeySetKey67 {
|
|
2052 my($This) = @_;
|
|
2053
|
|
2054 return $This->_DetectBondKeys('Q', 'S');
|
|
2055 }
|
|
2056
|
|
2057 # Generate key 68 value as 1/0 indicating its presence/absence or count of its
|
|
2058 # presence in a molecule.
|
|
2059 #
|
|
2060 # Key 68 description: QHQH (&...)
|
|
2061 #
|
|
2062 sub _Generate166KeySetKey68 {
|
|
2063 my($This) = @_;
|
|
2064 my($AtomSymbol1, $AtomSymbol2, $BondSymbol) = ('Q', 'Q', undef);
|
|
2065 my($MinKeyCount) = undef;
|
|
2066 my($Atom1MinHydrogenCount, $Atom2MinHydrogenCount) = (1, 1);
|
|
2067
|
|
2068 return $This->_DetectBondKeys($AtomSymbol1, $AtomSymbol2, $BondSymbol, $MinKeyCount, $Atom1MinHydrogenCount, $Atom2MinHydrogenCount);
|
|
2069 }
|
|
2070
|
|
2071 # Generate key 69 value as 1/0 indicating its presence/absence or count of its
|
|
2072 # presence in a molecule.
|
|
2073 #
|
|
2074 # Key 69 description: QQH
|
|
2075 #
|
|
2076 sub _Generate166KeySetKey69 {
|
|
2077 my($This) = @_;
|
|
2078 my($AtomSymbol1, $AtomSymbol2, $BondSymbol) = ('Q', 'Q', undef);
|
|
2079 my($MinKeyCount) = undef;
|
|
2080 my($Atom1MinHydrogenCount, $Atom2MinHydrogenCount) = (undef, 1);
|
|
2081
|
|
2082 return $This->_DetectBondKeys($AtomSymbol1, $AtomSymbol2, $BondSymbol, $MinKeyCount, $Atom1MinHydrogenCount, $Atom2MinHydrogenCount);
|
|
2083 }
|
|
2084
|
|
2085 # Generate key 70 value as 1/0 indicating its presence/absence or count of its
|
|
2086 # presence in a molecule.
|
|
2087 #
|
|
2088 # Key 70 description: QNQ
|
|
2089 #
|
|
2090 sub _Generate166KeySetKey70 {
|
|
2091 my($This) = @_;
|
|
2092 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2093
|
|
2094 $CentralAtomSymbol = 'N';
|
|
2095 @NbrAtomSymbols = ('Q', 'Q');
|
|
2096 @NbrBondSymbols = (undef, undef);
|
|
2097
|
|
2098 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2099 }
|
|
2100
|
|
2101 # Generate key 71 value as 1/0 indicating its presence/absence or count of its
|
|
2102 # presence in a molecule.
|
|
2103 #
|
|
2104 # Key 71 description: NO
|
|
2105 #
|
|
2106 sub _Generate166KeySetKey71 {
|
|
2107 my($This) = @_;
|
|
2108
|
|
2109 return $This->_DetectBondKeys('N', 'O');
|
|
2110 }
|
|
2111
|
|
2112 # Generate key 72 value as 1/0 indicating its presence/absence or count of its
|
|
2113 # presence in a molecule.
|
|
2114 #
|
|
2115 # Key 72 description: OAAO
|
|
2116 #
|
|
2117 sub _Generate166KeySetKey72 {
|
|
2118 my($This) = @_;
|
|
2119 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols);
|
|
2120
|
|
2121 @CentralAtomsSymbols = ('O', 'A', 'A', 'O');
|
|
2122 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
2123
|
|
2124 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols);
|
|
2125 }
|
|
2126
|
|
2127 # Generate key 73 value as 1/0 indicating its presence/absence or count of its
|
|
2128 # presence in a molecule.
|
|
2129 #
|
|
2130 # Key 73 description: S=A
|
|
2131 #
|
|
2132 sub _Generate166KeySetKey73 {
|
|
2133 my($This) = @_;
|
|
2134 my($BondOrder) = 2;
|
|
2135
|
|
2136 return $This->_DetectBondKeys('S', 'A', $BondOrder);
|
|
2137 }
|
|
2138
|
|
2139 # Generate key 74 value as 1/0 indicating its presence/absence or count of its
|
|
2140 # presence in a molecule.
|
|
2141 #
|
|
2142 # Key 74 description: CH3ACH3
|
|
2143 #
|
|
2144 sub _Generate166KeySetKey74 {
|
|
2145 my($This) = @_;
|
|
2146 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols, @NbrAtomMinHydrogenCount);
|
|
2147
|
|
2148 $CentralAtomSymbol = 'A';
|
|
2149 $CentralAtomMinHydrogenCount = undef;
|
|
2150
|
|
2151 @NbrAtomSymbols = ('C', 'C');
|
|
2152 @NbrBondSymbols = (undef, undef);
|
|
2153 @NbrAtomMinHydrogenCount = (3, 3);
|
|
2154
|
|
2155 $MinKeyCount = undef;
|
|
2156
|
|
2157 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount, \@NbrAtomMinHydrogenCount);
|
|
2158 }
|
|
2159
|
|
2160 # Generate key 75 value as 1/0 indicating its presence/absence or count of its
|
|
2161 # presence in a molecule.
|
|
2162 #
|
|
2163 # Key 75 description: A!N$A
|
|
2164 #
|
|
2165 sub _Generate166KeySetKey75 {
|
|
2166 my($This) = @_;
|
|
2167 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2168
|
|
2169 $CentralAtomSymbol = 'N';
|
|
2170 @NbrAtomSymbols = ('A', 'A');
|
|
2171 @NbrBondSymbols = ('!', '$');
|
|
2172
|
|
2173 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2174 }
|
|
2175
|
|
2176 # Generate key 76 value as 1/0 indicating its presence/absence or count of its
|
|
2177 # presence in a molecule.
|
|
2178 #
|
|
2179 # Key 76 description: C=C(A)A
|
|
2180 #
|
|
2181 sub _Generate166KeySetKey76 {
|
|
2182 my($This) = @_;
|
|
2183 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2184
|
|
2185 $CentralAtomSymbol = 'C';
|
|
2186 @NbrAtomSymbols = ('C', 'A', 'A');
|
|
2187 @NbrBondSymbols = ('=', undef, undef);
|
|
2188
|
|
2189 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2190 }
|
|
2191
|
|
2192 # Generate key 77 value as 1/0 indicating its presence/absence or count of its
|
|
2193 # presence in a molecule.
|
|
2194 #
|
|
2195 # Key 77 description: NAN
|
|
2196 #
|
|
2197 sub _Generate166KeySetKey77 {
|
|
2198 my($This) = @_;
|
|
2199 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2200
|
|
2201 $CentralAtomSymbol = 'A';
|
|
2202 @NbrAtomSymbols = ('N', 'N');
|
|
2203 @NbrBondSymbols = (undef, undef);
|
|
2204
|
|
2205 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2206 }
|
|
2207
|
|
2208 # Generate key 78 value as 1/0 indicating its presence/absence or count of its
|
|
2209 # presence in a molecule.
|
|
2210 #
|
|
2211 # Key 78 description: C=N
|
|
2212 #
|
|
2213 sub _Generate166KeySetKey78 {
|
|
2214 my($This) = @_;
|
|
2215 my($BondOrder) = 2;
|
|
2216
|
|
2217 return $This->_DetectBondKeys('C', 'N', $BondOrder);
|
|
2218 }
|
|
2219
|
|
2220 # Generate key 79 value as 1/0 indicating its presence/absence or count of its
|
|
2221 # presence in a molecule.
|
|
2222 #
|
|
2223 # Key 79 description: NAAN
|
|
2224 #
|
|
2225 sub _Generate166KeySetKey79 {
|
|
2226 my($This) = @_;
|
|
2227 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols);
|
|
2228
|
|
2229 @CentralAtomsSymbols = ('N', 'A', 'A', 'N');
|
|
2230 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
2231
|
|
2232 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols);
|
|
2233 }
|
|
2234
|
|
2235 # Generate key 80 value as 1/0 indicating its presence/absence or count of its
|
|
2236 # presence in a molecule.
|
|
2237 #
|
|
2238 # Key 80 description: NAAAN
|
|
2239 #
|
|
2240 sub _Generate166KeySetKey80 {
|
|
2241 my($This) = @_;
|
|
2242 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols);
|
|
2243
|
|
2244 @CentralAtomsSymbols = ('N', 'A', 'A', 'A', 'N');
|
|
2245 @CentralAtomsBondSymbols = (undef, undef, undef, undef);
|
|
2246
|
|
2247 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols);
|
|
2248 }
|
|
2249
|
|
2250 # Generate key 81 value as 1/0 indicating its presence/absence or count of its
|
|
2251 # presence in a molecule.
|
|
2252 #
|
|
2253 # Key 81 description: SA(A)A
|
|
2254 #
|
|
2255 sub _Generate166KeySetKey81 {
|
|
2256 my($This) = @_;
|
|
2257 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2258
|
|
2259 $CentralAtomSymbol = 'A';
|
|
2260 @NbrAtomSymbols = ('S', 'A', 'A');
|
|
2261 @NbrBondSymbols = (undef, undef, undef);
|
|
2262
|
|
2263 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2264 }
|
|
2265
|
|
2266 # Generate key 82 value as 1/0 indicating its presence/absence or count of its
|
|
2267 # presence in a molecule.
|
|
2268 #
|
|
2269 # Key 82 description: ACH2QH
|
|
2270 #
|
|
2271 sub _Generate166KeySetKey82 {
|
|
2272 my($This) = @_;
|
|
2273 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols, @NbrAtomMinHydrogenCount);
|
|
2274
|
|
2275 $CentralAtomSymbol = 'C';
|
|
2276 $CentralAtomMinHydrogenCount = 2;
|
|
2277
|
|
2278 @NbrAtomSymbols = ('A', 'Q');
|
|
2279 @NbrBondSymbols = (undef, undef);
|
|
2280 @NbrAtomMinHydrogenCount = (undef, 1);
|
|
2281
|
|
2282 $MinKeyCount = undef;
|
|
2283
|
|
2284 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount, \@NbrAtomMinHydrogenCount);
|
|
2285 }
|
|
2286
|
|
2287 # Generate key 83 value as 1/0 indicating its presence/absence or count of its
|
|
2288 # presence in a molecule.
|
|
2289 #
|
|
2290 # Key 83 description: QAAAA@1
|
|
2291 #
|
|
2292 sub _Generate166KeySetKey83 {
|
|
2293 my($This) = @_;
|
|
2294 my($Atom, $KeyValue, $RingSize);
|
|
2295
|
|
2296 $RingSize = 5;
|
|
2297 $KeyValue = 0;
|
|
2298 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
2299 if ($This->_IsHeteroAtom($Atom) && $Atom->IsInRingOfSize($RingSize)) {
|
|
2300 if ($This->{KeyBits}) {
|
|
2301 $KeyValue = 1;
|
|
2302 last ATOM;
|
|
2303 }
|
|
2304 $KeyValue++;
|
|
2305 }
|
|
2306 }
|
|
2307 return $KeyValue;
|
|
2308 }
|
|
2309
|
|
2310 # Generate key 84 value as 1/0 indicating its presence/absence or count of its
|
|
2311 # presence in a molecule.
|
|
2312 #
|
|
2313 # Key 84 description: NH2
|
|
2314 #
|
|
2315 sub _Generate166KeySetKey84 {
|
|
2316 my($This) = @_;
|
|
2317 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (undef, undef, 2);
|
|
2318
|
|
2319 return $This->_DetectAtomKeys('N', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
2320 }
|
|
2321
|
|
2322 # Generate key 85 value as 1/0 indicating its presence/absence or count of its
|
|
2323 # presence in a molecule.
|
|
2324 #
|
|
2325 # Key 85 description: CN(C)C
|
|
2326 #
|
|
2327 sub _Generate166KeySetKey85 {
|
|
2328 my($This) = @_;
|
|
2329 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2330
|
|
2331 $CentralAtomSymbol = 'N';
|
|
2332 @NbrAtomSymbols = ('C', 'C', 'C');
|
|
2333 @NbrBondSymbols = (undef, undef, undef);
|
|
2334
|
|
2335 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2336 }
|
|
2337
|
|
2338 # Generate key 86 value as 1/0 indicating its presence/absence or count of its
|
|
2339 # presence in a molecule.
|
|
2340 #
|
|
2341 # Key 86 description: CH2QCH2
|
|
2342 #
|
|
2343 sub _Generate166KeySetKey86 {
|
|
2344 my($This) = @_;
|
|
2345 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols, @NbrAtomMinHydrogenCount);
|
|
2346
|
|
2347 $CentralAtomSymbol = 'Q';
|
|
2348 $CentralAtomMinHydrogenCount = undef;
|
|
2349
|
|
2350 @NbrAtomSymbols = ('C', 'C');
|
|
2351 @NbrBondSymbols = (undef, undef);
|
|
2352 @NbrAtomMinHydrogenCount = (2, 2);
|
|
2353
|
|
2354 $MinKeyCount = undef;
|
|
2355
|
|
2356 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount, \@NbrAtomMinHydrogenCount);
|
|
2357 }
|
|
2358
|
|
2359 # Generate key 87 value as 1/0 indicating its presence/absence or count of its
|
|
2360 # presence in a molecule.
|
|
2361 #
|
|
2362 # Key 87 description: X!A$A
|
|
2363 #
|
|
2364 sub _Generate166KeySetKey87 {
|
|
2365 my($This) = @_;
|
|
2366 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2367
|
|
2368 $CentralAtomSymbol = 'A';
|
|
2369 @NbrAtomSymbols = ('X', 'A');
|
|
2370 @NbrBondSymbols = ('!', '$');
|
|
2371
|
|
2372 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2373 }
|
|
2374
|
|
2375 # Generate key 88 value as 1/0 indicating its presence/absence or count of its
|
|
2376 # presence in a molecule.
|
|
2377 #
|
|
2378 # Key 88 description: S
|
|
2379 #
|
|
2380 sub _Generate166KeySetKey88 {
|
|
2381 my($This) = @_;
|
|
2382
|
|
2383 return $This->_DetectAtomKeys('S');
|
|
2384 }
|
|
2385
|
|
2386 # Generate key 89 value as 1/0 indicating its presence/absence or count of its
|
|
2387 # presence in a molecule.
|
|
2388 #
|
|
2389 # Key 89 description: OAAAO
|
|
2390 #
|
|
2391 sub _Generate166KeySetKey89 {
|
|
2392 my($This) = @_;
|
|
2393 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols);
|
|
2394
|
|
2395 @CentralAtomsSymbols = ('O', 'A', 'A', 'A', 'O');
|
|
2396 @CentralAtomsBondSymbols = (undef, undef, undef, undef);
|
|
2397
|
|
2398 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols);
|
|
2399 }
|
|
2400
|
|
2401 # Generate key 90 value as 1/0 indicating its presence/absence or count of its
|
|
2402 # presence in a molecule.
|
|
2403 #
|
|
2404 # Key 90 description: QHAACH2A
|
|
2405 #
|
|
2406 sub _Generate166KeySetKey90 {
|
|
2407 my($This) = @_;
|
|
2408 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2409
|
|
2410 @CentralAtomsSymbols = ('Q', 'A', 'A', 'C', 'A');
|
|
2411 @CentralAtomsBondSymbols = (undef, undef, undef, undef);
|
|
2412 @CentralAtomsMinHydrogenCount = (1, undef, undef, 2, undef);
|
|
2413
|
|
2414 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
2415 }
|
|
2416
|
|
2417 # Generate key 91 value as 1/0 indicating its presence/absence or count of its
|
|
2418 # presence in a molecule.
|
|
2419 #
|
|
2420 # Key 91 description: QHAAACH2A
|
|
2421 #
|
|
2422 sub _Generate166KeySetKey91 {
|
|
2423 my($This) = @_;
|
|
2424 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2425
|
|
2426 @CentralAtomsSymbols = ('Q', 'A', 'A', 'A', 'C', 'A');
|
|
2427 @CentralAtomsBondSymbols = (undef, undef, undef, undef, undef);
|
|
2428 @CentralAtomsMinHydrogenCount = (1, undef, undef, undef, 2, undef);
|
|
2429
|
|
2430 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
2431 }
|
|
2432
|
|
2433 # Generate key 92 value as 1/0 indicating its presence/absence or count of its
|
|
2434 # presence in a molecule.
|
|
2435 #
|
|
2436 # Key 92 description: OC(N)C
|
|
2437 #
|
|
2438 sub _Generate166KeySetKey92 {
|
|
2439 my($This) = @_;
|
|
2440 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2441
|
|
2442 $CentralAtomSymbol = 'C';
|
|
2443 @NbrAtomSymbols = ('O', 'N', 'C');
|
|
2444 @NbrBondSymbols = (undef, undef, undef);
|
|
2445
|
|
2446 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2447 }
|
|
2448
|
|
2449 # Generate key 93 value as 1/0 indicating its presence/absence or count of its
|
|
2450 # presence in a molecule.
|
|
2451 #
|
|
2452 # Key 93 description: QCH3
|
|
2453 #
|
|
2454 sub _Generate166KeySetKey93 {
|
|
2455 my($This) = @_;
|
|
2456 my($AtomSymbol1, $AtomSymbol2, $BondSymbol) = ('Q', 'C', undef);
|
|
2457 my($MinKeyCount) = undef;
|
|
2458 my($Atom1MinHydrogenCount, $Atom2MinHydrogenCount) = (undef, 3);
|
|
2459
|
|
2460 return $This->_DetectBondKeys($AtomSymbol1, $AtomSymbol2, $BondSymbol, $MinKeyCount, $Atom1MinHydrogenCount, $Atom2MinHydrogenCount);
|
|
2461 }
|
|
2462
|
|
2463 # Generate key 94 value as 1/0 indicating its presence/absence or count of its
|
|
2464 # presence in a molecule.
|
|
2465 #
|
|
2466 # Key 94 description: QN
|
|
2467 #
|
|
2468 sub _Generate166KeySetKey94 {
|
|
2469 my($This) = @_;
|
|
2470
|
|
2471 return $This->_DetectBondKeys('Q', 'N');
|
|
2472 }
|
|
2473
|
|
2474 # Generate key 95 value as 1/0 indicating its presence/absence or count of its
|
|
2475 # presence in a molecule.
|
|
2476 #
|
|
2477 # Key 95 description: NAAO
|
|
2478 #
|
|
2479 sub _Generate166KeySetKey95 {
|
|
2480 my($This) = @_;
|
|
2481 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols);
|
|
2482
|
|
2483 @CentralAtomsSymbols = ('N', 'A', 'A', 'O');
|
|
2484 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
2485
|
|
2486 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols);
|
|
2487 }
|
|
2488
|
|
2489 # Generate key 96 value as 1/0 indicating its presence/absence or count of its
|
|
2490 # presence in a molecule.
|
|
2491 #
|
|
2492 # Key 96 description: 5M RING
|
|
2493 #
|
|
2494 sub _Generate166KeySetKey96 {
|
|
2495 my($This) = @_;
|
|
2496 my($Molecule, $KeyValue, $RingSize, $NumOfRings);
|
|
2497
|
|
2498 $RingSize = 5;
|
|
2499 $Molecule = $This->GetMolecule();
|
|
2500 $NumOfRings = $Molecule->GetNumOfRingsWithSize($RingSize);
|
|
2501
|
|
2502 if ($This->{KeyBits}) {
|
|
2503 $KeyValue = $NumOfRings ? 1 : 0;
|
|
2504 }
|
|
2505 else {
|
|
2506 $KeyValue = $NumOfRings;
|
|
2507 }
|
|
2508 return $KeyValue;
|
|
2509 }
|
|
2510
|
|
2511 # Generate key 97 value as 1/0 indicating its presence/absence or count of its
|
|
2512 # presence in a molecule.
|
|
2513 #
|
|
2514 # Key 97 description: NAAAO
|
|
2515 #
|
|
2516 sub _Generate166KeySetKey97 {
|
|
2517 my($This) = @_;
|
|
2518 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols);
|
|
2519
|
|
2520 @CentralAtomsSymbols = ('N', 'A', 'A', 'A', 'O');
|
|
2521 @CentralAtomsBondSymbols = (undef, undef, undef, undef);
|
|
2522
|
|
2523 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols);
|
|
2524 }
|
|
2525
|
|
2526 # Generate key 98 value as 1/0 indicating its presence/absence or count of its
|
|
2527 # presence in a molecule.
|
|
2528 #
|
|
2529 # Key 98 description: QAAAAA@1
|
|
2530 #
|
|
2531 sub _Generate166KeySetKey98 {
|
|
2532 my($This) = @_;
|
|
2533 my($Atom, $KeyValue, $RingSize);
|
|
2534
|
|
2535 $RingSize = 6;
|
|
2536 $KeyValue = 0;
|
|
2537 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
2538 if ($This->_IsHeteroAtom($Atom) && $Atom->IsInRingOfSize($RingSize)) {
|
|
2539 if ($This->{KeyBits}) {
|
|
2540 $KeyValue = 1;
|
|
2541 last ATOM;
|
|
2542 }
|
|
2543 $KeyValue++;
|
|
2544 }
|
|
2545 }
|
|
2546 return $KeyValue;
|
|
2547 }
|
|
2548
|
|
2549 # Generate key 99 value as 1/0 indicating its presence/absence or count of its
|
|
2550 # presence in a molecule.
|
|
2551 #
|
|
2552 # Key 99 description: C=C
|
|
2553 #
|
|
2554 sub _Generate166KeySetKey99 {
|
|
2555 my($This) = @_;
|
|
2556 my($BondOrder) = 2;
|
|
2557
|
|
2558 return $This->_DetectBondKeys('C', 'C', $BondOrder);
|
|
2559 }
|
|
2560
|
|
2561 # Generate key 100 value as 1/0 indicating its presence/absence or count of its
|
|
2562 # presence in a molecule.
|
|
2563 #
|
|
2564 # Key 100 description: ACH2N
|
|
2565 #
|
|
2566 sub _Generate166KeySetKey100 {
|
|
2567 my($This) = @_;
|
|
2568 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2569
|
|
2570 $CentralAtomSymbol = 'C';
|
|
2571 $CentralAtomMinHydrogenCount = 2;
|
|
2572
|
|
2573 @NbrAtomSymbols = ('A', 'N');
|
|
2574 @NbrBondSymbols = (undef, undef);
|
|
2575
|
|
2576 $MinKeyCount = undef;
|
|
2577
|
|
2578 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
2579 }
|
|
2580
|
|
2581 # Generate key 101 value as 1/0 indicating its presence/absence or count of its
|
|
2582 # presence in a molecule.
|
|
2583 #
|
|
2584 # Key 101 description: 8M RING
|
|
2585 #
|
|
2586 sub _Generate166KeySetKey101 {
|
|
2587 my($This) = @_;
|
|
2588 my($Molecule, $KeyValue, $RingSize, $NumOfRings);
|
|
2589
|
|
2590 $RingSize = 8;
|
|
2591 $Molecule = $This->GetMolecule();
|
|
2592 $NumOfRings = $Molecule->GetNumOfRingsWithSize($RingSize);
|
|
2593
|
|
2594 if ($This->{KeyBits}) {
|
|
2595 $KeyValue = $NumOfRings ? 1 : 0;
|
|
2596 }
|
|
2597 else {
|
|
2598 $KeyValue = $NumOfRings;
|
|
2599 }
|
|
2600 return $KeyValue;
|
|
2601 }
|
|
2602
|
|
2603 # Generate key 102 value as 1/0 indicating its presence/absence or count of its
|
|
2604 # presence in a molecule.
|
|
2605 #
|
|
2606 # Key 102 description: QO
|
|
2607 #
|
|
2608 sub _Generate166KeySetKey102 {
|
|
2609 my($This) = @_;
|
|
2610
|
|
2611 return $This->_DetectBondKeys('Q', 'O');
|
|
2612 }
|
|
2613
|
|
2614 # Generate key 103 value as 1/0 indicating its presence/absence or count of its
|
|
2615 # presence in a molecule.
|
|
2616 #
|
|
2617 # Key 103 description: CL
|
|
2618 #
|
|
2619 sub _Generate166KeySetKey103 {
|
|
2620 my($This) = @_;
|
|
2621
|
|
2622 return $This->_DetectAtomKeys('Cl');
|
|
2623 }
|
|
2624
|
|
2625 # Generate key 104 value as 1/0 indicating its presence/absence or count of its
|
|
2626 # presence in a molecule.
|
|
2627 #
|
|
2628 # Key 104 description: QHACH2A
|
|
2629 #
|
|
2630 sub _Generate166KeySetKey104 {
|
|
2631 my($This) = @_;
|
|
2632 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2633
|
|
2634 @CentralAtomsSymbols = ('Q', 'A', 'C', 'A');
|
|
2635 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
2636 @CentralAtomsMinHydrogenCount = (1, undef, 2, undef);
|
|
2637
|
|
2638 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
2639 }
|
|
2640
|
|
2641 # Generate key 105 value as 1/0 indicating its presence/absence or count of its
|
|
2642 # presence in a molecule.
|
|
2643 #
|
|
2644 # Key 105 description: A$A($A)$A
|
|
2645 #
|
|
2646 sub _Generate166KeySetKey105 {
|
|
2647 my($This) = @_;
|
|
2648 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2649
|
|
2650 $CentralAtomSymbol = 'A';
|
|
2651 @NbrAtomSymbols = ('A', 'A', 'A');
|
|
2652 @NbrBondSymbols = ('$', '$', '$');
|
|
2653
|
|
2654 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2655 }
|
|
2656
|
|
2657 # Generate key 106 value as 1/0 indicating its presence/absence or count of its
|
|
2658 # presence in a molecule.
|
|
2659 #
|
|
2660 # Key 106 description: QA(Q)Q
|
|
2661 #
|
|
2662 sub _Generate166KeySetKey106 {
|
|
2663 my($This) = @_;
|
|
2664 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2665
|
|
2666 $CentralAtomSymbol = 'A';
|
|
2667 @NbrAtomSymbols = ('Q', 'Q', 'Q');
|
|
2668 @NbrBondSymbols = (undef, undef, undef);
|
|
2669
|
|
2670 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2671 }
|
|
2672
|
|
2673 # Generate key 107 value as 1/0 indicating its presence/absence or count of its
|
|
2674 # presence in a molecule.
|
|
2675 #
|
|
2676 # Key 107 description: XA(A)A
|
|
2677 #
|
|
2678 sub _Generate166KeySetKey107 {
|
|
2679 my($This) = @_;
|
|
2680 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2681
|
|
2682 $CentralAtomSymbol = 'A';
|
|
2683 @NbrAtomSymbols = ('X', 'A', 'A');
|
|
2684 @NbrBondSymbols = (undef, undef, undef);
|
|
2685
|
|
2686 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2687 }
|
|
2688
|
|
2689 # Generate key 108 value as 1/0 indicating its presence/absence or count of its
|
|
2690 # presence in a molecule.
|
|
2691 #
|
|
2692 # Key 108 description: CH3AAACH2A
|
|
2693 #
|
|
2694 sub _Generate166KeySetKey108 {
|
|
2695 my($This) = @_;
|
|
2696 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2697
|
|
2698 @CentralAtomsSymbols = ('C', 'A', 'A', 'A', 'C', 'A');
|
|
2699 @CentralAtomsBondSymbols = (undef, undef, undef, undef, undef);
|
|
2700 @CentralAtomsMinHydrogenCount = (3, undef, undef, undef, 1, undef);
|
|
2701
|
|
2702 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
2703 }
|
|
2704
|
|
2705 # Generate key 109 value as 1/0 indicating its presence/absence or count of its
|
|
2706 # presence in a molecule.
|
|
2707 #
|
|
2708 # Key 109 description: ACH2O
|
|
2709 #
|
|
2710 sub _Generate166KeySetKey109 {
|
|
2711 my($This) = @_;
|
|
2712 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2713
|
|
2714 $CentralAtomSymbol = 'C';
|
|
2715 $CentralAtomMinHydrogenCount = 2;
|
|
2716
|
|
2717 @NbrAtomSymbols = ('A', 'O');
|
|
2718 @NbrBondSymbols = (undef, undef);
|
|
2719
|
|
2720 $MinKeyCount = undef;
|
|
2721
|
|
2722 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
2723 }
|
|
2724
|
|
2725 # Generate key 110 value as 1/0 indicating its presence/absence or count of its
|
|
2726 # presence in a molecule.
|
|
2727 #
|
|
2728 # Key 110 description: NCO
|
|
2729 #
|
|
2730 sub _Generate166KeySetKey110 {
|
|
2731 my($This) = @_;
|
|
2732 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2733
|
|
2734 $CentralAtomSymbol = 'C';
|
|
2735 @NbrAtomSymbols = ('N', 'O');
|
|
2736 @NbrBondSymbols = (undef, undef);
|
|
2737
|
|
2738 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2739 }
|
|
2740
|
|
2741 # Generate key 111 value as 1/0 indicating its presence/absence or count of its
|
|
2742 # presence in a molecule.
|
|
2743 #
|
|
2744 # Key 111 description: NACH2A
|
|
2745 #
|
|
2746 sub _Generate166KeySetKey111 {
|
|
2747 my($This) = @_;
|
|
2748 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2749
|
|
2750 @CentralAtomsSymbols = ('N', 'A', 'C', 'A');
|
|
2751 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
2752 @CentralAtomsMinHydrogenCount = (undef, undef, 2, undef);
|
|
2753
|
|
2754 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
2755 }
|
|
2756
|
|
2757 # Generate key 112 value as 1/0 indicating its presence/absence or count of its
|
|
2758 # presence in a molecule.
|
|
2759 #
|
|
2760 # Key 112 description: AA(A)(A)A
|
|
2761 #
|
|
2762 sub _Generate166KeySetKey112 {
|
|
2763 my($This) = @_;
|
|
2764 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2765
|
|
2766 $CentralAtomSymbol = 'A';
|
|
2767 @NbrAtomSymbols = ('A', 'A', 'A', 'A');
|
|
2768 @NbrBondSymbols = (undef, undef, undef, undef);
|
|
2769
|
|
2770 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2771 }
|
|
2772
|
|
2773 # Generate key 113 value as 1/0 indicating its presence/absence or count of its
|
|
2774 # presence in a molecule.
|
|
2775 #
|
|
2776 # Key 113 description: Onot%A%A
|
|
2777 #
|
|
2778 sub _Generate166KeySetKey113 {
|
|
2779 my($This) = @_;
|
|
2780 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2781
|
|
2782 $CentralAtomSymbol = 'A';
|
|
2783 @NbrAtomSymbols = ('O', 'A');
|
|
2784 @NbrBondSymbols = ('not%', '%');
|
|
2785
|
|
2786 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2787 }
|
|
2788
|
|
2789 # Generate key 114 value as 1/0 indicating its presence/absence or count of its
|
|
2790 # presence in a molecule.
|
|
2791 #
|
|
2792 # Key 114 description: CH3CH2A
|
|
2793 #
|
|
2794 sub _Generate166KeySetKey114 {
|
|
2795 my($This) = @_;
|
|
2796 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols, @NbrAtomMinHydrogenCount);
|
|
2797
|
|
2798 $CentralAtomSymbol = 'C';
|
|
2799 $CentralAtomMinHydrogenCount = 2;
|
|
2800
|
|
2801 @NbrAtomSymbols = ('C', 'A');
|
|
2802 @NbrBondSymbols = (undef, undef);
|
|
2803 @NbrAtomMinHydrogenCount = (3, undef);
|
|
2804
|
|
2805 $MinKeyCount = undef;
|
|
2806
|
|
2807 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount, \@NbrAtomMinHydrogenCount);
|
|
2808 }
|
|
2809
|
|
2810 # Generate key 115 value as 1/0 indicating its presence/absence or count of its
|
|
2811 # presence in a molecule.
|
|
2812 #
|
|
2813 # Key 115 description: CH3ACH2A
|
|
2814 #
|
|
2815 sub _Generate166KeySetKey115 {
|
|
2816 my($This) = @_;
|
|
2817 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2818
|
|
2819 @CentralAtomsSymbols = ('C', 'A', 'C', 'A');
|
|
2820 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
2821 @CentralAtomsMinHydrogenCount = (3, undef, 2, undef);
|
|
2822
|
|
2823 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
2824 }
|
|
2825
|
|
2826 # Generate key 116 value as 1/0 indicating its presence/absence or count of its
|
|
2827 # presence in a molecule.
|
|
2828 #
|
|
2829 # Key 116 description: CH3AACH2A
|
|
2830 #
|
|
2831 sub _Generate166KeySetKey116 {
|
|
2832 my($This) = @_;
|
|
2833 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2834
|
|
2835 @CentralAtomsSymbols = ('C', 'A', 'A', 'C', 'A');
|
|
2836 @CentralAtomsBondSymbols = (undef, undef, undef, undef);
|
|
2837 @CentralAtomsMinHydrogenCount = (3, undef, undef, 2, undef);
|
|
2838
|
|
2839 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
2840 }
|
|
2841
|
|
2842 # Generate key 117 value as 1/0 indicating its presence/absence or count of its
|
|
2843 # presence in a molecule.
|
|
2844 #
|
|
2845 # Key 117 description: NAO
|
|
2846 #
|
|
2847 sub _Generate166KeySetKey117 {
|
|
2848 my($This) = @_;
|
|
2849 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2850
|
|
2851 $CentralAtomSymbol = 'A';
|
|
2852 @NbrAtomSymbols = ('N', 'O');
|
|
2853 @NbrBondSymbols = (undef, undef);
|
|
2854
|
|
2855 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2856 }
|
|
2857
|
|
2858 # Generate key 118 value as 1/0 indicating its presence/absence or count of its
|
|
2859 # presence in a molecule.
|
|
2860 #
|
|
2861 # Key 118 description: ACH2CH2A > 1
|
|
2862 #
|
|
2863 sub _Generate166KeySetKey118 {
|
|
2864 my($This) = @_;
|
|
2865 my($MinKeyCount, @CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
2866
|
|
2867 $MinKeyCount = 2;
|
|
2868 @CentralAtomsSymbols = ('A', 'C', 'C', 'A');
|
|
2869 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
2870 @CentralAtomsMinHydrogenCount = (undef, 2, 2, undef);
|
|
2871
|
|
2872 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount, $MinKeyCount);
|
|
2873 }
|
|
2874
|
|
2875 # Generate key 119 value as 1/0 indicating its presence/absence or count of its
|
|
2876 # presence in a molecule.
|
|
2877 #
|
|
2878 # Key 119 description: N=A
|
|
2879 #
|
|
2880 sub _Generate166KeySetKey119 {
|
|
2881 my($This) = @_;
|
|
2882 my($BondOrder) = 2;
|
|
2883
|
|
2884 return $This->_DetectBondKeys('N', 'A', $BondOrder);
|
|
2885 }
|
|
2886
|
|
2887 # Generate key 120 value as 1/0 indicating its presence/absence or count of its
|
|
2888 # presence in a molecule.
|
|
2889 #
|
|
2890 # Key 120 description: HETEROCYCLIC ATOM > 1 (&...)
|
|
2891 #
|
|
2892 sub _Generate166KeySetKey120 {
|
|
2893 my($This) = @_;
|
|
2894 my($MinKeyCount, $IsInRing) = (2, 1);
|
|
2895
|
|
2896 return $This->_DetectAtomKeys('Q', $MinKeyCount, $IsInRing);
|
|
2897 }
|
|
2898
|
|
2899 # Generate key 121 value as 1/0 indicating its presence/absence or count of its
|
|
2900 # presence in a molecule.
|
|
2901 #
|
|
2902 # Key 121 description: N HETEROCYCLE
|
|
2903 #
|
|
2904 sub _Generate166KeySetKey121 {
|
|
2905 my($This) = @_;
|
|
2906 my($MinKeyCount, $IsInRing) = (undef, 1);
|
|
2907
|
|
2908 return $This->_DetectAtomKeys('N', $MinKeyCount, $IsInRing);
|
|
2909 }
|
|
2910
|
|
2911 # Generate key 122 value as 1/0 indicating its presence/absence or count of its
|
|
2912 # presence in a molecule.
|
|
2913 #
|
|
2914 # Key 122 description: AN(A)A
|
|
2915 #
|
|
2916 sub _Generate166KeySetKey122 {
|
|
2917 my($This) = @_;
|
|
2918 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2919
|
|
2920 $CentralAtomSymbol = 'N';
|
|
2921 @NbrAtomSymbols = ('A', 'A', 'A');
|
|
2922 @NbrBondSymbols = (undef, undef, undef);
|
|
2923
|
|
2924 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2925 }
|
|
2926
|
|
2927 # Generate key 123 value as 1/0 indicating its presence/absence or count of its
|
|
2928 # presence in a molecule.
|
|
2929 #
|
|
2930 # Key 123 description: OCO
|
|
2931 #
|
|
2932 sub _Generate166KeySetKey123 {
|
|
2933 my($This) = @_;
|
|
2934 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2935
|
|
2936 $CentralAtomSymbol = 'C';
|
|
2937 @NbrAtomSymbols = ('O', 'O');
|
|
2938 @NbrBondSymbols = (undef, undef);
|
|
2939
|
|
2940 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2941 }
|
|
2942
|
|
2943 # Generate key 124 value as 1/0 indicating its presence/absence or count of its
|
|
2944 # presence in a molecule.
|
|
2945 #
|
|
2946 # Key 124 description: QQ
|
|
2947 #
|
|
2948 sub _Generate166KeySetKey124 {
|
|
2949 my($This) = @_;
|
|
2950
|
|
2951 return $This->_DetectBondKeys('Q', 'Q');
|
|
2952 }
|
|
2953
|
|
2954 # Generate key 125 value as 1/0 indicating its presence/absence or count of its
|
|
2955 # presence in a molecule.
|
|
2956 #
|
|
2957 # Key 125 description: AROMATIC RING > 1
|
|
2958 #
|
|
2959 sub _Generate166KeySetKey125 {
|
|
2960 my($This) = @_;
|
|
2961 my($Molecule, $NumOfAromaticRings, $KeyValue);
|
|
2962
|
|
2963 $Molecule = $This->GetMolecule();
|
|
2964 $NumOfAromaticRings = $Molecule->GetNumOfAromaticRings();
|
|
2965
|
|
2966 if ($This->{KeyBits}) {
|
|
2967 $KeyValue = ($NumOfAromaticRings > 1) ? 1 : 0;
|
|
2968 }
|
|
2969 else {
|
|
2970 $KeyValue = $NumOfAromaticRings;
|
|
2971 }
|
|
2972 return $KeyValue;
|
|
2973 }
|
|
2974
|
|
2975 # Generate key 126 value as 1/0 indicating its presence/absence or count of its
|
|
2976 # presence in a molecule.
|
|
2977 #
|
|
2978 # Key 126 description: A!O!A
|
|
2979 #
|
|
2980 sub _Generate166KeySetKey126 {
|
|
2981 my($This) = @_;
|
|
2982 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2983
|
|
2984 $CentralAtomSymbol = 'O';
|
|
2985 @NbrAtomSymbols = ('A', 'A');
|
|
2986 @NbrBondSymbols = ('!', '!');
|
|
2987
|
|
2988 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
2989 }
|
|
2990
|
|
2991 # Generate key 127 value as 1/0 indicating its presence/absence or count of its
|
|
2992 # presence in a molecule.
|
|
2993 #
|
|
2994 # Key 127 description: A$A!O > 1 (&...)
|
|
2995 #
|
|
2996 sub _Generate166KeySetKey127 {
|
|
2997 my($This) = @_;
|
|
2998 my($CentralAtomSymbol, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
2999
|
|
3000 $CentralAtomSymbol = 'A';
|
|
3001 @NbrAtomSymbols = ('A', 'O');
|
|
3002 @NbrBondSymbols = ('$', '!');
|
|
3003 $MinKeyCount = 2;
|
|
3004
|
|
3005 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount);
|
|
3006 }
|
|
3007
|
|
3008 # Generate key 128 value as 1/0 indicating its presence/absence or count of its
|
|
3009 # presence in a molecule.
|
|
3010 #
|
|
3011 # Key 128 description: ACH2AAACH2A
|
|
3012 #
|
|
3013 sub _Generate166KeySetKey128 {
|
|
3014 my($This) = @_;
|
|
3015 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
3016
|
|
3017 @CentralAtomsSymbols = ('A', 'C', 'A', 'A', 'A', 'C', 'A');
|
|
3018 @CentralAtomsBondSymbols = (undef, undef, undef, undef, undef, undef);
|
|
3019 @CentralAtomsMinHydrogenCount = (undef, 2, undef, undef, undef, 2, undef);
|
|
3020
|
|
3021 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
3022 }
|
|
3023
|
|
3024 # Generate key 129 value as 1/0 indicating its presence/absence or count of its
|
|
3025 # presence in a molecule.
|
|
3026 #
|
|
3027 # Key 129 description: ACH2AACH2A
|
|
3028 #
|
|
3029 sub _Generate166KeySetKey129 {
|
|
3030 my($This) = @_;
|
|
3031 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
3032
|
|
3033 @CentralAtomsSymbols = ('A', 'C', 'A', 'A', 'C', 'A');
|
|
3034 @CentralAtomsBondSymbols = (undef, undef, undef, undef, undef);
|
|
3035 @CentralAtomsMinHydrogenCount = (undef, 2, undef, undef, 2, undef);
|
|
3036
|
|
3037 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
3038 }
|
|
3039
|
|
3040 # Generate key 130 value as 1/0 indicating its presence/absence or count of its
|
|
3041 # presence in a molecule.
|
|
3042 #
|
|
3043 # Key 130 description: QQ > 1 (&...)
|
|
3044 #
|
|
3045 sub _Generate166KeySetKey130 {
|
|
3046 my($This) = @_;
|
|
3047 my($BondOrder, $MinKeyCount) = (undef, 2);
|
|
3048
|
|
3049 return $This->_DetectBondKeys('Q', 'Q', $BondOrder, $MinKeyCount);
|
|
3050 }
|
|
3051
|
|
3052 # Generate key 131 value as 1/0 indicating its presence/absence or count of its
|
|
3053 # presence in a molecule.
|
|
3054 #
|
|
3055 # Key 131 description: QH > 1
|
|
3056 #
|
|
3057 sub _Generate166KeySetKey131 {
|
|
3058 my($This) = @_;
|
|
3059 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (2, undef, 1);
|
|
3060
|
|
3061 return $This->_DetectAtomKeys('Q', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
3062 }
|
|
3063
|
|
3064 # Generate key 132 value as 1/0 indicating its presence/absence or count of its
|
|
3065 # presence in a molecule.
|
|
3066 #
|
|
3067 # Key 132 description: OACH2A
|
|
3068 #
|
|
3069 sub _Generate166KeySetKey132 {
|
|
3070 my($This) = @_;
|
|
3071 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
3072
|
|
3073 @CentralAtomsSymbols = ('O', 'A', 'C', 'A');
|
|
3074 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
3075 @CentralAtomsMinHydrogenCount = (undef, undef, 2, undef);
|
|
3076
|
|
3077 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
3078 }
|
|
3079
|
|
3080 # Generate key 133 value as 1/0 indicating its presence/absence or count of its
|
|
3081 # presence in a molecule.
|
|
3082 #
|
|
3083 # Key 133 description: A$A!N
|
|
3084 #
|
|
3085 sub _Generate166KeySetKey133 {
|
|
3086 my($This) = @_;
|
|
3087 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3088
|
|
3089 $CentralAtomSymbol = 'A';
|
|
3090 @NbrAtomSymbols = ('A', 'N');
|
|
3091 @NbrBondSymbols = ('$', '!');
|
|
3092
|
|
3093 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3094 }
|
|
3095
|
|
3096 # Generate key 134 value as 1/0 indicating its presence/absence or count of its
|
|
3097 # presence in a molecule.
|
|
3098 #
|
|
3099 # Key 134 description: X (HALOGEN)
|
|
3100 #
|
|
3101 sub _Generate166KeySetKey134 {
|
|
3102 my($This) = @_;
|
|
3103
|
|
3104 return $This->_DetectAtomKeys('X');
|
|
3105 }
|
|
3106
|
|
3107 # Generate key 135 value as 1/0 indicating its presence/absence or count of its
|
|
3108 # presence in a molecule.
|
|
3109 #
|
|
3110 # Key 135 description: Nnot%A%A
|
|
3111 #
|
|
3112 sub _Generate166KeySetKey135 {
|
|
3113 my($This) = @_;
|
|
3114 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3115
|
|
3116 $CentralAtomSymbol = 'A';
|
|
3117 @NbrAtomSymbols = ('N', 'A');
|
|
3118 @NbrBondSymbols = ('not%', '%');
|
|
3119
|
|
3120 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3121 }
|
|
3122
|
|
3123 # Generate key 136 value as 1/0 indicating its presence/absence or count of its
|
|
3124 # presence in a molecule.
|
|
3125 #
|
|
3126 # Key 136 description: O=A > 1
|
|
3127 #
|
|
3128 sub _Generate166KeySetKey136 {
|
|
3129 my($This) = @_;
|
|
3130 my($BondOrder, $MinKeyCount) = (2, 2);
|
|
3131
|
|
3132 return $This->_DetectBondKeys('O', 'A', $BondOrder, $MinKeyCount);
|
|
3133 }
|
|
3134
|
|
3135 # Generate key 137 value as 1/0 indicating its presence/absence or count of its
|
|
3136 # presence in a molecule.
|
|
3137 #
|
|
3138 # Key 137 description: HETEROCYCLE
|
|
3139 #
|
|
3140 sub _Generate166KeySetKey137 {
|
|
3141 my($This) = @_;
|
|
3142 my($MinKeyCount, $IsInRing) = (1, 1);
|
|
3143
|
|
3144 return $This->_DetectAtomKeys('Q', $MinKeyCount, $IsInRing);
|
|
3145 }
|
|
3146
|
|
3147 # Generate key 138 value as 1/0 indicating its presence/absence or count of its
|
|
3148 # presence in a molecule.
|
|
3149 #
|
|
3150 # Key 138 description: QCH2A > 1 (&...)
|
|
3151 #
|
|
3152 sub _Generate166KeySetKey138 {
|
|
3153 my($This) = @_;
|
|
3154 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3155
|
|
3156 $CentralAtomSymbol = 'C';
|
|
3157 @NbrAtomSymbols = ('Q', 'A');
|
|
3158 @NbrBondSymbols = (undef, undef);
|
|
3159 $MinKeyCount = 2;
|
|
3160 $CentralAtomMinHydrogenCount = 2;
|
|
3161
|
|
3162 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
3163 }
|
|
3164
|
|
3165 # Generate key 139 value as 1/0 indicating its presence/absence or count of its
|
|
3166 # presence in a molecule.
|
|
3167 #
|
|
3168 # Key 139 description: OH
|
|
3169 #
|
|
3170 sub _Generate166KeySetKey139 {
|
|
3171 my($This) = @_;
|
|
3172 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (undef, undef, 1);
|
|
3173
|
|
3174 return $This->_DetectAtomKeys('O', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
3175 }
|
|
3176
|
|
3177 # Generate key 140 value as 1/0 indicating its presence/absence or count of its
|
|
3178 # presence in a molecule.
|
|
3179 #
|
|
3180 # Key 140 description: O > 3 (&...)
|
|
3181 #
|
|
3182 sub _Generate166KeySetKey140 {
|
|
3183 my($This) = @_;
|
|
3184 my($MinKeyCount) = 4;
|
|
3185
|
|
3186 return $This->_DetectAtomKeys('O', $MinKeyCount);
|
|
3187 }
|
|
3188
|
|
3189 # Generate key 141 value as 1/0 indicating its presence/absence or count of its
|
|
3190 # presence in a molecule.
|
|
3191 #
|
|
3192 # Key 141 description: CH3 > 2 (&...)
|
|
3193 #
|
|
3194 sub _Generate166KeySetKey141 {
|
|
3195 my($This) = @_;
|
|
3196 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (3, undef, 3);
|
|
3197
|
|
3198 return $This->_DetectAtomKeys('C', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
3199 }
|
|
3200
|
|
3201 # Generate key 142 value as 1/0 indicating its presence/absence or count of its
|
|
3202 # presence in a molecule.
|
|
3203 #
|
|
3204 # Key 142 description: N > 1
|
|
3205 #
|
|
3206 sub _Generate166KeySetKey142 {
|
|
3207 my($This) = @_;
|
|
3208 my($MinKeyCount) = 2;
|
|
3209
|
|
3210 return $This->_DetectAtomKeys('N', $MinKeyCount);
|
|
3211 }
|
|
3212
|
|
3213 # Generate key 143 value as 1/0 indicating its presence/absence or count of its
|
|
3214 # presence in a molecule.
|
|
3215 #
|
|
3216 # Key 143 description: A$A!O
|
|
3217 #
|
|
3218 sub _Generate166KeySetKey143 {
|
|
3219 my($This) = @_;
|
|
3220 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3221
|
|
3222 $CentralAtomSymbol = 'A';
|
|
3223 @NbrAtomSymbols = ('A', 'O');
|
|
3224 @NbrBondSymbols = ('$', '!');
|
|
3225
|
|
3226 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3227 }
|
|
3228
|
|
3229 # Generate key 144 value as 1/0 indicating its presence/absence or count of its
|
|
3230 # presence in a molecule.
|
|
3231 #
|
|
3232 # Key 144 description: Anot%A%Anot%A
|
|
3233 #
|
|
3234 sub _Generate166KeySetKey144 {
|
|
3235 my($This) = @_;
|
|
3236 my($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, @NbrAtomsSymbols, @NbrAtomsBondSymbols);
|
|
3237
|
|
3238 ($BondAtomSymbol1, $BondAtomSymbol2) = ('A', 'A');
|
|
3239 $BondSymbol = '%';
|
|
3240
|
|
3241 @NbrAtomsSymbols = (['A'], ['A']);
|
|
3242 @NbrAtomsBondSymbols = (['not%'], ['not%']);
|
|
3243 return $This->_DetectBondNeighborhoodKeys($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, \@NbrAtomsSymbols, \@NbrAtomsBondSymbols);
|
|
3244 }
|
|
3245
|
|
3246 # Generate key 145 value as 1/0 indicating its presence/absence or count of its
|
|
3247 # presence in a molecule.
|
|
3248 #
|
|
3249 # Key 145 description: 6M RING > 1
|
|
3250 #
|
|
3251 sub _Generate166KeySetKey145 {
|
|
3252 my($This) = @_;
|
|
3253 my($Molecule, $KeyValue, $RingSize, $NumOfRings);
|
|
3254
|
|
3255 $RingSize = 6;
|
|
3256 $Molecule = $This->GetMolecule();
|
|
3257 $NumOfRings = $Molecule->GetNumOfRingsWithSize($RingSize);
|
|
3258
|
|
3259 if ($This->{KeyBits}) {
|
|
3260 $KeyValue = ($NumOfRings > 1) ? 1 : 0;
|
|
3261 }
|
|
3262 else {
|
|
3263 $KeyValue = $NumOfRings;
|
|
3264 }
|
|
3265 return $KeyValue;
|
|
3266 }
|
|
3267
|
|
3268 # Generate key 146 value as 1/0 indicating its presence/absence or count of its
|
|
3269 # presence in a molecule.
|
|
3270 #
|
|
3271 # Key 146 description: O > 2
|
|
3272 #
|
|
3273 sub _Generate166KeySetKey146 {
|
|
3274 my($This) = @_;
|
|
3275 my($MinKeyCount) = 3;
|
|
3276
|
|
3277 return $This->_DetectAtomKeys('O', $MinKeyCount);
|
|
3278 }
|
|
3279
|
|
3280 # Generate key 147 value as 1/0 indicating its presence/absence or count of its
|
|
3281 # presence in a molecule.
|
|
3282 #
|
|
3283 # Key 147 description: ACH2CH2A
|
|
3284 #
|
|
3285 sub _Generate166KeySetKey147 {
|
|
3286 my($This) = @_;
|
|
3287 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount);
|
|
3288
|
|
3289 @CentralAtomsSymbols = ('A', 'C', 'C', 'A');
|
|
3290 @CentralAtomsBondSymbols = (undef, undef, undef);
|
|
3291 @CentralAtomsMinHydrogenCount = (undef, 2, 2, undef);
|
|
3292
|
|
3293 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount);
|
|
3294 }
|
|
3295
|
|
3296 # Generate key 148 value as 1/0 indicating its presence/absence or count of its
|
|
3297 # presence in a molecule.
|
|
3298 #
|
|
3299 # Key 148 description: AQ(A)A
|
|
3300 #
|
|
3301 sub _Generate166KeySetKey148 {
|
|
3302 my($This) = @_;
|
|
3303 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3304
|
|
3305 $CentralAtomSymbol = 'Q';
|
|
3306 @NbrAtomSymbols = ('A', 'A', 'A');
|
|
3307 @NbrBondSymbols = (undef, undef, undef);
|
|
3308
|
|
3309 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3310 }
|
|
3311
|
|
3312 # Generate key 149 value as 1/0 indicating its presence/absence or count of its
|
|
3313 # presence in a molecule.
|
|
3314 #
|
|
3315 # Key 149 description: CH3 > 1
|
|
3316 #
|
|
3317 sub _Generate166KeySetKey149 {
|
|
3318 my($This) = @_;
|
|
3319 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (2, undef, 3);
|
|
3320
|
|
3321 return $This->_DetectAtomKeys('C', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
3322 }
|
|
3323
|
|
3324 # Generate key 150 value as 1/0 indicating its presence/absence or count of its
|
|
3325 # presence in a molecule.
|
|
3326 #
|
|
3327 # Key 150 description: A!A$A!A
|
|
3328 #
|
|
3329 sub _Generate166KeySetKey150 {
|
|
3330 my($This) = @_;
|
|
3331 my(@CentralAtomsSymbols, @CentralAtomsBondSymbols);
|
|
3332
|
|
3333 @CentralAtomsSymbols = ('A', 'A', 'A', 'A');
|
|
3334 @CentralAtomsBondSymbols = ('!', '$', '!');
|
|
3335
|
|
3336 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols);
|
|
3337 }
|
|
3338
|
|
3339 # Generate key 151 value as 1/0 indicating its presence/absence or count of its
|
|
3340 # presence in a molecule.
|
|
3341 #
|
|
3342 # Key 151 description: NH
|
|
3343 #
|
|
3344 sub _Generate166KeySetKey151 {
|
|
3345 my($This) = @_;
|
|
3346 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (undef, undef, 1);
|
|
3347
|
|
3348 return $This->_DetectAtomKeys('N', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
3349 }
|
|
3350
|
|
3351 # Generate key 152 value as 1/0 indicating its presence/absence or count of its
|
|
3352 # presence in a molecule.
|
|
3353 #
|
|
3354 # Key 152 description: OC(C)C
|
|
3355 #
|
|
3356 sub _Generate166KeySetKey152 {
|
|
3357 my($This) = @_;
|
|
3358 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3359
|
|
3360 $CentralAtomSymbol = 'C';
|
|
3361 @NbrAtomSymbols = ('O', 'C', 'C');
|
|
3362 @NbrBondSymbols = (undef, undef, undef);
|
|
3363
|
|
3364 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3365 }
|
|
3366
|
|
3367 # Generate key 153 value as 1/0 indicating its presence/absence or count of its
|
|
3368 # presence in a molecule.
|
|
3369 #
|
|
3370 # Key 153 description: QCH2A
|
|
3371 #
|
|
3372 sub _Generate166KeySetKey153 {
|
|
3373 my($This) = @_;
|
|
3374 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3375
|
|
3376 $CentralAtomSymbol = 'C';
|
|
3377 @NbrAtomSymbols = ('Q', 'A');
|
|
3378 @NbrBondSymbols = (undef, undef);
|
|
3379 $MinKeyCount = undef;
|
|
3380 $CentralAtomMinHydrogenCount = 2;
|
|
3381
|
|
3382 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
3383 }
|
|
3384
|
|
3385 # Generate key 154 value as 1/0 indicating its presence/absence or count of its
|
|
3386 # presence in a molecule.
|
|
3387 #
|
|
3388 # Key 154 description: C=O
|
|
3389 #
|
|
3390 sub _Generate166KeySetKey154 {
|
|
3391 my($This) = @_;
|
|
3392 my($BondOrder) = 2;
|
|
3393
|
|
3394 return $This->_DetectBondKeys('C', 'O', $BondOrder);
|
|
3395 }
|
|
3396
|
|
3397 # Generate key 155 value as 1/0 indicating its presence/absence or count of its
|
|
3398 # presence in a molecule.
|
|
3399 #
|
|
3400 # Key 155 description: A!CH2!A
|
|
3401 #
|
|
3402 sub _Generate166KeySetKey155 {
|
|
3403 my($This) = @_;
|
|
3404 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3405
|
|
3406 $CentralAtomSymbol = 'C';
|
|
3407 @NbrAtomSymbols = ('A', 'A');
|
|
3408 @NbrBondSymbols = ('!', '!');
|
|
3409 $MinKeyCount = undef;
|
|
3410 $CentralAtomMinHydrogenCount = 2;
|
|
3411
|
|
3412 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
3413 }
|
|
3414
|
|
3415 # Generate key 156 value as 1/0 indicating its presence/absence or count of its
|
|
3416 # presence in a molecule.
|
|
3417 #
|
|
3418 # Key 156 description: NA(A)A
|
|
3419 #
|
|
3420 sub _Generate166KeySetKey156 {
|
|
3421 my($This) = @_;
|
|
3422 my($MinKeyCount, @CentralAtomsSymbols, @CentralAtomsBondSymbols, @CentralAtomsMinHydrogenCount, @CentralAtomNbrsAtomSymbols, @CentralAtomNbrsBondSymbols);
|
|
3423
|
|
3424 @CentralAtomsSymbols = ('N', 'A', 'A');
|
|
3425 @CentralAtomsBondSymbols = (undef, undef);
|
|
3426 @CentralAtomsMinHydrogenCount = (undef, undef, undef);
|
|
3427
|
|
3428 @CentralAtomNbrsAtomSymbols = (undef, ['A'], undef);
|
|
3429 @CentralAtomNbrsBondSymbols = (undef, undef, undef);
|
|
3430 $MinKeyCount = undef;
|
|
3431
|
|
3432 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, \@CentralAtomsBondSymbols, \@CentralAtomsMinHydrogenCount, $MinKeyCount, \@CentralAtomNbrsAtomSymbols, \@CentralAtomNbrsBondSymbols);
|
|
3433 }
|
|
3434
|
|
3435 # Generate key 157 value as 1/0 indicating its presence/absence or count of its
|
|
3436 # presence in a molecule.
|
|
3437 #
|
|
3438 # Key 157 description: C-O
|
|
3439 #
|
|
3440 sub _Generate166KeySetKey157 {
|
|
3441 my($This) = @_;
|
|
3442 my($BondOrder) = 1;
|
|
3443
|
|
3444 return $This->_DetectBondKeys('C', 'O', $BondOrder);
|
|
3445 }
|
|
3446
|
|
3447 # Generate key 158 value as 1/0 indicating its presence/absence or count of its
|
|
3448 # presence in a molecule.
|
|
3449 #
|
|
3450 # Key 158 description: C-N
|
|
3451 #
|
|
3452 sub _Generate166KeySetKey158 {
|
|
3453 my($This) = @_;
|
|
3454 my($BondOrder) = 1;
|
|
3455
|
|
3456 return $This->_DetectBondKeys('C', 'N', $BondOrder);
|
|
3457 }
|
|
3458
|
|
3459 # Generate key 159 value as 1/0 indicating its presence/absence or count of its
|
|
3460 # presence in a molecule.
|
|
3461 #
|
|
3462 # Key 159 description: O > 1
|
|
3463 #
|
|
3464 sub _Generate166KeySetKey159 {
|
|
3465 my($This) = @_;
|
|
3466 my($MinKeyCount) = 2;
|
|
3467
|
|
3468 return $This->_DetectAtomKeys('O', $MinKeyCount);
|
|
3469 }
|
|
3470
|
|
3471 # Generate key 160 value as 1/0 indicating its presence/absence or count of its
|
|
3472 # presence in a molecule.
|
|
3473 #
|
|
3474 # Key 160 description: CH3
|
|
3475 #
|
|
3476 sub _Generate166KeySetKey160 {
|
|
3477 my($This) = @_;
|
|
3478 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (undef, undef, 3);
|
|
3479
|
|
3480 return $This->_DetectAtomKeys('C', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
3481 }
|
|
3482
|
|
3483 # Generate key 161 value as 1/0 indicating its presence/absence or count of its
|
|
3484 # presence in a molecule.
|
|
3485 #
|
|
3486 # Key 161 description: N
|
|
3487 #
|
|
3488 sub _Generate166KeySetKey161 {
|
|
3489 my($This) = @_;
|
|
3490
|
|
3491 return $This->_DetectAtomKeys('N');
|
|
3492 }
|
|
3493
|
|
3494 # Generate key 162 value as 1/0 indicating its presence/absence or count of its
|
|
3495 # presence in a molecule.
|
|
3496 #
|
|
3497 # Key 162 description: AROMATIC
|
|
3498 #
|
|
3499 sub _Generate166KeySetKey162 {
|
|
3500 my($This) = @_;
|
|
3501 my($Atom, $Molecule, $KeyValue);
|
|
3502
|
|
3503 # Check molecule aromatic property...
|
|
3504 $Molecule = $This->GetMolecule();
|
|
3505 if ($Molecule->IsAromatic()) {
|
|
3506 return 1;
|
|
3507 }
|
|
3508
|
|
3509 # Check aromatic property of each atom...
|
|
3510 $KeyValue = 1;
|
|
3511 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
3512 if (!$Atom->IsAromatic()) {
|
|
3513 $KeyValue = 0;
|
|
3514 last ATOM;
|
|
3515 }
|
|
3516 }
|
|
3517 return $KeyValue;
|
|
3518 }
|
|
3519
|
|
3520 # Generate key 163 value as 1/0 indicating its presence/absence or count of its
|
|
3521 # presence in a molecule.
|
|
3522 #
|
|
3523 # Key 163 description: 6M RING
|
|
3524 #
|
|
3525 sub _Generate166KeySetKey163 {
|
|
3526 my($This) = @_;
|
|
3527 my($Molecule, $KeyValue, $RingSize, $NumOfRings);
|
|
3528
|
|
3529 $RingSize = 6;
|
|
3530 $Molecule = $This->GetMolecule();
|
|
3531 $NumOfRings = $Molecule->GetNumOfRingsWithSize($RingSize);
|
|
3532
|
|
3533 if ($This->{KeyBits}) {
|
|
3534 $KeyValue = $NumOfRings ? 1 : 0;
|
|
3535 }
|
|
3536 else {
|
|
3537 $KeyValue = $NumOfRings;
|
|
3538 }
|
|
3539 return $KeyValue;
|
|
3540 }
|
|
3541
|
|
3542 # Generate key 164 value as 1/0 indicating its presence/absence or count of its
|
|
3543 # presence in a molecule.
|
|
3544 #
|
|
3545 # Key 164 description: O
|
|
3546 #
|
|
3547 sub _Generate166KeySetKey164 {
|
|
3548 my($This) = @_;
|
|
3549
|
|
3550 return $This->_DetectAtomKeys('O');
|
|
3551 }
|
|
3552
|
|
3553 # Generate key 165 value as 1/0 indicating its presence/absence or count of its
|
|
3554 # presence in a molecule.
|
|
3555 #
|
|
3556 # Key 165 description: RING
|
|
3557 #
|
|
3558 sub _Generate166KeySetKey165 {
|
|
3559 my($This) = @_;
|
|
3560 my($Molecule, $KeyValue, $NumOfRings);
|
|
3561
|
|
3562 $Molecule = $This->GetMolecule();
|
|
3563 $NumOfRings = $Molecule->GetNumOfRings();
|
|
3564
|
|
3565 if ($This->{KeyBits}) {
|
|
3566 $KeyValue = $NumOfRings ? 1 : 0;
|
|
3567 }
|
|
3568 else {
|
|
3569 $KeyValue = $NumOfRings;
|
|
3570 }
|
|
3571 return $KeyValue;
|
|
3572 }
|
|
3573
|
|
3574 # Generate key 166 value as 1/0 indicating its presence/absence or count of its
|
|
3575 # presence in a molecule.
|
|
3576 #
|
|
3577 # Key 166 description: FRAGMENTS
|
|
3578 #
|
|
3579 sub _Generate166KeySetKey166 {
|
|
3580 my($This) = @_;
|
|
3581 my($Molecule, $KeyValue, $NumOfComponents);
|
|
3582
|
|
3583 $Molecule = $This->GetMolecule();
|
|
3584 $NumOfComponents = $Molecule->GetNumOfConnectedComponents();
|
|
3585
|
|
3586 if ($This->{KeyBits}) {
|
|
3587 $KeyValue = ($NumOfComponents > 1) ? 1 : 0;
|
|
3588 }
|
|
3589 else {
|
|
3590 $KeyValue = $NumOfComponents;
|
|
3591 }
|
|
3592 return $KeyValue;
|
|
3593 }
|
|
3594
|
|
3595 ##################################
|
|
3596 #
|
|
3597 # Implementation of MDL MACCS 322 keys...
|
|
3598 #
|
|
3599 ##################################
|
|
3600
|
|
3601 # Generate 322 keyset key 1 value as 1/0 indicating its presence/absence or
|
|
3602 # count of its presence in a molecule.
|
|
3603 #
|
|
3604 # Key 1 description: A(AAA) or AA(A)A - atom with at least three neighbors
|
|
3605 #
|
|
3606 sub _Generate322KeySetKey1 {
|
|
3607 my($This) = @_;
|
|
3608 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3609
|
|
3610 $CentralAtomSymbol = 'A';
|
|
3611 @NbrAtomSymbols = ('A', 'A', 'A');
|
|
3612 @NbrBondSymbols = (undef, undef, undef);
|
|
3613
|
|
3614 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3615 }
|
|
3616
|
|
3617 # Generate 322 keyset key 2 value as 1/0 indicating its presence/absence or
|
|
3618 # count of its presence in a molecule.
|
|
3619 #
|
|
3620 # Key 2 description: Q - heteroatom
|
|
3621 #
|
|
3622 sub _Generate322KeySetKey2 {
|
|
3623 my($This) = @_;
|
|
3624
|
|
3625 return $This->_DetectAtomKeys('Q');
|
|
3626 }
|
|
3627
|
|
3628 # Generate 322 keyset key 3 value as 1/0 indicating its presence/absence or
|
|
3629 # count of its presence in a molecule.
|
|
3630 #
|
|
3631 # Key 3 description: Anot%not-A - atom involved in one or more multiple bonds, not aromatic
|
|
3632 #
|
|
3633 sub _Generate322KeySetKey3 {
|
|
3634 my($This) = @_;
|
|
3635 my($BondSymbol) = 'not%not-';
|
|
3636
|
|
3637 return $This->_DetectBondKeys('A', 'A', $BondSymbol);
|
|
3638 }
|
|
3639
|
|
3640 # Generate 322 keyset key 4 value as 1/0 indicating its presence/absence or
|
|
3641 # count of its presence in a molecule.
|
|
3642 #
|
|
3643 # Key 4 description: A(AAAA) or AA(A)(A)A - atom with at least four neighbors
|
|
3644 #
|
|
3645 sub _Generate322KeySetKey4 {
|
|
3646 my($This) = @_;
|
|
3647 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3648
|
|
3649 $CentralAtomSymbol = 'A';
|
|
3650 @NbrAtomSymbols = ('A', 'A', 'A', 'A');
|
|
3651 @NbrBondSymbols = (undef, undef, undef, undef);
|
|
3652
|
|
3653 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3654 }
|
|
3655
|
|
3656 # Generate 322 keyset key 5 value as 1/0 indicating its presence/absence or
|
|
3657 # count of its presence in a molecule.
|
|
3658 #
|
|
3659 # Key 5 description: A(QQ) or QA(Q) - atom with at least two heteroatom neighbors
|
|
3660 #
|
|
3661 sub _Generate322KeySetKey5 {
|
|
3662 my($This) = @_;
|
|
3663 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3664
|
|
3665 $CentralAtomSymbol = 'A';
|
|
3666 @NbrAtomSymbols = ('Q', 'Q');
|
|
3667 @NbrBondSymbols = (undef, undef);
|
|
3668
|
|
3669 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3670 }
|
|
3671
|
|
3672 # Generate 322 keyset key 6 value as 1/0 indicating its presence/absence or
|
|
3673 # count of its presence in a molecule.
|
|
3674 #
|
|
3675 # Key 6 description: A(QQQ) or QA(Q)Q - atom with at least three heteroatom neighbors
|
|
3676 #
|
|
3677 sub _Generate322KeySetKey6 {
|
|
3678 my($This) = @_;
|
|
3679 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3680
|
|
3681 $CentralAtomSymbol = 'A';
|
|
3682 @NbrAtomSymbols = ('Q', 'Q', 'Q');
|
|
3683 @NbrBondSymbols = (undef, undef, undef);
|
|
3684
|
|
3685 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3686 }
|
|
3687
|
|
3688 # Generate 322 keyset key 7 value as 1/0 indicating its presence/absence or
|
|
3689 # count of its presence in a molecule.
|
|
3690 #
|
|
3691 # Key 7 description: QH - heteroatom with at least one hydrogen attached
|
|
3692 #
|
|
3693 sub _Generate322KeySetKey7 {
|
|
3694 my($This) = @_;
|
|
3695 my($MinKeyCount, $IsInRing, $MinHydrogenCount) = (undef, undef, 1);
|
|
3696
|
|
3697 return $This->_DetectAtomKeys('Q', $MinKeyCount, $IsInRing, $MinHydrogenCount);
|
|
3698 }
|
|
3699
|
|
3700 # Generate 322 keyset key 8 value as 1/0 indicating its presence/absence or
|
|
3701 # count of its presence in a molecule.
|
|
3702 #
|
|
3703 # Key 8 description: CH2(AA) or ACH2A - carbon with at least two single bonds and at least two hydrogens attached
|
|
3704 #
|
|
3705 sub _Generate322KeySetKey8 {
|
|
3706 my($This) = @_;
|
|
3707 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3708
|
|
3709 $CentralAtomSymbol = 'C';
|
|
3710 @NbrAtomSymbols = ('A', 'A');
|
|
3711 @NbrBondSymbols = (undef, undef);
|
|
3712 $MinKeyCount = undef;
|
|
3713 $CentralAtomMinHydrogenCount = 2;
|
|
3714
|
|
3715 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
3716 }
|
|
3717
|
|
3718 # Generate 322 keyset key 9 value as 1/0 indicating its presence/absence or
|
|
3719 # count of its presence in a molecule.
|
|
3720 #
|
|
3721 # Key 9 description: CH3(A) or ACH3 - carbon with at least one single bond and at least three hydrogens attached
|
|
3722 #
|
|
3723 sub _Generate322KeySetKey9 {
|
|
3724 my($This) = @_;
|
|
3725 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3726
|
|
3727 $CentralAtomSymbol = 'C';
|
|
3728 @NbrAtomSymbols = ('A');
|
|
3729 @NbrBondSymbols = (undef);
|
|
3730 $MinKeyCount = undef;
|
|
3731 $CentralAtomMinHydrogenCount = 3;
|
|
3732
|
|
3733 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount);
|
|
3734 }
|
|
3735
|
|
3736 # Generate 322 keyset key 10 value as 1/0 indicating its presence/absence or
|
|
3737 # count of its presence in a molecule.
|
|
3738 #
|
|
3739 # Key 10 description: Halogen
|
|
3740 #
|
|
3741 sub _Generate322KeySetKey10 {
|
|
3742 my($This) = @_;
|
|
3743
|
|
3744 return $This->_DetectAtomKeys('X');
|
|
3745 }
|
|
3746
|
|
3747 # Generate 322 keyset key 11 value as 1/0 indicating its presence/absence or
|
|
3748 # count of its presence in a molecule.
|
|
3749 #
|
|
3750 # Key 11 description: A(-A-A-A) or A-A(-A)-A - atom has at least three single bonds
|
|
3751 #
|
|
3752 sub _Generate322KeySetKey11 {
|
|
3753 my($This) = @_;
|
|
3754 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3755
|
|
3756 $CentralAtomSymbol = 'A';
|
|
3757 @NbrAtomSymbols = ('A', 'A', 'A');
|
|
3758 @NbrBondSymbols = ('-', '-', '-');
|
|
3759
|
|
3760 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3761 }
|
|
3762
|
|
3763 # Generate 322 keyset key 12 value as 1/0 indicating its presence/absence or
|
|
3764 # count of its presence in a molecule.
|
|
3765 #
|
|
3766 # Key 12 description: AAAAAA@1 >= 2 - atom is in at least two different six-membered rings
|
|
3767 #
|
|
3768 sub _Generate322KeySetKey12 {
|
|
3769 my($This) = @_;
|
|
3770 my($Atom, $KeyValue, $RingSize, $NumOfRings);
|
|
3771
|
|
3772 $RingSize = 6;
|
|
3773 $KeyValue = 0;
|
|
3774
|
|
3775 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
3776 if (!$This->_IsAtom($Atom)) {
|
|
3777 next ATOM;
|
|
3778 }
|
|
3779 $NumOfRings = $Atom->GetNumOfRingsWithSize($RingSize);
|
|
3780 if ($NumOfRings >= 2) {
|
|
3781 $KeyValue++;
|
|
3782 if ($This->{KeyBits}) {
|
|
3783 $KeyValue = 1;
|
|
3784 last ATOM;
|
|
3785 }
|
|
3786 }
|
|
3787 }
|
|
3788 return $KeyValue;
|
|
3789 }
|
|
3790
|
|
3791 # Generate 322 keyset key 13 value as 1/0 indicating its presence/absence or
|
|
3792 # count of its presence in a molecule.
|
|
3793 #
|
|
3794 # Key 13 description: A($A$A$A) or A$A($A)$A - atom has more than two ring bonds (at least three ring bonds)
|
|
3795 #
|
|
3796 sub _Generate322KeySetKey13 {
|
|
3797 my($This) = @_;
|
|
3798 my($CentralAtomSymbol, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3799
|
|
3800 $CentralAtomSymbol = 'A';
|
|
3801 @NbrAtomSymbols = ('A', 'A', 'A');
|
|
3802 @NbrBondSymbols = ('$', '$', '$');
|
|
3803
|
|
3804 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3805 }
|
|
3806
|
|
3807 # Generate 322 keyset key 14 value as 1/0 indicating its presence/absence or
|
|
3808 # count of its presence in a molecule.
|
|
3809 #
|
|
3810 # Key 14 description: A$A!A$A - atom is at a ring/chain boundary. When a comparison is
|
|
3811 # done with another atom the path passes through the chain bond.
|
|
3812 #
|
|
3813 sub _Generate322KeySetKey14 {
|
|
3814 my($This) = @_;
|
|
3815 my($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, @NbrAtomsSymbols, @NbrAtomsBondSymbols);
|
|
3816
|
|
3817 ($BondAtomSymbol1, $BondAtomSymbol2) = ('A', 'A');
|
|
3818 $BondSymbol = '!';
|
|
3819
|
|
3820 @NbrAtomsSymbols = (['A'], ['A']);
|
|
3821 @NbrAtomsBondSymbols = (['$'], ['$']);
|
|
3822 return $This->_DetectBondNeighborhoodKeys($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, \@NbrAtomsSymbols, \@NbrAtomsBondSymbols);
|
|
3823 }
|
|
3824
|
|
3825 # Generate 322 keyset key 15 value as 1/0 indicating its presence/absence or
|
|
3826 # count of its presence in a molecule.
|
|
3827 #
|
|
3828 # Key 15 description: Anot%A%Anot%A - atom is at an aromatic/nonaromatic boundary.
|
|
3829 # When a comparison is done with another atom the path passes through the aromatic bond.
|
|
3830 #
|
|
3831 sub _Generate322KeySetKey15 {
|
|
3832 my($This) = @_;
|
|
3833 my($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, @NbrAtomsSymbols, @NbrAtomsBondSymbols);
|
|
3834
|
|
3835 ($BondAtomSymbol1, $BondAtomSymbol2) = ('A', 'A');
|
|
3836 $BondSymbol = '%';
|
|
3837
|
|
3838 @NbrAtomsSymbols = (['A'], ['A']);
|
|
3839 @NbrAtomsBondSymbols = (['not%'], ['not%']);
|
|
3840 return $This->_DetectBondNeighborhoodKeys($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, \@NbrAtomsSymbols, \@NbrAtomsBondSymbols);
|
|
3841 }
|
|
3842
|
|
3843 # Generate 322 keyset key 16 value as 1/0 indicating its presence/absence or
|
|
3844 # count of its presence in a molecule.
|
|
3845 #
|
|
3846 # Key 16 description: A!A!A - atom with more than one chain bond
|
|
3847 #
|
|
3848 sub _Generate322KeySetKey16 {
|
|
3849 my($This) = @_;
|
|
3850 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
3851
|
|
3852 $CentralAtomSymbol = 'A';
|
|
3853 @NbrAtomSymbols = ('A', 'A');
|
|
3854 @NbrBondSymbols = ('!', '!');
|
|
3855
|
|
3856 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
3857 }
|
|
3858
|
|
3859 # Generate 322 keyset key 17 value as 1/0 indicating its presence/absence or
|
|
3860 # count of its presence in a molecule.
|
|
3861 #
|
|
3862 # Key 17 description: A!A$A!A - atom is at a ring/chain boundary. When a comparison
|
|
3863 # is done with another atom the path passes through the ring bond.
|
|
3864 #
|
|
3865 sub _Generate322KeySetKey17 {
|
|
3866 my($This) = @_;
|
|
3867 my($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, @NbrAtomsSymbols, @NbrAtomsBondSymbols);
|
|
3868
|
|
3869 ($BondAtomSymbol1, $BondAtomSymbol2) = ('A', 'A');
|
|
3870 $BondSymbol = '$';
|
|
3871
|
|
3872 @NbrAtomsSymbols = (['A'], ['A']);
|
|
3873 @NbrAtomsBondSymbols = (['!'], ['!']);
|
|
3874 return $This->_DetectBondNeighborhoodKeys($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, \@NbrAtomsSymbols, \@NbrAtomsBondSymbols);
|
|
3875 }
|
|
3876
|
|
3877 # Generate 322 keyset key 18 value as 1/0 indicating its presence/absence or
|
|
3878 # count of its presence in a molecule.
|
|
3879 #
|
|
3880 # Key 18 description: A%Anot%A%A - atom is at an aromatic/nonaromatic boundary.
|
|
3881 # When a comparison is done with another atom the path passes through
|
|
3882 # the nonaromatic bond
|
|
3883 #
|
|
3884 sub _Generate322KeySetKey18 {
|
|
3885 my($This) = @_;
|
|
3886 my($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, @NbrAtomsSymbols, @NbrAtomsBondSymbols);
|
|
3887
|
|
3888 ($BondAtomSymbol1, $BondAtomSymbol2) = ('A', 'A');
|
|
3889 $BondSymbol = 'not%';
|
|
3890
|
|
3891 @NbrAtomsSymbols = (['A'], ['A']);
|
|
3892 @NbrAtomsBondSymbols = (['%'], ['%']);
|
|
3893 return $This->_DetectBondNeighborhoodKeys($BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, \@NbrAtomsSymbols, \@NbrAtomsBondSymbols);
|
|
3894 }
|
|
3895
|
|
3896 # Generate 322 keyset key 19 value as 1/0 indicating its presence/absence or
|
|
3897 # count of its presence in a molecule.
|
|
3898 #
|
|
3899 # Key 19 description: HETEROCYCLE - atom is a heteroatom in a ring.
|
|
3900 #
|
|
3901 sub _Generate322KeySetKey19 {
|
|
3902 my($This) = @_;
|
|
3903 my($MinKeyCount, $IsInRing) = (undef, 1);
|
|
3904
|
|
3905 return $This->_DetectAtomKeys('Q', $MinKeyCount, $IsInRing);
|
|
3906 }
|
|
3907
|
|
3908 # Generate 322 keyset key 20 value as 1/0 indicating its presence/absence or
|
|
3909 # count of its presence in a molecule.
|
|
3910 #
|
|
3911 # Key 20 description: rare properties: atom with five or more neighbors, atom in four
|
|
3912 # or more rings, or atom types other than H, C, N, O, S, F, Cl, Br, or I
|
|
3913 #
|
|
3914 sub _Generate322KeySetKey20 {
|
|
3915 my($This) = @_;
|
|
3916 my($Atom, $KeyValue);
|
|
3917
|
|
3918 $KeyValue = 0;
|
|
3919 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
3920 if (!($Atom->GetAtomicNumber() !~ /^(1|6|7|8|9|16|17|35|53)$/) || ($Atom->GetNumOfRings() >= 4) || ($Atom->GetNumOfNeighbors() >= 5) ) {
|
|
3921 next ATOM;
|
|
3922 }
|
|
3923 $KeyValue++;
|
|
3924 if ($This->{KeyBits}) {
|
|
3925 $KeyValue = 1;
|
|
3926 last ATOM;
|
|
3927 }
|
|
3928 }
|
|
3929 return $KeyValue;
|
|
3930 }
|
|
3931
|
|
3932 # Generate 322 keyset key 21 value as 1/0 indicating its presence/absence or
|
|
3933 # count of its presence in a molecule.
|
|
3934 #
|
|
3935 # Key 21 description: rare properties: atom has a charge, is an isotope, has
|
|
3936 # two or more multiple bonds, or has a triple bond.
|
|
3937 #
|
|
3938 sub _Generate322KeySetKey21 {
|
|
3939 my($This) = @_;
|
|
3940 my($Atom, $KeyValue);
|
|
3941
|
|
3942 $KeyValue = 0;
|
|
3943 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
3944 if ( !($Atom->IsIsotope() || $Atom->GetFormalCharge()) ) {
|
|
3945 # Look for multiple and triple bonds...
|
|
3946 my($Bond, $NumOfTripleBonds, $NumOfMultipleBonds);
|
|
3947
|
|
3948 ($NumOfTripleBonds, $NumOfMultipleBonds) = (0, 0);
|
|
3949 BOND: for $Bond ($Atom->GetBonds()) {
|
|
3950 if ($Bond->IsSingle()) { next BOND; }
|
|
3951 if ($Bond->IsDouble()) { $NumOfMultipleBonds++; next BOND; }
|
|
3952 if ($Bond->IsTriple()) { $NumOfTripleBonds++; next BOND; }
|
|
3953 }
|
|
3954 if ( !($NumOfTripleBonds || ($NumOfMultipleBonds >= 2)) ) {
|
|
3955 next ATOM;
|
|
3956 }
|
|
3957 }
|
|
3958 $KeyValue++;
|
|
3959 if ($This->{KeyBits}) {
|
|
3960 $KeyValue = 1;
|
|
3961 last ATOM;
|
|
3962 }
|
|
3963 }
|
|
3964 return $KeyValue;
|
|
3965 }
|
|
3966
|
|
3967 # Generate 322 keyset key 22 value as 1/0 indicating its presence/absence or
|
|
3968 # count of its presence in a molecule.
|
|
3969 #
|
|
3970 # Key 22 description: N - nitrogen
|
|
3971 #
|
|
3972 sub _Generate322KeySetKey22 {
|
|
3973 my($This) = @_;
|
|
3974
|
|
3975 return $This->_DetectAtomKeys('N');
|
|
3976 }
|
|
3977
|
|
3978 # Generate 322 keyset key 23 value as 1/0 indicating its presence/absence or
|
|
3979 # count of its presence in a molecule.
|
|
3980 #
|
|
3981 # Key 23 description: S - sulfur
|
|
3982 #
|
|
3983 sub _Generate322KeySetKey23 {
|
|
3984 my($This) = @_;
|
|
3985
|
|
3986 return $This->_DetectAtomKeys('S');
|
|
3987 }
|
|
3988
|
|
3989 # Generate 322 keyset key 24 value as 1/0 indicating its presence/absence or
|
|
3990 # count of its presence in a molecule.
|
|
3991 #
|
|
3992 # Key 24 description: O - oxygen
|
|
3993 #
|
|
3994 sub _Generate322KeySetKey24 {
|
|
3995 my($This) = @_;
|
|
3996
|
|
3997 return $This->_DetectAtomKeys('O');
|
|
3998 }
|
|
3999
|
|
4000 # Generate 322 keyset key 25 value as 1/0 indicating its presence/absence or
|
|
4001 # count of its presence in a molecule.
|
|
4002 #
|
|
4003 # Key 25 description: A(AA)A(A)A(AA) - atom has two neighbors, each with
|
|
4004 # three or more neighbors (including the central atom).
|
|
4005 #
|
|
4006 sub _Generate322KeySetKey25 {
|
|
4007 my($This) = @_;
|
|
4008 my($MinKeyCount, @CentralAtomsSymbols, @NbrAtomsSymbols);
|
|
4009
|
|
4010 @CentralAtomsSymbols = ('A', 'A', 'A');
|
|
4011 @NbrAtomsSymbols = (['A', 'A'], ['A'], ['A', 'A']);
|
|
4012
|
|
4013 return $This->_DetectExtendedAtomNeighborhoodKeys(\@CentralAtomsSymbols, undef, undef, undef, \@NbrAtomsSymbols);
|
|
4014 }
|
|
4015
|
|
4016 # Generate 322 keyset key 26 value as 1/0 indicating its presence/absence or
|
|
4017 # count of its presence in a molecule.
|
|
4018 #
|
|
4019 # Key 26 description: CH2ACH2 - atom has two hydrocarbon (CH2) neighbors
|
|
4020 #
|
|
4021 sub _Generate322KeySetKey26 {
|
|
4022 my($This) = @_;
|
|
4023 my($CentralAtomSymbol, $CentralAtomMinHydrogenCount, $MinKeyCount, @NbrAtomSymbols, @NbrBondSymbols, @NbrAtomMinHydrogenCount);
|
|
4024
|
|
4025 $CentralAtomSymbol = 'A';
|
|
4026 $CentralAtomMinHydrogenCount = undef;
|
|
4027
|
|
4028 @NbrAtomSymbols = ('C', 'C');
|
|
4029 @NbrBondSymbols = (undef, undef);
|
|
4030 @NbrAtomMinHydrogenCount = (2, 2);
|
|
4031
|
|
4032 $MinKeyCount = undef;
|
|
4033
|
|
4034 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinKeyCount, $CentralAtomMinHydrogenCount, \@NbrAtomMinHydrogenCount);
|
|
4035 }
|
|
4036
|
|
4037 # Generate 322 keyset key 27 value as 1/0 indicating its presence/absence or
|
|
4038 # count of its presence in a molecule.
|
|
4039 #
|
|
4040 # Key 27 description: C(CC)
|
|
4041 #
|
|
4042 sub _Generate322KeySetKey27 {
|
|
4043 my($This) = @_;
|
|
4044 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4045
|
|
4046 $CentralAtomSymbol = 'C';
|
|
4047 @NbrAtomSymbols = ('C', 'C');
|
|
4048 @NbrBondSymbols = (undef, undef);
|
|
4049
|
|
4050 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4051 }
|
|
4052
|
|
4053 # Generate 322 keyset key 28 value as 1/0 indicating its presence/absence or
|
|
4054 # count of its presence in a molecule.
|
|
4055 #
|
|
4056 # Key 28 description: C(CCC)
|
|
4057 #
|
|
4058 sub _Generate322KeySetKey28 {
|
|
4059 my($This) = @_;
|
|
4060 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4061
|
|
4062 $CentralAtomSymbol = 'C';
|
|
4063 @NbrAtomSymbols = ('C', 'C', 'C');
|
|
4064 @NbrBondSymbols = (undef, undef, undef);
|
|
4065
|
|
4066 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4067 }
|
|
4068
|
|
4069 # Generate 322 keyset key 29 value as 1/0 indicating its presence/absence or
|
|
4070 # count of its presence in a molecule.
|
|
4071 #
|
|
4072 # Key 29 description: C(CN)
|
|
4073 #
|
|
4074 sub _Generate322KeySetKey29 {
|
|
4075 my($This) = @_;
|
|
4076 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4077
|
|
4078 $CentralAtomSymbol = 'C';
|
|
4079 @NbrAtomSymbols = ('C', 'N');
|
|
4080 @NbrBondSymbols = (undef, undef);
|
|
4081
|
|
4082 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4083 }
|
|
4084
|
|
4085 # Generate 322 keyset key 30 value as 1/0 indicating its presence/absence or
|
|
4086 # count of its presence in a molecule.
|
|
4087 #
|
|
4088 # Key 30 description: C(CCN)
|
|
4089 #
|
|
4090 sub _Generate322KeySetKey30 {
|
|
4091 my($This) = @_;
|
|
4092 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4093
|
|
4094 $CentralAtomSymbol = 'C';
|
|
4095 @NbrAtomSymbols = ('C', 'C', 'N');
|
|
4096 @NbrBondSymbols = (undef, undef, undef);
|
|
4097
|
|
4098 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4099 }
|
|
4100
|
|
4101 # Generate 322 keyset key 31 value as 1/0 indicating its presence/absence or
|
|
4102 # count of its presence in a molecule.
|
|
4103 #
|
|
4104 # Key 31 description: C(NN)
|
|
4105 #
|
|
4106 sub _Generate322KeySetKey31 {
|
|
4107 my($This) = @_;
|
|
4108 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4109
|
|
4110 $CentralAtomSymbol = 'C';
|
|
4111 @NbrAtomSymbols = ('N', 'N');
|
|
4112 @NbrBondSymbols = (undef, undef);
|
|
4113
|
|
4114 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4115 }
|
|
4116
|
|
4117 # Generate 322 keyset key 32 value as 1/0 indicating its presence/absence or
|
|
4118 # count of its presence in a molecule.
|
|
4119 #
|
|
4120 # Key 32 description: C(NNC)
|
|
4121 #
|
|
4122 sub _Generate322KeySetKey32 {
|
|
4123 my($This) = @_;
|
|
4124 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4125
|
|
4126 $CentralAtomSymbol = 'C';
|
|
4127 @NbrAtomSymbols = ('N', 'N', 'C');
|
|
4128 @NbrBondSymbols = (undef, undef, undef);
|
|
4129
|
|
4130 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4131 }
|
|
4132
|
|
4133 # Generate 322 keyset key 33 value as 1/0 indicating its presence/absence or
|
|
4134 # count of its presence in a molecule.
|
|
4135 #
|
|
4136 # Key 33 description: C(NNN)
|
|
4137 #
|
|
4138 sub _Generate322KeySetKey33 {
|
|
4139 my($This) = @_;
|
|
4140 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4141
|
|
4142 $CentralAtomSymbol = 'C';
|
|
4143 @NbrAtomSymbols = ('N', 'N', 'N');
|
|
4144 @NbrBondSymbols = (undef, undef, undef);
|
|
4145
|
|
4146 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4147 }
|
|
4148
|
|
4149 # Generate 322 keyset key 34 value as 1/0 indicating its presence/absence or
|
|
4150 # count of its presence in a molecule.
|
|
4151 #
|
|
4152 # Key 34 description: C(CO)
|
|
4153 #
|
|
4154 sub _Generate322KeySetKey34 {
|
|
4155 my($This) = @_;
|
|
4156 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4157
|
|
4158 $CentralAtomSymbol = 'C';
|
|
4159 @NbrAtomSymbols = ('C', 'O');
|
|
4160 @NbrBondSymbols = (undef, undef);
|
|
4161
|
|
4162 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4163 }
|
|
4164
|
|
4165 # Generate 322 keyset key 35 value as 1/0 indicating its presence/absence or
|
|
4166 # count of its presence in a molecule.
|
|
4167 #
|
|
4168 # Key 35 description: C(CCO)
|
|
4169 #
|
|
4170 sub _Generate322KeySetKey35 {
|
|
4171 my($This) = @_;
|
|
4172 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4173
|
|
4174 $CentralAtomSymbol = 'C';
|
|
4175 @NbrAtomSymbols = ('C', 'C', 'O');
|
|
4176 @NbrBondSymbols = (undef, undef, undef);
|
|
4177
|
|
4178 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4179 }
|
|
4180
|
|
4181 # Generate 322 keyset key 36 value as 1/0 indicating its presence/absence or
|
|
4182 # count of its presence in a molecule.
|
|
4183 #
|
|
4184 # Key 36 description: C(NO)
|
|
4185 #
|
|
4186 sub _Generate322KeySetKey36 {
|
|
4187 my($This) = @_;
|
|
4188 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4189
|
|
4190 $CentralAtomSymbol = 'C';
|
|
4191 @NbrAtomSymbols = ('N', 'O');
|
|
4192 @NbrBondSymbols = (undef, undef);
|
|
4193
|
|
4194 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4195 }
|
|
4196
|
|
4197 # Generate 322 keyset key 37 value as 1/0 indicating its presence/absence or
|
|
4198 # count of its presence in a molecule.
|
|
4199 #
|
|
4200 # Key 37 description: C(NCO)
|
|
4201 #
|
|
4202 sub _Generate322KeySetKey37 {
|
|
4203 my($This) = @_;
|
|
4204 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4205
|
|
4206 $CentralAtomSymbol = 'C';
|
|
4207 @NbrAtomSymbols = ('N', 'C', 'O');
|
|
4208 @NbrBondSymbols = (undef, undef, undef);
|
|
4209
|
|
4210 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4211 }
|
|
4212
|
|
4213 # Generate 322 keyset key 38 value as 1/0 indicating its presence/absence or
|
|
4214 # count of its presence in a molecule.
|
|
4215 #
|
|
4216 # Key 38 description: C(NNO)
|
|
4217 #
|
|
4218 sub _Generate322KeySetKey38 {
|
|
4219 my($This) = @_;
|
|
4220 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4221
|
|
4222 $CentralAtomSymbol = 'C';
|
|
4223 @NbrAtomSymbols = ('N', 'N', 'O');
|
|
4224 @NbrBondSymbols = (undef, undef, undef);
|
|
4225
|
|
4226 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4227 }
|
|
4228
|
|
4229 # Generate 322 keyset key 39 value as 1/0 indicating its presence/absence or
|
|
4230 # count of its presence in a molecule.
|
|
4231 #
|
|
4232 # Key 39 description: C(OO)
|
|
4233 #
|
|
4234 sub _Generate322KeySetKey39 {
|
|
4235 my($This) = @_;
|
|
4236 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4237
|
|
4238 $CentralAtomSymbol = 'C';
|
|
4239 @NbrAtomSymbols = ('O', 'O');
|
|
4240 @NbrBondSymbols = (undef, undef);
|
|
4241
|
|
4242 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4243 }
|
|
4244
|
|
4245 # Generate 322 keyset key 40 value as 1/0 indicating its presence/absence or
|
|
4246 # count of its presence in a molecule.
|
|
4247 #
|
|
4248 # Key 40 description: C(COO)
|
|
4249 #
|
|
4250 sub _Generate322KeySetKey40 {
|
|
4251 my($This) = @_;
|
|
4252 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4253
|
|
4254 $CentralAtomSymbol = 'C';
|
|
4255 @NbrAtomSymbols = ('C', 'O', 'O');
|
|
4256 @NbrBondSymbols = (undef, undef, undef);
|
|
4257
|
|
4258 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4259 }
|
|
4260
|
|
4261 # Generate 322 keyset key 41 value as 1/0 indicating its presence/absence or
|
|
4262 # count of its presence in a molecule.
|
|
4263 #
|
|
4264 # Key 41 description: C(NOO)
|
|
4265 #
|
|
4266 sub _Generate322KeySetKey41 {
|
|
4267 my($This) = @_;
|
|
4268 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4269
|
|
4270 $CentralAtomSymbol = 'C';
|
|
4271 @NbrAtomSymbols = ('N', 'O', 'O');
|
|
4272 @NbrBondSymbols = (undef, undef, undef);
|
|
4273
|
|
4274 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4275 }
|
|
4276
|
|
4277 # Generate 322 keyset key 42 value as 1/0 indicating its presence/absence or
|
|
4278 # count of its presence in a molecule.
|
|
4279 #
|
|
4280 # Key 42 description: C(OOO)
|
|
4281 #
|
|
4282 sub _Generate322KeySetKey42 {
|
|
4283 my($This) = @_;
|
|
4284 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4285
|
|
4286 $CentralAtomSymbol = 'C';
|
|
4287 @NbrAtomSymbols = ('O', 'O', 'O');
|
|
4288 @NbrBondSymbols = (undef, undef, undef);
|
|
4289
|
|
4290 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4291 }
|
|
4292
|
|
4293 # Generate 322 keyset key 43 value as 1/0 indicating its presence/absence or
|
|
4294 # count of its presence in a molecule.
|
|
4295 #
|
|
4296 # Key 43 description: Q(CC)
|
|
4297 #
|
|
4298 sub _Generate322KeySetKey43 {
|
|
4299 my($This) = @_;
|
|
4300 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4301
|
|
4302 $CentralAtomSymbol = 'Q';
|
|
4303 @NbrAtomSymbols = ('C', 'C');
|
|
4304 @NbrBondSymbols = (undef, undef);
|
|
4305
|
|
4306 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4307 }
|
|
4308
|
|
4309 # Generate 322 keyset key 44 value as 1/0 indicating its presence/absence or
|
|
4310 # count of its presence in a molecule.
|
|
4311 #
|
|
4312 # Key 44 description: Q(CCC)
|
|
4313 #
|
|
4314 sub _Generate322KeySetKey44 {
|
|
4315 my($This) = @_;
|
|
4316 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4317
|
|
4318 $CentralAtomSymbol = 'Q';
|
|
4319 @NbrAtomSymbols = ('C', 'C', 'C');
|
|
4320 @NbrBondSymbols = (undef, undef, undef);
|
|
4321
|
|
4322 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4323 }
|
|
4324
|
|
4325 # Generate 322 keyset key 45 value as 1/0 indicating its presence/absence or
|
|
4326 # count of its presence in a molecule.
|
|
4327 #
|
|
4328 # Key 45 description: Q(CN)
|
|
4329 #
|
|
4330 sub _Generate322KeySetKey45 {
|
|
4331 my($This) = @_;
|
|
4332 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4333
|
|
4334 $CentralAtomSymbol = 'Q';
|
|
4335 @NbrAtomSymbols = ('C', 'N');
|
|
4336 @NbrBondSymbols = (undef, undef);
|
|
4337
|
|
4338 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4339 }
|
|
4340
|
|
4341 # Generate 322 keyset key 46 value as 1/0 indicating its presence/absence or
|
|
4342 # count of its presence in a molecule.
|
|
4343 #
|
|
4344 # Key 46 description: Q(CCN)
|
|
4345 #
|
|
4346 sub _Generate322KeySetKey46 {
|
|
4347 my($This) = @_;
|
|
4348 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4349
|
|
4350 $CentralAtomSymbol = 'Q';
|
|
4351 @NbrAtomSymbols = ('C', 'C', 'N');
|
|
4352 @NbrBondSymbols = (undef, undef, undef);
|
|
4353
|
|
4354 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4355 }
|
|
4356
|
|
4357 # Generate 322 keyset key 47 value as 1/0 indicating its presence/absence or
|
|
4358 # count of its presence in a molecule.
|
|
4359 #
|
|
4360 # Key 47 description: Q(NN)
|
|
4361 #
|
|
4362 sub _Generate322KeySetKey47 {
|
|
4363 my($This) = @_;
|
|
4364 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4365
|
|
4366 $CentralAtomSymbol = 'Q';
|
|
4367 @NbrAtomSymbols = ('N', 'N');
|
|
4368 @NbrBondSymbols = (undef, undef);
|
|
4369
|
|
4370 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4371 }
|
|
4372
|
|
4373 # Generate 322 keyset key 48 value as 1/0 indicating its presence/absence or
|
|
4374 # count of its presence in a molecule.
|
|
4375 #
|
|
4376 # Key 48 description: Q(CNN)
|
|
4377 #
|
|
4378 sub _Generate322KeySetKey48 {
|
|
4379 my($This) = @_;
|
|
4380 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4381
|
|
4382 $CentralAtomSymbol = 'Q';
|
|
4383 @NbrAtomSymbols = ('C', 'N', 'N');
|
|
4384 @NbrBondSymbols = (undef, undef, undef);
|
|
4385
|
|
4386 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4387 }
|
|
4388
|
|
4389 # Generate 322 keyset key 49 value as 1/0 indicating its presence/absence or
|
|
4390 # count of its presence in a molecule.
|
|
4391 #
|
|
4392 # Key 49 description: Q(NNN)
|
|
4393 #
|
|
4394 sub _Generate322KeySetKey49 {
|
|
4395 my($This) = @_;
|
|
4396 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4397
|
|
4398 $CentralAtomSymbol = 'Q';
|
|
4399 @NbrAtomSymbols = ('N', 'N', 'N');
|
|
4400 @NbrBondSymbols = (undef, undef, undef);
|
|
4401
|
|
4402 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4403 }
|
|
4404
|
|
4405 # Generate 322 keyset key 50 value as 1/0 indicating its presence/absence or
|
|
4406 # count of its presence in a molecule.
|
|
4407 #
|
|
4408 # Key 50 description: Q(CO)
|
|
4409 #
|
|
4410 sub _Generate322KeySetKey50 {
|
|
4411 my($This) = @_;
|
|
4412 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4413
|
|
4414 $CentralAtomSymbol = 'Q';
|
|
4415 @NbrAtomSymbols = ('C', 'O');
|
|
4416 @NbrBondSymbols = (undef, undef);
|
|
4417
|
|
4418 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4419 }
|
|
4420
|
|
4421 # Generate 322 keyset key 51 value as 1/0 indicating its presence/absence or
|
|
4422 # count of its presence in a molecule.
|
|
4423 #
|
|
4424 # Key 51 description: Q(CCO)
|
|
4425 #
|
|
4426 sub _Generate322KeySetKey51 {
|
|
4427 my($This) = @_;
|
|
4428 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4429
|
|
4430 $CentralAtomSymbol = 'Q';
|
|
4431 @NbrAtomSymbols = ('C', 'C', 'O');
|
|
4432 @NbrBondSymbols = (undef, undef, undef);
|
|
4433
|
|
4434 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4435 }
|
|
4436
|
|
4437 # Generate 322 keyset key 52 value as 1/0 indicating its presence/absence or
|
|
4438 # count of its presence in a molecule.
|
|
4439 #
|
|
4440 # Key 52 description: Q(NO)
|
|
4441 #
|
|
4442 sub _Generate322KeySetKey52 {
|
|
4443 my($This) = @_;
|
|
4444 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4445
|
|
4446 $CentralAtomSymbol = 'Q';
|
|
4447 @NbrAtomSymbols = ('N', 'O');
|
|
4448 @NbrBondSymbols = (undef, undef);
|
|
4449
|
|
4450 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4451 }
|
|
4452
|
|
4453 # Generate 322 keyset key 53 value as 1/0 indicating its presence/absence or
|
|
4454 # count of its presence in a molecule.
|
|
4455 #
|
|
4456 # Key 53 description: Q(CNO)
|
|
4457 #
|
|
4458 sub _Generate322KeySetKey53 {
|
|
4459 my($This) = @_;
|
|
4460 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4461
|
|
4462 $CentralAtomSymbol = 'Q';
|
|
4463 @NbrAtomSymbols = ('C', 'N', 'O');
|
|
4464 @NbrBondSymbols = (undef, undef, undef);
|
|
4465
|
|
4466 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4467 }
|
|
4468
|
|
4469 # Generate 322 keyset key 54 value as 1/0 indicating its presence/absence or
|
|
4470 # count of its presence in a molecule.
|
|
4471 #
|
|
4472 # Key 54 description: Q(NNO)
|
|
4473 #
|
|
4474 sub _Generate322KeySetKey54 {
|
|
4475 my($This) = @_;
|
|
4476 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4477
|
|
4478 $CentralAtomSymbol = 'Q';
|
|
4479 @NbrAtomSymbols = ('N', 'N', 'O');
|
|
4480 @NbrBondSymbols = (undef, undef, undef);
|
|
4481
|
|
4482 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4483 }
|
|
4484
|
|
4485 # Generate 322 keyset key 55 value as 1/0 indicating its presence/absence or
|
|
4486 # count of its presence in a molecule.
|
|
4487 #
|
|
4488 # Key 55 description: Q(OO)
|
|
4489 #
|
|
4490 sub _Generate322KeySetKey55 {
|
|
4491 my($This) = @_;
|
|
4492 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4493
|
|
4494 $CentralAtomSymbol = 'Q';
|
|
4495 @NbrAtomSymbols = ('O', 'O');
|
|
4496 @NbrBondSymbols = (undef, undef);
|
|
4497
|
|
4498 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4499 }
|
|
4500
|
|
4501 # Generate 322 keyset key 56 value as 1/0 indicating its presence/absence or
|
|
4502 # count of its presence in a molecule.
|
|
4503 #
|
|
4504 # Key 56 description: Q(COO)
|
|
4505 #
|
|
4506 sub _Generate322KeySetKey56 {
|
|
4507 my($This) = @_;
|
|
4508 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4509
|
|
4510 $CentralAtomSymbol = 'Q';
|
|
4511 @NbrAtomSymbols = ('C', 'O', 'O');
|
|
4512 @NbrBondSymbols = (undef, undef, undef);
|
|
4513
|
|
4514 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4515 }
|
|
4516
|
|
4517 # Generate 322 keyset key 57 value as 1/0 indicating its presence/absence or
|
|
4518 # count of its presence in a molecule.
|
|
4519 #
|
|
4520 # Key 57 description: Q(NOO)
|
|
4521 #
|
|
4522 sub _Generate322KeySetKey57 {
|
|
4523 my($This) = @_;
|
|
4524 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4525
|
|
4526 $CentralAtomSymbol = 'Q';
|
|
4527 @NbrAtomSymbols = ('N', 'O', 'O');
|
|
4528 @NbrBondSymbols = (undef, undef, undef);
|
|
4529
|
|
4530 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4531 }
|
|
4532
|
|
4533 # Generate 322 keyset key 58 value as 1/0 indicating its presence/absence or
|
|
4534 # count of its presence in a molecule.
|
|
4535 #
|
|
4536 # Key 58 description: Q(OOO)
|
|
4537 #
|
|
4538 sub _Generate322KeySetKey58 {
|
|
4539 my($This) = @_;
|
|
4540 my($CentralAtomSymbol, @NbrAtomSymbols, @NbrBondSymbols);
|
|
4541
|
|
4542 $CentralAtomSymbol = 'Q';
|
|
4543 @NbrAtomSymbols = ('O', 'O', 'O');
|
|
4544 @NbrBondSymbols = (undef, undef, undef);
|
|
4545
|
|
4546 return $This->_DetectAtomNeighborhoodKeys($CentralAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols);
|
|
4547 }
|
|
4548
|
|
4549 # Generate 322 keyset key 59 value as 1/0 indicating its presence/absence or
|
|
4550 # count of its presence in a molecule.
|
|
4551 #
|
|
4552 # Key 59 description: C-C
|
|
4553 #
|
|
4554 sub _Generate322KeySetKey59 {
|
|
4555 my($This) = @_;
|
|
4556 my($BondSymbol) = '-';
|
|
4557
|
|
4558 return $This->_DetectBondKeys('C', 'C', $BondSymbol);
|
|
4559 }
|
|
4560
|
|
4561 # Generate 322 keyset key 60 value as 1/0 indicating its presence/absence or
|
|
4562 # count of its presence in a molecule.
|
|
4563 #
|
|
4564 # Key 60 description: C-N
|
|
4565 #
|
|
4566 sub _Generate322KeySetKey60 {
|
|
4567 my($This) = @_;
|
|
4568 my($BondSymbol) = '-';
|
|
4569
|
|
4570 return $This->_DetectBondKeys('C', 'N', $BondSymbol);
|
|
4571 }
|
|
4572
|
|
4573 # Generate 322 keyset key 61 value as 1/0 indicating its presence/absence or
|
|
4574 # count of its presence in a molecule.
|
|
4575 #
|
|
4576 # Key 61 description: C-O
|
|
4577 #
|
|
4578 sub _Generate322KeySetKey61 {
|
|
4579 my($This) = @_;
|
|
4580 my($BondSymbol) = '-';
|
|
4581
|
|
4582 return $This->_DetectBondKeys('C', 'O', $BondSymbol);
|
|
4583 }
|
|
4584
|
|
4585 # Generate 322 keyset key 62 value as 1/0 indicating its presence/absence or
|
|
4586 # count of its presence in a molecule.
|
|
4587 #
|
|
4588 # Key 62 description: C-S
|
|
4589 #
|
|
4590 sub _Generate322KeySetKey62 {
|
|
4591 my($This) = @_;
|
|
4592 my($BondSymbol) = '-';
|
|
4593
|
|
4594 return $This->_DetectBondKeys('C', 'S', $BondSymbol);
|
|
4595 }
|
|
4596
|
|
4597 # Generate 322 keyset key 63 value as 1/0 indicating its presence/absence or
|
|
4598 # count of its presence in a molecule.
|
|
4599 #
|
|
4600 # Key 63 description: C-Cl
|
|
4601 #
|
|
4602 sub _Generate322KeySetKey63 {
|
|
4603 my($This) = @_;
|
|
4604 my($BondSymbol) = '-';
|
|
4605
|
|
4606 return $This->_DetectBondKeys('C', 'Cl', $BondSymbol);
|
|
4607 }
|
|
4608
|
|
4609 # Generate 322 keyset key 64 value as 1/0 indicating its presence/absence or
|
|
4610 # count of its presence in a molecule.
|
|
4611 #
|
|
4612 # Key 64 description: C-P
|
|
4613 #
|
|
4614 sub _Generate322KeySetKey64 {
|
|
4615 my($This) = @_;
|
|
4616 my($BondSymbol) = '-';
|
|
4617
|
|
4618 return $This->_DetectBondKeys('C', 'P', $BondSymbol);
|
|
4619 }
|
|
4620
|
|
4621 # Generate 322 keyset key 65 value as 1/0 indicating its presence/absence or
|
|
4622 # count of its presence in a molecule.
|
|
4623 #
|
|
4624 # Key 65 description: C-F
|
|
4625 #
|
|
4626 sub _Generate322KeySetKey65 {
|
|
4627 my($This) = @_;
|
|
4628 my($BondSymbol) = '-';
|
|
4629
|
|
4630 return $This->_DetectBondKeys('C', 'F', $BondSymbol);
|
|
4631 }
|
|
4632
|
|
4633 # Generate 322 keyset key 66 value as 1/0 indicating its presence/absence or
|
|
4634 # count of its presence in a molecule.
|
|
4635 #
|
|
4636 # Key 66 description: C-Br
|
|
4637 #
|
|
4638 sub _Generate322KeySetKey66 {
|
|
4639 my($This) = @_;
|
|
4640 my($BondSymbol) = '-';
|
|
4641
|
|
4642 return $This->_DetectBondKeys('C', 'Br', $BondSymbol);
|
|
4643 }
|
|
4644
|
|
4645 # Generate 322 keyset key 67 value as 1/0 indicating its presence/absence or
|
|
4646 # count of its presence in a molecule.
|
|
4647 #
|
|
4648 # Key 67 description: C-Si
|
|
4649 #
|
|
4650 sub _Generate322KeySetKey67 {
|
|
4651 my($This) = @_;
|
|
4652 my($BondSymbol) = '-';
|
|
4653
|
|
4654 return $This->_DetectBondKeys('C', 'Si', $BondSymbol);
|
|
4655 }
|
|
4656
|
|
4657 # Generate 322 keyset key 68 value as 1/0 indicating its presence/absence or
|
|
4658 # count of its presence in a molecule.
|
|
4659 #
|
|
4660 # Key 68 description: C-I
|
|
4661 #
|
|
4662 sub _Generate322KeySetKey68 {
|
|
4663 my($This) = @_;
|
|
4664 my($BondSymbol) = '-';
|
|
4665
|
|
4666 return $This->_DetectBondKeys('C', 'I', $BondSymbol);
|
|
4667 }
|
|
4668
|
|
4669 # Generate 322 keyset key 69 value as 1/0 indicating its presence/absence or
|
|
4670 # count of its presence in a molecule.
|
|
4671 #
|
|
4672 # Key 69 description: C-X
|
|
4673 #
|
|
4674 sub _Generate322KeySetKey69 {
|
|
4675 my($This) = @_;
|
|
4676 my($BondSymbol) = '-';
|
|
4677
|
|
4678 return $This->_DetectBondKeys('C', 'Z', $BondSymbol);
|
|
4679 }
|
|
4680
|
|
4681 # Generate 322 keyset key 70 value as 1/0 indicating its presence/absence or
|
|
4682 # count of its presence in a molecule.
|
|
4683 #
|
|
4684 # Key 70 description: N-N
|
|
4685 #
|
|
4686 sub _Generate322KeySetKey70 {
|
|
4687 my($This) = @_;
|
|
4688 my($BondSymbol) = '-';
|
|
4689
|
|
4690 return $This->_DetectBondKeys('N', 'N', $BondSymbol);
|
|
4691 }
|
|
4692
|
|
4693 # Generate 322 keyset key 71 value as 1/0 indicating its presence/absence or
|
|
4694 # count of its presence in a molecule.
|
|
4695 #
|
|
4696 # Key 71 description: N-O
|
|
4697 #
|
|
4698 sub _Generate322KeySetKey71 {
|
|
4699 my($This) = @_;
|
|
4700 my($BondSymbol) = '-';
|
|
4701
|
|
4702 return $This->_DetectBondKeys('N', 'O', $BondSymbol);
|
|
4703 }
|
|
4704
|
|
4705 # Generate 322 keyset key 72 value as 1/0 indicating its presence/absence or
|
|
4706 # count of its presence in a molecule.
|
|
4707 #
|
|
4708 # Key 72 description: N-S
|
|
4709 #
|
|
4710 sub _Generate322KeySetKey72 {
|
|
4711 my($This) = @_;
|
|
4712 my($BondSymbol) = '-';
|
|
4713
|
|
4714 return $This->_DetectBondKeys('N', 'S', $BondSymbol);
|
|
4715 }
|
|
4716
|
|
4717 # Generate 322 keyset key 73 value as 1/0 indicating its presence/absence or
|
|
4718 # count of its presence in a molecule.
|
|
4719 #
|
|
4720 # Key 73 description: N-Cl
|
|
4721 #
|
|
4722 sub _Generate322KeySetKey73 {
|
|
4723 my($This) = @_;
|
|
4724 my($BondSymbol) = '-';
|
|
4725
|
|
4726 return $This->_DetectBondKeys('N', 'Cl', $BondSymbol);
|
|
4727 }
|
|
4728
|
|
4729 # Generate 322 keyset key 74 value as 1/0 indicating its presence/absence or
|
|
4730 # count of its presence in a molecule.
|
|
4731 #
|
|
4732 # Key 74 description: N-P
|
|
4733 #
|
|
4734 sub _Generate322KeySetKey74 {
|
|
4735 my($This) = @_;
|
|
4736 my($BondSymbol) = '-';
|
|
4737
|
|
4738 return $This->_DetectBondKeys('N', 'P', $BondSymbol);
|
|
4739 }
|
|
4740
|
|
4741 # Generate 322 keyset key 75 value as 1/0 indicating its presence/absence or
|
|
4742 # count of its presence in a molecule.
|
|
4743 #
|
|
4744 # Key 75 description: N-F
|
|
4745 #
|
|
4746 sub _Generate322KeySetKey75 {
|
|
4747 my($This) = @_;
|
|
4748 my($BondSymbol) = '-';
|
|
4749
|
|
4750 return $This->_DetectBondKeys('N', 'F', $BondSymbol);
|
|
4751 }
|
|
4752
|
|
4753 # Generate 322 keyset key 76 value as 1/0 indicating its presence/absence or
|
|
4754 # count of its presence in a molecule.
|
|
4755 #
|
|
4756 # Key 76 description: N-Br
|
|
4757 #
|
|
4758 sub _Generate322KeySetKey76 {
|
|
4759 my($This) = @_;
|
|
4760 my($BondSymbol) = '-';
|
|
4761
|
|
4762 return $This->_DetectBondKeys('N', 'Br', $BondSymbol);
|
|
4763 }
|
|
4764
|
|
4765 # Generate 322 keyset key 77 value as 1/0 indicating its presence/absence or
|
|
4766 # count of its presence in a molecule.
|
|
4767 #
|
|
4768 # Key 77 description: N-Si
|
|
4769 #
|
|
4770 sub _Generate322KeySetKey77 {
|
|
4771 my($This) = @_;
|
|
4772 my($BondSymbol) = '-';
|
|
4773
|
|
4774 return $This->_DetectBondKeys('N', 'Si', $BondSymbol);
|
|
4775 }
|
|
4776
|
|
4777 # Generate 322 keyset key 78 value as 1/0 indicating its presence/absence or
|
|
4778 # count of its presence in a molecule.
|
|
4779 #
|
|
4780 # Key 78 description: N-I
|
|
4781 #
|
|
4782 sub _Generate322KeySetKey78 {
|
|
4783 my($This) = @_;
|
|
4784 my($BondSymbol) = '-';
|
|
4785
|
|
4786 return $This->_DetectBondKeys('N', 'I', $BondSymbol);
|
|
4787 }
|
|
4788
|
|
4789 # Generate 322 keyset key 79 value as 1/0 indicating its presence/absence or
|
|
4790 # count of its presence in a molecule.
|
|
4791 #
|
|
4792 # Key 79 description: N-X
|
|
4793 #
|
|
4794 sub _Generate322KeySetKey79 {
|
|
4795 my($This) = @_;
|
|
4796 my($BondSymbol) = '-';
|
|
4797
|
|
4798 return $This->_DetectBondKeys('N', 'Z', $BondSymbol);
|
|
4799 }
|
|
4800
|
|
4801 # Generate 322 keyset key 80 value as 1/0 indicating its presence/absence or
|
|
4802 # count of its presence in a molecule.
|
|
4803 #
|
|
4804 # Key 80 description: O-O
|
|
4805 #
|
|
4806 sub _Generate322KeySetKey80 {
|
|
4807 my($This) = @_;
|
|
4808 my($BondSymbol) = '-';
|
|
4809
|
|
4810 return $This->_DetectBondKeys('O', 'O', $BondSymbol);
|
|
4811 }
|
|
4812
|
|
4813 # Generate 322 keyset key 81 value as 1/0 indicating its presence/absence or
|
|
4814 # count of its presence in a molecule.
|
|
4815 #
|
|
4816 # Key 81 description: O-S
|
|
4817 #
|
|
4818 sub _Generate322KeySetKey81 {
|
|
4819 my($This) = @_;
|
|
4820 my($BondSymbol) = '-';
|
|
4821
|
|
4822 return $This->_DetectBondKeys('O', 'S', $BondSymbol);
|
|
4823 }
|
|
4824
|
|
4825 # Generate 322 keyset key 82 value as 1/0 indicating its presence/absence or
|
|
4826 # count of its presence in a molecule.
|
|
4827 #
|
|
4828 # Key 82 description: O-Cl
|
|
4829 #
|
|
4830 sub _Generate322KeySetKey82 {
|
|
4831 my($This) = @_;
|
|
4832 my($BondSymbol) = '-';
|
|
4833
|
|
4834 return $This->_DetectBondKeys('O', 'Cl', $BondSymbol);
|
|
4835 }
|
|
4836
|
|
4837 # Generate 322 keyset key 83 value as 1/0 indicating its presence/absence or
|
|
4838 # count of its presence in a molecule.
|
|
4839 #
|
|
4840 # Key 83 description: O-P
|
|
4841 #
|
|
4842 sub _Generate322KeySetKey83 {
|
|
4843 my($This) = @_;
|
|
4844 my($BondSymbol) = '-';
|
|
4845
|
|
4846 return $This->_DetectBondKeys('O', 'P', $BondSymbol);
|
|
4847 }
|
|
4848
|
|
4849 # Generate 322 keyset key 84 value as 1/0 indicating its presence/absence or
|
|
4850 # count of its presence in a molecule.
|
|
4851 #
|
|
4852 # Key 84 description: O-F
|
|
4853 #
|
|
4854 sub _Generate322KeySetKey84 {
|
|
4855 my($This) = @_;
|
|
4856 my($BondSymbol) = '-';
|
|
4857
|
|
4858 return $This->_DetectBondKeys('O', 'F', $BondSymbol);
|
|
4859 }
|
|
4860
|
|
4861 # Generate 322 keyset key 85 value as 1/0 indicating its presence/absence or
|
|
4862 # count of its presence in a molecule.
|
|
4863 #
|
|
4864 # Key 85 description: O-Br
|
|
4865 #
|
|
4866 sub _Generate322KeySetKey85 {
|
|
4867 my($This) = @_;
|
|
4868 my($BondSymbol) = '-';
|
|
4869
|
|
4870 return $This->_DetectBondKeys('O', 'Br', $BondSymbol);
|
|
4871 }
|
|
4872
|
|
4873 # Generate 322 keyset key 86 value as 1/0 indicating its presence/absence or
|
|
4874 # count of its presence in a molecule.
|
|
4875 #
|
|
4876 # Key 86 description: O-Si
|
|
4877 #
|
|
4878 sub _Generate322KeySetKey86 {
|
|
4879 my($This) = @_;
|
|
4880 my($BondSymbol) = '-';
|
|
4881
|
|
4882 return $This->_DetectBondKeys('O', 'Si', $BondSymbol);
|
|
4883 }
|
|
4884
|
|
4885 # Generate 322 keyset key 87 value as 1/0 indicating its presence/absence or
|
|
4886 # count of its presence in a molecule.
|
|
4887 #
|
|
4888 # Key 87 description: O-I
|
|
4889 #
|
|
4890 sub _Generate322KeySetKey87 {
|
|
4891 my($This) = @_;
|
|
4892 my($BondSymbol) = '-';
|
|
4893
|
|
4894 return $This->_DetectBondKeys('O', 'I', $BondSymbol);
|
|
4895 }
|
|
4896
|
|
4897 # Generate 322 keyset key 88 value as 1/0 indicating its presence/absence or
|
|
4898 # count of its presence in a molecule.
|
|
4899 #
|
|
4900 # Key 88 description: O-X
|
|
4901 #
|
|
4902 sub _Generate322KeySetKey88 {
|
|
4903 my($This) = @_;
|
|
4904 my($BondSymbol) = '-';
|
|
4905
|
|
4906 return $This->_DetectBondKeys('O', 'Z', $BondSymbol);
|
|
4907 }
|
|
4908
|
|
4909 # Generate 322 keyset key 89 value as 1/0 indicating its presence/absence or
|
|
4910 # count of its presence in a molecule.
|
|
4911 #
|
|
4912 # Key 89 description: S-S
|
|
4913 #
|
|
4914 sub _Generate322KeySetKey89 {
|
|
4915 my($This) = @_;
|
|
4916 my($BondSymbol) = '-';
|
|
4917
|
|
4918 return $This->_DetectBondKeys('S', 'S', $BondSymbol);
|
|
4919 }
|
|
4920
|
|
4921 # Generate 322 keyset key 90 value as 1/0 indicating its presence/absence or
|
|
4922 # count of its presence in a molecule.
|
|
4923 #
|
|
4924 # Key 90 description: S-Cl
|
|
4925 #
|
|
4926 sub _Generate322KeySetKey90 {
|
|
4927 my($This) = @_;
|
|
4928 my($BondSymbol) = '-';
|
|
4929
|
|
4930 return $This->_DetectBondKeys('S', 'Cl', $BondSymbol);
|
|
4931 }
|
|
4932
|
|
4933 # Generate 322 keyset key 91 value as 1/0 indicating its presence/absence or
|
|
4934 # count of its presence in a molecule.
|
|
4935 #
|
|
4936 # Key 91 description: S-P
|
|
4937 #
|
|
4938 sub _Generate322KeySetKey91 {
|
|
4939 my($This) = @_;
|
|
4940 my($BondSymbol) = '-';
|
|
4941
|
|
4942 return $This->_DetectBondKeys('S', 'P', $BondSymbol);
|
|
4943 }
|
|
4944
|
|
4945 # Generate 322 keyset key 92 value as 1/0 indicating its presence/absence or
|
|
4946 # count of its presence in a molecule.
|
|
4947 #
|
|
4948 # Key 92 description: S-F
|
|
4949 #
|
|
4950 sub _Generate322KeySetKey92 {
|
|
4951 my($This) = @_;
|
|
4952 my($BondSymbol) = '-';
|
|
4953
|
|
4954 return $This->_DetectBondKeys('S', 'F', $BondSymbol);
|
|
4955 }
|
|
4956
|
|
4957 # Generate 322 keyset key 93 value as 1/0 indicating its presence/absence or
|
|
4958 # count of its presence in a molecule.
|
|
4959 #
|
|
4960 # Key 93 description: S-Br
|
|
4961 #
|
|
4962 sub _Generate322KeySetKey93 {
|
|
4963 my($This) = @_;
|
|
4964 my($BondSymbol) = '-';
|
|
4965
|
|
4966 return $This->_DetectBondKeys('S', 'Br', $BondSymbol);
|
|
4967 }
|
|
4968
|
|
4969 # Generate 322 keyset key 94 value as 1/0 indicating its presence/absence or
|
|
4970 # count of its presence in a molecule.
|
|
4971 #
|
|
4972 # Key 94 description: S-Si
|
|
4973 #
|
|
4974 sub _Generate322KeySetKey94 {
|
|
4975 my($This) = @_;
|
|
4976 my($BondSymbol) = '-';
|
|
4977
|
|
4978 return $This->_DetectBondKeys('S', 'Si', $BondSymbol);
|
|
4979 }
|
|
4980
|
|
4981 # Generate 322 keyset key 95 value as 1/0 indicating its presence/absence or
|
|
4982 # count of its presence in a molecule.
|
|
4983 #
|
|
4984 # Key 95 description: S-I
|
|
4985 #
|
|
4986 sub _Generate322KeySetKey95 {
|
|
4987 my($This) = @_;
|
|
4988 my($BondSymbol) = '-';
|
|
4989
|
|
4990 return $This->_DetectBondKeys('S', 'I', $BondSymbol);
|
|
4991 }
|
|
4992
|
|
4993 # Generate 322 keyset key 96 value as 1/0 indicating its presence/absence or
|
|
4994 # count of its presence in a molecule.
|
|
4995 #
|
|
4996 # Key 96 description: S-X
|
|
4997 #
|
|
4998 sub _Generate322KeySetKey96 {
|
|
4999 my($This) = @_;
|
|
5000 my($BondSymbol) = '-';
|
|
5001
|
|
5002 return $This->_DetectBondKeys('S', 'Z', $BondSymbol);
|
|
5003 }
|
|
5004
|
|
5005 # Generate 322 keyset key 97 value as 1/0 indicating its presence/absence or
|
|
5006 # count of its presence in a molecule.
|
|
5007 #
|
|
5008 # Key 97 description: Cl-Cl
|
|
5009 #
|
|
5010 sub _Generate322KeySetKey97 {
|
|
5011 my($This) = @_;
|
|
5012 my($BondSymbol) = '-';
|
|
5013
|
|
5014 return $This->_DetectBondKeys('Cl', 'Cl', $BondSymbol);
|
|
5015 }
|
|
5016
|
|
5017 # Generate 322 keyset key 98 value as 1/0 indicating its presence/absence or
|
|
5018 # count of its presence in a molecule.
|
|
5019 #
|
|
5020 # Key 98 description: Cl-P
|
|
5021 #
|
|
5022 sub _Generate322KeySetKey98 {
|
|
5023 my($This) = @_;
|
|
5024 my($BondSymbol) = '-';
|
|
5025
|
|
5026 return $This->_DetectBondKeys('Cl', 'P', $BondSymbol);
|
|
5027 }
|
|
5028
|
|
5029 # Generate 322 keyset key 99 value as 1/0 indicating its presence/absence or
|
|
5030 # count of its presence in a molecule.
|
|
5031 #
|
|
5032 # Key 99 description: Cl-F
|
|
5033 #
|
|
5034 sub _Generate322KeySetKey99 {
|
|
5035 my($This) = @_;
|
|
5036 my($BondSymbol) = '-';
|
|
5037
|
|
5038 return $This->_DetectBondKeys('Cl', 'F', $BondSymbol);
|
|
5039 }
|
|
5040
|
|
5041 # Generate 322 keyset key 100 value as 1/0 indicating its presence/absence or
|
|
5042 # count of its presence in a molecule.
|
|
5043 #
|
|
5044 # Key 100 description: Cl-Br
|
|
5045 #
|
|
5046 sub _Generate322KeySetKey100 {
|
|
5047 my($This) = @_;
|
|
5048 my($BondSymbol) = '-';
|
|
5049
|
|
5050 return $This->_DetectBondKeys('Cl', 'Br', $BondSymbol);
|
|
5051 }
|
|
5052
|
|
5053 # Generate 322 keyset key 101 value as 1/0 indicating its presence/absence or
|
|
5054 # count of its presence in a molecule.
|
|
5055 #
|
|
5056 # Key 101 description: Cl-Si
|
|
5057 #
|
|
5058 sub _Generate322KeySetKey101 {
|
|
5059 my($This) = @_;
|
|
5060 my($BondSymbol) = '-';
|
|
5061
|
|
5062 return $This->_DetectBondKeys('Cl', 'Si', $BondSymbol);
|
|
5063 }
|
|
5064
|
|
5065 # Generate 322 keyset key 102 value as 1/0 indicating its presence/absence or
|
|
5066 # count of its presence in a molecule.
|
|
5067 #
|
|
5068 # Key 102 description: Cl-I
|
|
5069 #
|
|
5070 sub _Generate322KeySetKey102 {
|
|
5071 my($This) = @_;
|
|
5072 my($BondSymbol) = '-';
|
|
5073
|
|
5074 return $This->_DetectBondKeys('Cl', 'I', $BondSymbol);
|
|
5075 }
|
|
5076
|
|
5077 # Generate 322 keyset key 103 value as 1/0 indicating its presence/absence or
|
|
5078 # count of its presence in a molecule.
|
|
5079 #
|
|
5080 # Key 103 description: Cl-X
|
|
5081 #
|
|
5082 sub _Generate322KeySetKey103 {
|
|
5083 my($This) = @_;
|
|
5084 my($BondSymbol) = '-';
|
|
5085
|
|
5086 return $This->_DetectBondKeys('Cl', 'Z', $BondSymbol);
|
|
5087 }
|
|
5088
|
|
5089 # Generate 322 keyset key 104 value as 1/0 indicating its presence/absence or
|
|
5090 # count of its presence in a molecule.
|
|
5091 #
|
|
5092 # Key 104 description: P-P
|
|
5093 #
|
|
5094 sub _Generate322KeySetKey104 {
|
|
5095 my($This) = @_;
|
|
5096 my($BondSymbol) = '-';
|
|
5097
|
|
5098 return $This->_DetectBondKeys('P', 'P', $BondSymbol);
|
|
5099 }
|
|
5100
|
|
5101 # Generate 322 keyset key 105 value as 1/0 indicating its presence/absence or
|
|
5102 # count of its presence in a molecule.
|
|
5103 #
|
|
5104 # Key 105 description: P-F
|
|
5105 #
|
|
5106 sub _Generate322KeySetKey105 {
|
|
5107 my($This) = @_;
|
|
5108 my($BondSymbol) = '-';
|
|
5109
|
|
5110 return $This->_DetectBondKeys('P', 'F', $BondSymbol);
|
|
5111 }
|
|
5112
|
|
5113 # Generate 322 keyset key 106 value as 1/0 indicating its presence/absence or
|
|
5114 # count of its presence in a molecule.
|
|
5115 #
|
|
5116 # Key 106 description: P-Br
|
|
5117 #
|
|
5118 sub _Generate322KeySetKey106 {
|
|
5119 my($This) = @_;
|
|
5120 my($BondSymbol) = '-';
|
|
5121
|
|
5122 return $This->_DetectBondKeys('P', 'Br', $BondSymbol);
|
|
5123 }
|
|
5124
|
|
5125 # Generate 322 keyset key 107 value as 1/0 indicating its presence/absence or
|
|
5126 # count of its presence in a molecule.
|
|
5127 #
|
|
5128 # Key 107 description: P-Si
|
|
5129 #
|
|
5130 sub _Generate322KeySetKey107 {
|
|
5131 my($This) = @_;
|
|
5132 my($BondSymbol) = '-';
|
|
5133
|
|
5134 return $This->_DetectBondKeys('P', 'Si', $BondSymbol);
|
|
5135 }
|
|
5136
|
|
5137 # Generate 322 keyset key 108 value as 1/0 indicating its presence/absence or
|
|
5138 # count of its presence in a molecule.
|
|
5139 #
|
|
5140 # Key 108 description: P-I
|
|
5141 #
|
|
5142 sub _Generate322KeySetKey108 {
|
|
5143 my($This) = @_;
|
|
5144 my($BondSymbol) = '-';
|
|
5145
|
|
5146 return $This->_DetectBondKeys('P', 'I', $BondSymbol);
|
|
5147 }
|
|
5148
|
|
5149 # Generate 322 keyset key 109 value as 1/0 indicating its presence/absence or
|
|
5150 # count of its presence in a molecule.
|
|
5151 #
|
|
5152 # Key 109 description: P-X
|
|
5153 #
|
|
5154 sub _Generate322KeySetKey109 {
|
|
5155 my($This) = @_;
|
|
5156 my($BondSymbol) = '-';
|
|
5157
|
|
5158 return $This->_DetectBondKeys('P', 'Z', $BondSymbol);
|
|
5159 }
|
|
5160
|
|
5161 # Generate 322 keyset key 110 value as 1/0 indicating its presence/absence or
|
|
5162 # count of its presence in a molecule.
|
|
5163 #
|
|
5164 # Key 110 description: F-F
|
|
5165 #
|
|
5166 sub _Generate322KeySetKey110 {
|
|
5167 my($This) = @_;
|
|
5168 my($BondSymbol) = '-';
|
|
5169
|
|
5170 return $This->_DetectBondKeys('F', 'F', $BondSymbol);
|
|
5171 }
|
|
5172
|
|
5173 # Generate 322 keyset key 111 value as 1/0 indicating its presence/absence or
|
|
5174 # count of its presence in a molecule.
|
|
5175 #
|
|
5176 # Key 111 description: F-Br
|
|
5177 #
|
|
5178 sub _Generate322KeySetKey111 {
|
|
5179 my($This) = @_;
|
|
5180 my($BondSymbol) = '-';
|
|
5181
|
|
5182 return $This->_DetectBondKeys('F', 'Br', $BondSymbol);
|
|
5183 }
|
|
5184
|
|
5185 # Generate 322 keyset key 112 value as 1/0 indicating its presence/absence or
|
|
5186 # count of its presence in a molecule.
|
|
5187 #
|
|
5188 # Key 112 description: F-Si
|
|
5189 #
|
|
5190 sub _Generate322KeySetKey112 {
|
|
5191 my($This) = @_;
|
|
5192 my($BondSymbol) = '-';
|
|
5193
|
|
5194 return $This->_DetectBondKeys('F', 'Si', $BondSymbol);
|
|
5195 }
|
|
5196
|
|
5197 # Generate 322 keyset key 113 value as 1/0 indicating its presence/absence or
|
|
5198 # count of its presence in a molecule.
|
|
5199 #
|
|
5200 # Key 113 description: F-I
|
|
5201 #
|
|
5202 sub _Generate322KeySetKey113 {
|
|
5203 my($This) = @_;
|
|
5204 my($BondSymbol) = '-';
|
|
5205
|
|
5206 return $This->_DetectBondKeys('F', 'I', $BondSymbol);
|
|
5207 }
|
|
5208
|
|
5209 # Generate 322 keyset key 114 value as 1/0 indicating its presence/absence or
|
|
5210 # count of its presence in a molecule.
|
|
5211 #
|
|
5212 # Key 114 description: F-X
|
|
5213 #
|
|
5214 sub _Generate322KeySetKey114 {
|
|
5215 my($This) = @_;
|
|
5216 my($BondSymbol) = '-';
|
|
5217
|
|
5218 return $This->_DetectBondKeys('F', 'Z', $BondSymbol);
|
|
5219 }
|
|
5220
|
|
5221 # Generate 322 keyset key 115 value as 1/0 indicating its presence/absence or
|
|
5222 # count of its presence in a molecule.
|
|
5223 #
|
|
5224 # Key 115 description: Br-Br
|
|
5225 #
|
|
5226 sub _Generate322KeySetKey115 {
|
|
5227 my($This) = @_;
|
|
5228 my($BondSymbol) = '-';
|
|
5229
|
|
5230 return $This->_DetectBondKeys('Br', 'Br', $BondSymbol);
|
|
5231 }
|
|
5232
|
|
5233 # Generate 322 keyset key 116 value as 1/0 indicating its presence/absence or
|
|
5234 # count of its presence in a molecule.
|
|
5235 #
|
|
5236 # Key 116 description: Br-Si
|
|
5237 #
|
|
5238 sub _Generate322KeySetKey116 {
|
|
5239 my($This) = @_;
|
|
5240 my($BondSymbol) = '-';
|
|
5241
|
|
5242 return $This->_DetectBondKeys('Br', 'Si', $BondSymbol);
|
|
5243 }
|
|
5244
|
|
5245 # Generate 322 keyset key 117 value as 1/0 indicating its presence/absence or
|
|
5246 # count of its presence in a molecule.
|
|
5247 #
|
|
5248 # Key 117 description: Br-I
|
|
5249 #
|
|
5250 sub _Generate322KeySetKey117 {
|
|
5251 my($This) = @_;
|
|
5252 my($BondSymbol) = '-';
|
|
5253
|
|
5254 return $This->_DetectBondKeys('Br', 'I', $BondSymbol);
|
|
5255 }
|
|
5256
|
|
5257 # Generate 322 keyset key 118 value as 1/0 indicating its presence/absence or
|
|
5258 # count of its presence in a molecule.
|
|
5259 #
|
|
5260 # Key 118 description: Br-X
|
|
5261 #
|
|
5262 sub _Generate322KeySetKey118 {
|
|
5263 my($This) = @_;
|
|
5264 my($BondSymbol) = '-';
|
|
5265
|
|
5266 return $This->_DetectBondKeys('Br', 'Z', $BondSymbol);
|
|
5267 }
|
|
5268
|
|
5269 # Generate 322 keyset key 119 value as 1/0 indicating its presence/absence or
|
|
5270 # count of its presence in a molecule.
|
|
5271 #
|
|
5272 # Key 119 description: Si-Si
|
|
5273 #
|
|
5274 sub _Generate322KeySetKey119 {
|
|
5275 my($This) = @_;
|
|
5276 my($BondSymbol) = '-';
|
|
5277
|
|
5278 return $This->_DetectBondKeys('Si', 'Si', $BondSymbol);
|
|
5279 }
|
|
5280
|
|
5281 # Generate 322 keyset key 120 value as 1/0 indicating its presence/absence or
|
|
5282 # count of its presence in a molecule.
|
|
5283 #
|
|
5284 # Key 120 description: Si-I
|
|
5285 #
|
|
5286 sub _Generate322KeySetKey120 {
|
|
5287 my($This) = @_;
|
|
5288 my($BondSymbol) = '-';
|
|
5289
|
|
5290 return $This->_DetectBondKeys('Si', 'I', $BondSymbol);
|
|
5291 }
|
|
5292
|
|
5293 # Generate 322 keyset key 121 value as 1/0 indicating its presence/absence or
|
|
5294 # count of its presence in a molecule.
|
|
5295 #
|
|
5296 # Key 121 description: Si-X
|
|
5297 #
|
|
5298 sub _Generate322KeySetKey121 {
|
|
5299 my($This) = @_;
|
|
5300 my($BondSymbol) = '-';
|
|
5301
|
|
5302 return $This->_DetectBondKeys('Si', 'Z', $BondSymbol);
|
|
5303 }
|
|
5304
|
|
5305 # Generate 322 keyset key 122 value as 1/0 indicating its presence/absence or
|
|
5306 # count of its presence in a molecule.
|
|
5307 #
|
|
5308 # Key 122 description: I-I
|
|
5309 #
|
|
5310 sub _Generate322KeySetKey122 {
|
|
5311 my($This) = @_;
|
|
5312 my($BondSymbol) = '-';
|
|
5313
|
|
5314 return $This->_DetectBondKeys('I', 'I', $BondSymbol);
|
|
5315 }
|
|
5316
|
|
5317 # Generate 322 keyset key 123 value as 1/0 indicating its presence/absence or
|
|
5318 # count of its presence in a molecule.
|
|
5319 #
|
|
5320 # Key 123 description: I-X
|
|
5321 #
|
|
5322 sub _Generate322KeySetKey123 {
|
|
5323 my($This) = @_;
|
|
5324 my($BondSymbol) = '-';
|
|
5325
|
|
5326 return $This->_DetectBondKeys('I', 'Z', $BondSymbol);
|
|
5327 }
|
|
5328
|
|
5329 # Generate 322 keyset key 124 value as 1/0 indicating its presence/absence or
|
|
5330 # count of its presence in a molecule.
|
|
5331 #
|
|
5332 # Key 124 description: X-X
|
|
5333 #
|
|
5334 sub _Generate322KeySetKey124 {
|
|
5335 my($This) = @_;
|
|
5336 my($BondSymbol) = '-';
|
|
5337
|
|
5338 return $This->_DetectBondKeys('Z', 'Z', $BondSymbol);
|
|
5339 }
|
|
5340
|
|
5341 # Generate 322 keyset key 125 value as 1/0 indicating its presence/absence or
|
|
5342 # count of its presence in a molecule.
|
|
5343 #
|
|
5344 # Key 125 description: C=C
|
|
5345 #
|
|
5346 sub _Generate322KeySetKey125 {
|
|
5347 my($This) = @_;
|
|
5348 my($BondSymbol) = '=';
|
|
5349
|
|
5350 return $This->_DetectBondKeys('C', 'C', $BondSymbol);
|
|
5351 }
|
|
5352
|
|
5353 # Generate 322 keyset key 126 value as 1/0 indicating its presence/absence or
|
|
5354 # count of its presence in a molecule.
|
|
5355 #
|
|
5356 # Key 126 description: C=N
|
|
5357 #
|
|
5358 sub _Generate322KeySetKey126 {
|
|
5359 my($This) = @_;
|
|
5360 my($BondSymbol) = '=';
|
|
5361
|
|
5362 return $This->_DetectBondKeys('C', 'N', $BondSymbol);
|
|
5363 }
|
|
5364
|
|
5365 # Generate 322 keyset key 127 value as 1/0 indicating its presence/absence or
|
|
5366 # count of its presence in a molecule.
|
|
5367 #
|
|
5368 # Key 127 description: C=O
|
|
5369 #
|
|
5370 sub _Generate322KeySetKey127 {
|
|
5371 my($This) = @_;
|
|
5372 my($BondSymbol) = '=';
|
|
5373
|
|
5374 return $This->_DetectBondKeys('C', 'O', $BondSymbol);
|
|
5375 }
|
|
5376
|
|
5377 # Generate 322 keyset key 128 value as 1/0 indicating its presence/absence or
|
|
5378 # count of its presence in a molecule.
|
|
5379 #
|
|
5380 # Key 128 description: C=S
|
|
5381 #
|
|
5382 sub _Generate322KeySetKey128 {
|
|
5383 my($This) = @_;
|
|
5384 my($BondSymbol) = '=';
|
|
5385
|
|
5386 return $This->_DetectBondKeys('C', 'S', $BondSymbol);
|
|
5387 }
|
|
5388
|
|
5389 # Generate 322 keyset key 129 value as 1/0 indicating its presence/absence or
|
|
5390 # count of its presence in a molecule.
|
|
5391 #
|
|
5392 # Key 129 description: C=Cl
|
|
5393 #
|
|
5394 sub _Generate322KeySetKey129 {
|
|
5395 my($This) = @_;
|
|
5396 my($BondSymbol) = '=';
|
|
5397
|
|
5398 return $This->_DetectBondKeys('C', 'Cl', $BondSymbol);
|
|
5399 }
|
|
5400
|
|
5401 # Generate 322 keyset key 130 value as 1/0 indicating its presence/absence or
|
|
5402 # count of its presence in a molecule.
|
|
5403 #
|
|
5404 # Key 130 description: C=P
|
|
5405 #
|
|
5406 sub _Generate322KeySetKey130 {
|
|
5407 my($This) = @_;
|
|
5408 my($BondSymbol) = '=';
|
|
5409
|
|
5410 return $This->_DetectBondKeys('C', 'P', $BondSymbol);
|
|
5411 }
|
|
5412
|
|
5413 # Generate 322 keyset key 131 value as 1/0 indicating its presence/absence or
|
|
5414 # count of its presence in a molecule.
|
|
5415 #
|
|
5416 # Key 131 description: C=F
|
|
5417 #
|
|
5418 sub _Generate322KeySetKey131 {
|
|
5419 my($This) = @_;
|
|
5420 my($BondSymbol) = '=';
|
|
5421
|
|
5422 return $This->_DetectBondKeys('C', 'F', $BondSymbol);
|
|
5423 }
|
|
5424
|
|
5425 # Generate 322 keyset key 132 value as 1/0 indicating its presence/absence or
|
|
5426 # count of its presence in a molecule.
|
|
5427 #
|
|
5428 # Key 132 description: C=Br
|
|
5429 #
|
|
5430 sub _Generate322KeySetKey132 {
|
|
5431 my($This) = @_;
|
|
5432 my($BondSymbol) = '=';
|
|
5433
|
|
5434 return $This->_DetectBondKeys('C', 'Br', $BondSymbol);
|
|
5435 }
|
|
5436
|
|
5437 # Generate 322 keyset key 133 value as 1/0 indicating its presence/absence or
|
|
5438 # count of its presence in a molecule.
|
|
5439 #
|
|
5440 # Key 133 description: C=Si
|
|
5441 #
|
|
5442 sub _Generate322KeySetKey133 {
|
|
5443 my($This) = @_;
|
|
5444 my($BondSymbol) = '=';
|
|
5445
|
|
5446 return $This->_DetectBondKeys('C', 'Si', $BondSymbol);
|
|
5447 }
|
|
5448
|
|
5449 # Generate 322 keyset key 134 value as 1/0 indicating its presence/absence or
|
|
5450 # count of its presence in a molecule.
|
|
5451 #
|
|
5452 # Key 134 description: C=I
|
|
5453 #
|
|
5454 sub _Generate322KeySetKey134 {
|
|
5455 my($This) = @_;
|
|
5456 my($BondSymbol) = '=';
|
|
5457
|
|
5458 return $This->_DetectBondKeys('C', 'I', $BondSymbol);
|
|
5459 }
|
|
5460
|
|
5461 # Generate 322 keyset key 135 value as 1/0 indicating its presence/absence or
|
|
5462 # count of its presence in a molecule.
|
|
5463 #
|
|
5464 # Key 135 description: C=X
|
|
5465 #
|
|
5466 sub _Generate322KeySetKey135 {
|
|
5467 my($This) = @_;
|
|
5468 my($BondSymbol) = '=';
|
|
5469
|
|
5470 return $This->_DetectBondKeys('C', 'Z', $BondSymbol);
|
|
5471 }
|
|
5472
|
|
5473 # Generate 322 keyset key 136 value as 1/0 indicating its presence/absence or
|
|
5474 # count of its presence in a molecule.
|
|
5475 #
|
|
5476 # Key 136 description: N=N
|
|
5477 #
|
|
5478 sub _Generate322KeySetKey136 {
|
|
5479 my($This) = @_;
|
|
5480 my($BondSymbol) = '=';
|
|
5481
|
|
5482 return $This->_DetectBondKeys('N', 'N', $BondSymbol);
|
|
5483 }
|
|
5484
|
|
5485 # Generate 322 keyset key 137 value as 1/0 indicating its presence/absence or
|
|
5486 # count of its presence in a molecule.
|
|
5487 #
|
|
5488 # Key 137 description: N=O
|
|
5489 #
|
|
5490 sub _Generate322KeySetKey137 {
|
|
5491 my($This) = @_;
|
|
5492 my($BondSymbol) = '=';
|
|
5493
|
|
5494 return $This->_DetectBondKeys('N', 'O', $BondSymbol);
|
|
5495 }
|
|
5496
|
|
5497 # Generate 322 keyset key 138 value as 1/0 indicating its presence/absence or
|
|
5498 # count of its presence in a molecule.
|
|
5499 #
|
|
5500 # Key 138 description: N=S
|
|
5501 #
|
|
5502 sub _Generate322KeySetKey138 {
|
|
5503 my($This) = @_;
|
|
5504 my($BondSymbol) = '=';
|
|
5505
|
|
5506 return $This->_DetectBondKeys('N', 'S', $BondSymbol);
|
|
5507 }
|
|
5508
|
|
5509 # Generate 322 keyset key 139 value as 1/0 indicating its presence/absence or
|
|
5510 # count of its presence in a molecule.
|
|
5511 #
|
|
5512 # Key 139 description: N=Cl
|
|
5513 #
|
|
5514 sub _Generate322KeySetKey139 {
|
|
5515 my($This) = @_;
|
|
5516 my($BondSymbol) = '=';
|
|
5517
|
|
5518 return $This->_DetectBondKeys('N', 'Cl', $BondSymbol);
|
|
5519 }
|
|
5520
|
|
5521 # Generate 322 keyset key 140 value as 1/0 indicating its presence/absence or
|
|
5522 # count of its presence in a molecule.
|
|
5523 #
|
|
5524 # Key 140 description: N=P
|
|
5525 #
|
|
5526 sub _Generate322KeySetKey140 {
|
|
5527 my($This) = @_;
|
|
5528 my($BondSymbol) = '=';
|
|
5529
|
|
5530 return $This->_DetectBondKeys('N', 'P', $BondSymbol);
|
|
5531 }
|
|
5532
|
|
5533 # Generate 322 keyset key 141 value as 1/0 indicating its presence/absence or
|
|
5534 # count of its presence in a molecule.
|
|
5535 #
|
|
5536 # Key 141 description: N=F
|
|
5537 #
|
|
5538 sub _Generate322KeySetKey141 {
|
|
5539 my($This) = @_;
|
|
5540 my($BondSymbol) = '=';
|
|
5541
|
|
5542 return $This->_DetectBondKeys('N', 'F', $BondSymbol);
|
|
5543 }
|
|
5544
|
|
5545 # Generate 322 keyset key 142 value as 1/0 indicating its presence/absence or
|
|
5546 # count of its presence in a molecule.
|
|
5547 #
|
|
5548 # Key 142 description: N=Br
|
|
5549 #
|
|
5550 sub _Generate322KeySetKey142 {
|
|
5551 my($This) = @_;
|
|
5552 my($BondSymbol) = '=';
|
|
5553
|
|
5554 return $This->_DetectBondKeys('N', 'Br', $BondSymbol);
|
|
5555 }
|
|
5556
|
|
5557 # Generate 322 keyset key 143 value as 1/0 indicating its presence/absence or
|
|
5558 # count of its presence in a molecule.
|
|
5559 #
|
|
5560 # Key 143 description: N=Si
|
|
5561 #
|
|
5562 sub _Generate322KeySetKey143 {
|
|
5563 my($This) = @_;
|
|
5564 my($BondSymbol) = '=';
|
|
5565
|
|
5566 return $This->_DetectBondKeys('N', 'Si', $BondSymbol);
|
|
5567 }
|
|
5568
|
|
5569 # Generate 322 keyset key 144 value as 1/0 indicating its presence/absence or
|
|
5570 # count of its presence in a molecule.
|
|
5571 #
|
|
5572 # Key 144 description: N=I
|
|
5573 #
|
|
5574 sub _Generate322KeySetKey144 {
|
|
5575 my($This) = @_;
|
|
5576 my($BondSymbol) = '=';
|
|
5577
|
|
5578 return $This->_DetectBondKeys('N', 'I', $BondSymbol);
|
|
5579 }
|
|
5580
|
|
5581 # Generate 322 keyset key 145 value as 1/0 indicating its presence/absence or
|
|
5582 # count of its presence in a molecule.
|
|
5583 #
|
|
5584 # Key 145 description: N=X
|
|
5585 #
|
|
5586 sub _Generate322KeySetKey145 {
|
|
5587 my($This) = @_;
|
|
5588 my($BondSymbol) = '=';
|
|
5589
|
|
5590 return $This->_DetectBondKeys('N', 'Z', $BondSymbol);
|
|
5591 }
|
|
5592
|
|
5593 # Generate 322 keyset key 146 value as 1/0 indicating its presence/absence or
|
|
5594 # count of its presence in a molecule.
|
|
5595 #
|
|
5596 # Key 146 description: O=O
|
|
5597 #
|
|
5598 sub _Generate322KeySetKey146 {
|
|
5599 my($This) = @_;
|
|
5600 my($BondSymbol) = '=';
|
|
5601
|
|
5602 return $This->_DetectBondKeys('O', 'O', $BondSymbol);
|
|
5603 }
|
|
5604
|
|
5605 # Generate 322 keyset key 147 value as 1/0 indicating its presence/absence or
|
|
5606 # count of its presence in a molecule.
|
|
5607 #
|
|
5608 # Key 147 description: O=S
|
|
5609 #
|
|
5610 sub _Generate322KeySetKey147 {
|
|
5611 my($This) = @_;
|
|
5612 my($BondSymbol) = '=';
|
|
5613
|
|
5614 return $This->_DetectBondKeys('O', 'S', $BondSymbol);
|
|
5615 }
|
|
5616
|
|
5617 # Generate 322 keyset key 148 value as 1/0 indicating its presence/absence or
|
|
5618 # count of its presence in a molecule.
|
|
5619 #
|
|
5620 # Key 148 description: O=Cl
|
|
5621 #
|
|
5622 sub _Generate322KeySetKey148 {
|
|
5623 my($This) = @_;
|
|
5624 my($BondSymbol) = '=';
|
|
5625
|
|
5626 return $This->_DetectBondKeys('O', 'Cl', $BondSymbol);
|
|
5627 }
|
|
5628
|
|
5629 # Generate 322 keyset key 149 value as 1/0 indicating its presence/absence or
|
|
5630 # count of its presence in a molecule.
|
|
5631 #
|
|
5632 # Key 149 description: O=P
|
|
5633 #
|
|
5634 sub _Generate322KeySetKey149 {
|
|
5635 my($This) = @_;
|
|
5636 my($BondSymbol) = '=';
|
|
5637
|
|
5638 return $This->_DetectBondKeys('O', 'P', $BondSymbol);
|
|
5639 }
|
|
5640
|
|
5641 # Generate 322 keyset key 150 value as 1/0 indicating its presence/absence or
|
|
5642 # count of its presence in a molecule.
|
|
5643 #
|
|
5644 # Key 150 description: O=F
|
|
5645 #
|
|
5646 sub _Generate322KeySetKey150 {
|
|
5647 my($This) = @_;
|
|
5648 my($BondSymbol) = '=';
|
|
5649
|
|
5650 return $This->_DetectBondKeys('O', 'F', $BondSymbol);
|
|
5651 }
|
|
5652
|
|
5653 # Generate 322 keyset key 151 value as 1/0 indicating its presence/absence or
|
|
5654 # count of its presence in a molecule.
|
|
5655 #
|
|
5656 # Key 151 description: O=Br
|
|
5657 #
|
|
5658 sub _Generate322KeySetKey151 {
|
|
5659 my($This) = @_;
|
|
5660 my($BondSymbol) = '=';
|
|
5661
|
|
5662 return $This->_DetectBondKeys('O', 'Br', $BondSymbol);
|
|
5663 }
|
|
5664
|
|
5665 # Generate 322 keyset key 152 value as 1/0 indicating its presence/absence or
|
|
5666 # count of its presence in a molecule.
|
|
5667 #
|
|
5668 # Key 152 description: O=Si
|
|
5669 #
|
|
5670 sub _Generate322KeySetKey152 {
|
|
5671 my($This) = @_;
|
|
5672 my($BondSymbol) = '=';
|
|
5673
|
|
5674 return $This->_DetectBondKeys('O', 'Si', $BondSymbol);
|
|
5675 }
|
|
5676
|
|
5677 # Generate 322 keyset key 153 value as 1/0 indicating its presence/absence or
|
|
5678 # count of its presence in a molecule.
|
|
5679 #
|
|
5680 # Key 153 description: O=I
|
|
5681 #
|
|
5682 sub _Generate322KeySetKey153 {
|
|
5683 my($This) = @_;
|
|
5684 my($BondSymbol) = '=';
|
|
5685
|
|
5686 return $This->_DetectBondKeys('O', 'I', $BondSymbol);
|
|
5687 }
|
|
5688
|
|
5689 # Generate 322 keyset key 154 value as 1/0 indicating its presence/absence or
|
|
5690 # count of its presence in a molecule.
|
|
5691 #
|
|
5692 # Key 154 description: O=X
|
|
5693 #
|
|
5694 sub _Generate322KeySetKey154 {
|
|
5695 my($This) = @_;
|
|
5696 my($BondSymbol) = '=';
|
|
5697
|
|
5698 return $This->_DetectBondKeys('O', 'Z', $BondSymbol);
|
|
5699 }
|
|
5700
|
|
5701 # Generate 322 keyset key 155 value as 1/0 indicating its presence/absence or
|
|
5702 # count of its presence in a molecule.
|
|
5703 #
|
|
5704 # Key 155 description: S=S
|
|
5705 #
|
|
5706 sub _Generate322KeySetKey155 {
|
|
5707 my($This) = @_;
|
|
5708 my($BondSymbol) = '=';
|
|
5709
|
|
5710 return $This->_DetectBondKeys('S', 'S', $BondSymbol);
|
|
5711 }
|
|
5712
|
|
5713 # Generate 322 keyset key 156 value as 1/0 indicating its presence/absence or
|
|
5714 # count of its presence in a molecule.
|
|
5715 #
|
|
5716 # Key 156 description: S=Cl
|
|
5717 #
|
|
5718 sub _Generate322KeySetKey156 {
|
|
5719 my($This) = @_;
|
|
5720 my($BondSymbol) = '=';
|
|
5721
|
|
5722 return $This->_DetectBondKeys('S', 'Cl', $BondSymbol);
|
|
5723 }
|
|
5724
|
|
5725 # Generate 322 keyset key 157 value as 1/0 indicating its presence/absence or
|
|
5726 # count of its presence in a molecule.
|
|
5727 #
|
|
5728 # Key 157 description: S=P
|
|
5729 #
|
|
5730 sub _Generate322KeySetKey157 {
|
|
5731 my($This) = @_;
|
|
5732 my($BondSymbol) = '=';
|
|
5733
|
|
5734 return $This->_DetectBondKeys('S', 'P', $BondSymbol);
|
|
5735 }
|
|
5736
|
|
5737 # Generate 322 keyset key 158 value as 1/0 indicating its presence/absence or
|
|
5738 # count of its presence in a molecule.
|
|
5739 #
|
|
5740 # Key 158 description: S=F
|
|
5741 #
|
|
5742 sub _Generate322KeySetKey158 {
|
|
5743 my($This) = @_;
|
|
5744 my($BondSymbol) = '=';
|
|
5745
|
|
5746 return $This->_DetectBondKeys('S', 'F', $BondSymbol);
|
|
5747 }
|
|
5748
|
|
5749 # Generate 322 keyset key 159 value as 1/0 indicating its presence/absence or
|
|
5750 # count of its presence in a molecule.
|
|
5751 #
|
|
5752 # Key 159 description: S=Br
|
|
5753 #
|
|
5754 sub _Generate322KeySetKey159 {
|
|
5755 my($This) = @_;
|
|
5756 my($BondSymbol) = '=';
|
|
5757
|
|
5758 return $This->_DetectBondKeys('S', 'Br', $BondSymbol);
|
|
5759 }
|
|
5760
|
|
5761 # Generate 322 keyset key 160 value as 1/0 indicating its presence/absence or
|
|
5762 # count of its presence in a molecule.
|
|
5763 #
|
|
5764 # Key 160 description: S=Si
|
|
5765 #
|
|
5766 sub _Generate322KeySetKey160 {
|
|
5767 my($This) = @_;
|
|
5768 my($BondSymbol) = '=';
|
|
5769
|
|
5770 return $This->_DetectBondKeys('S', 'Si', $BondSymbol);
|
|
5771 }
|
|
5772
|
|
5773 # Generate 322 keyset key 161 value as 1/0 indicating its presence/absence or
|
|
5774 # count of its presence in a molecule.
|
|
5775 #
|
|
5776 # Key 161 description: S=I
|
|
5777 #
|
|
5778 sub _Generate322KeySetKey161 {
|
|
5779 my($This) = @_;
|
|
5780 my($BondSymbol) = '=';
|
|
5781
|
|
5782 return $This->_DetectBondKeys('S', 'I', $BondSymbol);
|
|
5783 }
|
|
5784
|
|
5785 # Generate 322 keyset key 162 value as 1/0 indicating its presence/absence or
|
|
5786 # count of its presence in a molecule.
|
|
5787 #
|
|
5788 # Key 162 description: S=X
|
|
5789 #
|
|
5790 sub _Generate322KeySetKey162 {
|
|
5791 my($This) = @_;
|
|
5792 my($BondSymbol) = '=';
|
|
5793
|
|
5794 return $This->_DetectBondKeys('S', 'Z', $BondSymbol);
|
|
5795 }
|
|
5796
|
|
5797 # Generate 322 keyset key 163 value as 1/0 indicating its presence/absence or
|
|
5798 # count of its presence in a molecule.
|
|
5799 #
|
|
5800 # Key 163 description: Cl=Cl
|
|
5801 #
|
|
5802 sub _Generate322KeySetKey163 {
|
|
5803 my($This) = @_;
|
|
5804 my($BondSymbol) = '=';
|
|
5805
|
|
5806 return $This->_DetectBondKeys('Cl', 'Cl', $BondSymbol);
|
|
5807 }
|
|
5808
|
|
5809 # Generate 322 keyset key 164 value as 1/0 indicating its presence/absence or
|
|
5810 # count of its presence in a molecule.
|
|
5811 #
|
|
5812 # Key 164 description: Cl=P
|
|
5813 #
|
|
5814 sub _Generate322KeySetKey164 {
|
|
5815 my($This) = @_;
|
|
5816 my($BondSymbol) = '=';
|
|
5817
|
|
5818 return $This->_DetectBondKeys('Cl', 'P', $BondSymbol);
|
|
5819 }
|
|
5820
|
|
5821 # Generate 322 keyset key 165 value as 1/0 indicating its presence/absence or
|
|
5822 # count of its presence in a molecule.
|
|
5823 #
|
|
5824 # Key 165 description: Cl=F
|
|
5825 #
|
|
5826 sub _Generate322KeySetKey165 {
|
|
5827 my($This) = @_;
|
|
5828 my($BondSymbol) = '=';
|
|
5829
|
|
5830 return $This->_DetectBondKeys('Cl', 'F', $BondSymbol);
|
|
5831 }
|
|
5832
|
|
5833 # Generate 322 keyset key 166 value as 1/0 indicating its presence/absence or
|
|
5834 # count of its presence in a molecule.
|
|
5835 #
|
|
5836 # Key 166 description: Cl=Br
|
|
5837 #
|
|
5838 sub _Generate322KeySetKey166 {
|
|
5839 my($This) = @_;
|
|
5840 my($BondSymbol) = '=';
|
|
5841
|
|
5842 return $This->_DetectBondKeys('Cl', 'Br', $BondSymbol);
|
|
5843 }
|
|
5844
|
|
5845 # Generate 322 keyset key 167 value as 1/0 indicating its presence/absence or
|
|
5846 # count of its presence in a molecule.
|
|
5847 #
|
|
5848 # Key 167 description: Cl=Si
|
|
5849 #
|
|
5850 sub _Generate322KeySetKey167 {
|
|
5851 my($This) = @_;
|
|
5852 my($BondSymbol) = '=';
|
|
5853
|
|
5854 return $This->_DetectBondKeys('Cl', 'Si', $BondSymbol);
|
|
5855 }
|
|
5856
|
|
5857 # Generate 322 keyset key 168 value as 1/0 indicating its presence/absence or
|
|
5858 # count of its presence in a molecule.
|
|
5859 #
|
|
5860 # Key 168 description: Cl=I
|
|
5861 #
|
|
5862 sub _Generate322KeySetKey168 {
|
|
5863 my($This) = @_;
|
|
5864 my($BondSymbol) = '=';
|
|
5865
|
|
5866 return $This->_DetectBondKeys('Cl', 'I', $BondSymbol);
|
|
5867 }
|
|
5868
|
|
5869 # Generate 322 keyset key 169 value as 1/0 indicating its presence/absence or
|
|
5870 # count of its presence in a molecule.
|
|
5871 #
|
|
5872 # Key 169 description: Cl=X
|
|
5873 #
|
|
5874 sub _Generate322KeySetKey169 {
|
|
5875 my($This) = @_;
|
|
5876 my($BondSymbol) = '=';
|
|
5877
|
|
5878 return $This->_DetectBondKeys('Cl', 'Z', $BondSymbol);
|
|
5879 }
|
|
5880
|
|
5881 # Generate 322 keyset key 170 value as 1/0 indicating its presence/absence or
|
|
5882 # count of its presence in a molecule.
|
|
5883 #
|
|
5884 # Key 170 description: P=P
|
|
5885 #
|
|
5886 sub _Generate322KeySetKey170 {
|
|
5887 my($This) = @_;
|
|
5888 my($BondSymbol) = '=';
|
|
5889
|
|
5890 return $This->_DetectBondKeys('P', 'P', $BondSymbol);
|
|
5891 }
|
|
5892
|
|
5893 # Generate 322 keyset key 171 value as 1/0 indicating its presence/absence or
|
|
5894 # count of its presence in a molecule.
|
|
5895 #
|
|
5896 # Key 171 description: P=F
|
|
5897 #
|
|
5898 sub _Generate322KeySetKey171 {
|
|
5899 my($This) = @_;
|
|
5900 my($BondSymbol) = '=';
|
|
5901
|
|
5902 return $This->_DetectBondKeys('P', 'F', $BondSymbol);
|
|
5903 }
|
|
5904
|
|
5905 # Generate 322 keyset key 172 value as 1/0 indicating its presence/absence or
|
|
5906 # count of its presence in a molecule.
|
|
5907 #
|
|
5908 # Key 172 description: P=Br
|
|
5909 #
|
|
5910 sub _Generate322KeySetKey172 {
|
|
5911 my($This) = @_;
|
|
5912 my($BondSymbol) = '=';
|
|
5913
|
|
5914 return $This->_DetectBondKeys('P', 'Br', $BondSymbol);
|
|
5915 }
|
|
5916
|
|
5917 # Generate 322 keyset key 173 value as 1/0 indicating its presence/absence or
|
|
5918 # count of its presence in a molecule.
|
|
5919 #
|
|
5920 # Key 173 description: P=Si
|
|
5921 #
|
|
5922 sub _Generate322KeySetKey173 {
|
|
5923 my($This) = @_;
|
|
5924 my($BondSymbol) = '=';
|
|
5925
|
|
5926 return $This->_DetectBondKeys('P', 'Si', $BondSymbol);
|
|
5927 }
|
|
5928
|
|
5929 # Generate 322 keyset key 174 value as 1/0 indicating its presence/absence or
|
|
5930 # count of its presence in a molecule.
|
|
5931 #
|
|
5932 # Key 174 description: P=I
|
|
5933 #
|
|
5934 sub _Generate322KeySetKey174 {
|
|
5935 my($This) = @_;
|
|
5936 my($BondSymbol) = '=';
|
|
5937
|
|
5938 return $This->_DetectBondKeys('P', 'I', $BondSymbol);
|
|
5939 }
|
|
5940
|
|
5941 # Generate 322 keyset key 175 value as 1/0 indicating its presence/absence or
|
|
5942 # count of its presence in a molecule.
|
|
5943 #
|
|
5944 # Key 175 description: P=X
|
|
5945 #
|
|
5946 sub _Generate322KeySetKey175 {
|
|
5947 my($This) = @_;
|
|
5948 my($BondSymbol) = '=';
|
|
5949
|
|
5950 return $This->_DetectBondKeys('P', 'Z', $BondSymbol);
|
|
5951 }
|
|
5952
|
|
5953 # Generate 322 keyset key 176 value as 1/0 indicating its presence/absence or
|
|
5954 # count of its presence in a molecule.
|
|
5955 #
|
|
5956 # Key 176 description: F=F
|
|
5957 #
|
|
5958 sub _Generate322KeySetKey176 {
|
|
5959 my($This) = @_;
|
|
5960 my($BondSymbol) = '=';
|
|
5961
|
|
5962 return $This->_DetectBondKeys('F', 'F', $BondSymbol);
|
|
5963 }
|
|
5964
|
|
5965 # Generate 322 keyset key 177 value as 1/0 indicating its presence/absence or
|
|
5966 # count of its presence in a molecule.
|
|
5967 #
|
|
5968 # Key 177 description: F=Br
|
|
5969 #
|
|
5970 sub _Generate322KeySetKey177 {
|
|
5971 my($This) = @_;
|
|
5972 my($BondSymbol) = '=';
|
|
5973
|
|
5974 return $This->_DetectBondKeys('F', 'Br', $BondSymbol);
|
|
5975 }
|
|
5976
|
|
5977 # Generate 322 keyset key 178 value as 1/0 indicating its presence/absence or
|
|
5978 # count of its presence in a molecule.
|
|
5979 #
|
|
5980 # Key 178 description: F=Si
|
|
5981 #
|
|
5982 sub _Generate322KeySetKey178 {
|
|
5983 my($This) = @_;
|
|
5984 my($BondSymbol) = '=';
|
|
5985
|
|
5986 return $This->_DetectBondKeys('F', 'Si', $BondSymbol);
|
|
5987 }
|
|
5988
|
|
5989 # Generate 322 keyset key 179 value as 1/0 indicating its presence/absence or
|
|
5990 # count of its presence in a molecule.
|
|
5991 #
|
|
5992 # Key 179 description: F=I
|
|
5993 #
|
|
5994 sub _Generate322KeySetKey179 {
|
|
5995 my($This) = @_;
|
|
5996 my($BondSymbol) = '=';
|
|
5997
|
|
5998 return $This->_DetectBondKeys('F', 'I', $BondSymbol);
|
|
5999 }
|
|
6000
|
|
6001 # Generate 322 keyset key 180 value as 1/0 indicating its presence/absence or
|
|
6002 # count of its presence in a molecule.
|
|
6003 #
|
|
6004 # Key 180 description: F=X
|
|
6005 #
|
|
6006 sub _Generate322KeySetKey180 {
|
|
6007 my($This) = @_;
|
|
6008 my($BondSymbol) = '=';
|
|
6009
|
|
6010 return $This->_DetectBondKeys('F', 'Z', $BondSymbol);
|
|
6011 }
|
|
6012
|
|
6013 # Generate 322 keyset key 181 value as 1/0 indicating its presence/absence or
|
|
6014 # count of its presence in a molecule.
|
|
6015 #
|
|
6016 # Key 181 description: Br=Br
|
|
6017 #
|
|
6018 sub _Generate322KeySetKey181 {
|
|
6019 my($This) = @_;
|
|
6020 my($BondSymbol) = '=';
|
|
6021
|
|
6022 return $This->_DetectBondKeys('Br', 'Br', $BondSymbol);
|
|
6023 }
|
|
6024
|
|
6025 # Generate 322 keyset key 182 value as 1/0 indicating its presence/absence or
|
|
6026 # count of its presence in a molecule.
|
|
6027 #
|
|
6028 # Key 182 description: Br=Si
|
|
6029 #
|
|
6030 sub _Generate322KeySetKey182 {
|
|
6031 my($This) = @_;
|
|
6032 my($BondSymbol) = '=';
|
|
6033
|
|
6034 return $This->_DetectBondKeys('Br', 'Si', $BondSymbol);
|
|
6035 }
|
|
6036
|
|
6037 # Generate 322 keyset key 183 value as 1/0 indicating its presence/absence or
|
|
6038 # count of its presence in a molecule.
|
|
6039 #
|
|
6040 # Key 183 description: Br=I
|
|
6041 #
|
|
6042 sub _Generate322KeySetKey183 {
|
|
6043 my($This) = @_;
|
|
6044 my($BondSymbol) = '=';
|
|
6045
|
|
6046 return $This->_DetectBondKeys('Br', 'I', $BondSymbol);
|
|
6047 }
|
|
6048
|
|
6049 # Generate 322 keyset key 184 value as 1/0 indicating its presence/absence or
|
|
6050 # count of its presence in a molecule.
|
|
6051 #
|
|
6052 # Key 184 description: Br=X
|
|
6053 #
|
|
6054 sub _Generate322KeySetKey184 {
|
|
6055 my($This) = @_;
|
|
6056 my($BondSymbol) = '=';
|
|
6057
|
|
6058 return $This->_DetectBondKeys('Br', 'Z', $BondSymbol);
|
|
6059 }
|
|
6060
|
|
6061 # Generate 322 keyset key 185 value as 1/0 indicating its presence/absence or
|
|
6062 # count of its presence in a molecule.
|
|
6063 #
|
|
6064 # Key 185 description: Si=Si
|
|
6065 #
|
|
6066 sub _Generate322KeySetKey185 {
|
|
6067 my($This) = @_;
|
|
6068 my($BondSymbol) = '=';
|
|
6069
|
|
6070 return $This->_DetectBondKeys('Si', 'Si', $BondSymbol);
|
|
6071 }
|
|
6072
|
|
6073 # Generate 322 keyset key 186 value as 1/0 indicating its presence/absence or
|
|
6074 # count of its presence in a molecule.
|
|
6075 #
|
|
6076 # Key 186 description: Si=I
|
|
6077 #
|
|
6078 sub _Generate322KeySetKey186 {
|
|
6079 my($This) = @_;
|
|
6080 my($BondSymbol) = '=';
|
|
6081
|
|
6082 return $This->_DetectBondKeys('Si', 'I', $BondSymbol);
|
|
6083 }
|
|
6084
|
|
6085 # Generate 322 keyset key 187 value as 1/0 indicating its presence/absence or
|
|
6086 # count of its presence in a molecule.
|
|
6087 #
|
|
6088 # Key 187 description: Si=X
|
|
6089 #
|
|
6090 sub _Generate322KeySetKey187 {
|
|
6091 my($This) = @_;
|
|
6092 my($BondSymbol) = '=';
|
|
6093
|
|
6094 return $This->_DetectBondKeys('Si', 'Z', $BondSymbol);
|
|
6095 }
|
|
6096
|
|
6097 # Generate 322 keyset key 188 value as 1/0 indicating its presence/absence or
|
|
6098 # count of its presence in a molecule.
|
|
6099 #
|
|
6100 # Key 188 description: I=I
|
|
6101 #
|
|
6102 sub _Generate322KeySetKey188 {
|
|
6103 my($This) = @_;
|
|
6104 my($BondSymbol) = '=';
|
|
6105
|
|
6106 return $This->_DetectBondKeys('I', 'I', $BondSymbol);
|
|
6107 }
|
|
6108
|
|
6109 # Generate 322 keyset key 189 value as 1/0 indicating its presence/absence or
|
|
6110 # count of its presence in a molecule.
|
|
6111 #
|
|
6112 # Key 189 description: I=X
|
|
6113 #
|
|
6114 sub _Generate322KeySetKey189 {
|
|
6115 my($This) = @_;
|
|
6116 my($BondSymbol) = '=';
|
|
6117
|
|
6118 return $This->_DetectBondKeys('I', 'Z', $BondSymbol);
|
|
6119 }
|
|
6120
|
|
6121 # Generate 322 keyset key 190 value as 1/0 indicating its presence/absence or
|
|
6122 # count of its presence in a molecule.
|
|
6123 #
|
|
6124 # Key 190 description: X=X
|
|
6125 #
|
|
6126 sub _Generate322KeySetKey190 {
|
|
6127 my($This) = @_;
|
|
6128 my($BondSymbol) = '=';
|
|
6129
|
|
6130 return $This->_DetectBondKeys('Z', 'Z', $BondSymbol);
|
|
6131 }
|
|
6132
|
|
6133 # Generate 322 keyset key 191 value as 1/0 indicating its presence/absence or
|
|
6134 # count of its presence in a molecule.
|
|
6135 #
|
|
6136 # Key 191 description: C#C
|
|
6137 #
|
|
6138 sub _Generate322KeySetKey191 {
|
|
6139 my($This) = @_;
|
|
6140 my($BondSymbol) = '#';
|
|
6141
|
|
6142 return $This->_DetectBondKeys('C', 'C', $BondSymbol);
|
|
6143 }
|
|
6144
|
|
6145 # Generate 322 keyset key 192 value as 1/0 indicating its presence/absence or
|
|
6146 # count of its presence in a molecule.
|
|
6147 #
|
|
6148 # Key 192 description: C#N
|
|
6149 #
|
|
6150 sub _Generate322KeySetKey192 {
|
|
6151 my($This) = @_;
|
|
6152 my($BondSymbol) = '#';
|
|
6153
|
|
6154 return $This->_DetectBondKeys('C', 'N', $BondSymbol);
|
|
6155 }
|
|
6156
|
|
6157 # Generate 322 keyset key 193 value as 1/0 indicating its presence/absence or
|
|
6158 # count of its presence in a molecule.
|
|
6159 #
|
|
6160 # Key 193 description: C#O
|
|
6161 #
|
|
6162 sub _Generate322KeySetKey193 {
|
|
6163 my($This) = @_;
|
|
6164 my($BondSymbol) = '#';
|
|
6165
|
|
6166 return $This->_DetectBondKeys('C', 'O', $BondSymbol);
|
|
6167 }
|
|
6168
|
|
6169 # Generate 322 keyset key 194 value as 1/0 indicating its presence/absence or
|
|
6170 # count of its presence in a molecule.
|
|
6171 #
|
|
6172 # Key 194 description: C#S
|
|
6173 #
|
|
6174 sub _Generate322KeySetKey194 {
|
|
6175 my($This) = @_;
|
|
6176 my($BondSymbol) = '#';
|
|
6177
|
|
6178 return $This->_DetectBondKeys('C', 'S', $BondSymbol);
|
|
6179 }
|
|
6180
|
|
6181 # Generate 322 keyset key 195 value as 1/0 indicating its presence/absence or
|
|
6182 # count of its presence in a molecule.
|
|
6183 #
|
|
6184 # Key 195 description: C#Cl
|
|
6185 #
|
|
6186 sub _Generate322KeySetKey195 {
|
|
6187 my($This) = @_;
|
|
6188 my($BondSymbol) = '#';
|
|
6189
|
|
6190 return $This->_DetectBondKeys('C', 'Cl', $BondSymbol);
|
|
6191 }
|
|
6192
|
|
6193 # Generate 322 keyset key 196 value as 1/0 indicating its presence/absence or
|
|
6194 # count of its presence in a molecule.
|
|
6195 #
|
|
6196 # Key 196 description: C#P
|
|
6197 #
|
|
6198 sub _Generate322KeySetKey196 {
|
|
6199 my($This) = @_;
|
|
6200 my($BondSymbol) = '#';
|
|
6201
|
|
6202 return $This->_DetectBondKeys('C', 'P', $BondSymbol);
|
|
6203 }
|
|
6204
|
|
6205 # Generate 322 keyset key 197 value as 1/0 indicating its presence/absence or
|
|
6206 # count of its presence in a molecule.
|
|
6207 #
|
|
6208 # Key 197 description: C#F
|
|
6209 #
|
|
6210 sub _Generate322KeySetKey197 {
|
|
6211 my($This) = @_;
|
|
6212 my($BondSymbol) = '#';
|
|
6213
|
|
6214 return $This->_DetectBondKeys('C', 'F', $BondSymbol);
|
|
6215 }
|
|
6216
|
|
6217 # Generate 322 keyset key 198 value as 1/0 indicating its presence/absence or
|
|
6218 # count of its presence in a molecule.
|
|
6219 #
|
|
6220 # Key 198 description: C#Br
|
|
6221 #
|
|
6222 sub _Generate322KeySetKey198 {
|
|
6223 my($This) = @_;
|
|
6224 my($BondSymbol) = '#';
|
|
6225
|
|
6226 return $This->_DetectBondKeys('C', 'Br', $BondSymbol);
|
|
6227 }
|
|
6228
|
|
6229 # Generate 322 keyset key 199 value as 1/0 indicating its presence/absence or
|
|
6230 # count of its presence in a molecule.
|
|
6231 #
|
|
6232 # Key 199 description: C#Si
|
|
6233 #
|
|
6234 sub _Generate322KeySetKey199 {
|
|
6235 my($This) = @_;
|
|
6236 my($BondSymbol) = '#';
|
|
6237
|
|
6238 return $This->_DetectBondKeys('C', 'Si', $BondSymbol);
|
|
6239 }
|
|
6240
|
|
6241 # Generate 322 keyset key 200 value as 1/0 indicating its presence/absence or
|
|
6242 # count of its presence in a molecule.
|
|
6243 #
|
|
6244 # Key 200 description: C#I
|
|
6245 #
|
|
6246 sub _Generate322KeySetKey200 {
|
|
6247 my($This) = @_;
|
|
6248 my($BondSymbol) = '#';
|
|
6249
|
|
6250 return $This->_DetectBondKeys('C', 'I', $BondSymbol);
|
|
6251 }
|
|
6252
|
|
6253 # Generate 322 keyset key 201 value as 1/0 indicating its presence/absence or
|
|
6254 # count of its presence in a molecule.
|
|
6255 #
|
|
6256 # Key 201 description: C#X
|
|
6257 #
|
|
6258 sub _Generate322KeySetKey201 {
|
|
6259 my($This) = @_;
|
|
6260 my($BondSymbol) = '#';
|
|
6261
|
|
6262 return $This->_DetectBondKeys('C', 'Z', $BondSymbol);
|
|
6263 }
|
|
6264
|
|
6265 # Generate 322 keyset key 202 value as 1/0 indicating its presence/absence or
|
|
6266 # count of its presence in a molecule.
|
|
6267 #
|
|
6268 # Key 202 description: N#N
|
|
6269 #
|
|
6270 sub _Generate322KeySetKey202 {
|
|
6271 my($This) = @_;
|
|
6272 my($BondSymbol) = '#';
|
|
6273
|
|
6274 return $This->_DetectBondKeys('N', 'N', $BondSymbol);
|
|
6275 }
|
|
6276
|
|
6277 # Generate 322 keyset key 203 value as 1/0 indicating its presence/absence or
|
|
6278 # count of its presence in a molecule.
|
|
6279 #
|
|
6280 # Key 203 description: N#O
|
|
6281 #
|
|
6282 sub _Generate322KeySetKey203 {
|
|
6283 my($This) = @_;
|
|
6284 my($BondSymbol) = '#';
|
|
6285
|
|
6286 return $This->_DetectBondKeys('N', 'O', $BondSymbol);
|
|
6287 }
|
|
6288
|
|
6289 # Generate 322 keyset key 204 value as 1/0 indicating its presence/absence or
|
|
6290 # count of its presence in a molecule.
|
|
6291 #
|
|
6292 # Key 204 description: N#S
|
|
6293 #
|
|
6294 sub _Generate322KeySetKey204 {
|
|
6295 my($This) = @_;
|
|
6296 my($BondSymbol) = '#';
|
|
6297
|
|
6298 return $This->_DetectBondKeys('N', 'S', $BondSymbol);
|
|
6299 }
|
|
6300
|
|
6301 # Generate 322 keyset key 205 value as 1/0 indicating its presence/absence or
|
|
6302 # count of its presence in a molecule.
|
|
6303 #
|
|
6304 # Key 205 description: N#Cl
|
|
6305 #
|
|
6306 sub _Generate322KeySetKey205 {
|
|
6307 my($This) = @_;
|
|
6308 my($BondSymbol) = '#';
|
|
6309
|
|
6310 return $This->_DetectBondKeys('N', 'Cl', $BondSymbol);
|
|
6311 }
|
|
6312
|
|
6313 # Generate 322 keyset key 206 value as 1/0 indicating its presence/absence or
|
|
6314 # count of its presence in a molecule.
|
|
6315 #
|
|
6316 # Key 206 description: N#P
|
|
6317 #
|
|
6318 sub _Generate322KeySetKey206 {
|
|
6319 my($This) = @_;
|
|
6320 my($BondSymbol) = '#';
|
|
6321
|
|
6322 return $This->_DetectBondKeys('N', 'P', $BondSymbol);
|
|
6323 }
|
|
6324
|
|
6325 # Generate 322 keyset key 207 value as 1/0 indicating its presence/absence or
|
|
6326 # count of its presence in a molecule.
|
|
6327 #
|
|
6328 # Key 207 description: N#F
|
|
6329 #
|
|
6330 sub _Generate322KeySetKey207 {
|
|
6331 my($This) = @_;
|
|
6332 my($BondSymbol) = '#';
|
|
6333
|
|
6334 return $This->_DetectBondKeys('N', 'F', $BondSymbol);
|
|
6335 }
|
|
6336
|
|
6337 # Generate 322 keyset key 208 value as 1/0 indicating its presence/absence or
|
|
6338 # count of its presence in a molecule.
|
|
6339 #
|
|
6340 # Key 208 description: N#Br
|
|
6341 #
|
|
6342 sub _Generate322KeySetKey208 {
|
|
6343 my($This) = @_;
|
|
6344 my($BondSymbol) = '#';
|
|
6345
|
|
6346 return $This->_DetectBondKeys('N', 'Br', $BondSymbol);
|
|
6347 }
|
|
6348
|
|
6349 # Generate 322 keyset key 209 value as 1/0 indicating its presence/absence or
|
|
6350 # count of its presence in a molecule.
|
|
6351 #
|
|
6352 # Key 209 description: N#Si
|
|
6353 #
|
|
6354 sub _Generate322KeySetKey209 {
|
|
6355 my($This) = @_;
|
|
6356 my($BondSymbol) = '#';
|
|
6357
|
|
6358 return $This->_DetectBondKeys('N', 'Si', $BondSymbol);
|
|
6359 }
|
|
6360
|
|
6361 # Generate 322 keyset key 210 value as 1/0 indicating its presence/absence or
|
|
6362 # count of its presence in a molecule.
|
|
6363 #
|
|
6364 # Key 210 description: N#I
|
|
6365 #
|
|
6366 sub _Generate322KeySetKey210 {
|
|
6367 my($This) = @_;
|
|
6368 my($BondSymbol) = '#';
|
|
6369
|
|
6370 return $This->_DetectBondKeys('N', 'I', $BondSymbol);
|
|
6371 }
|
|
6372
|
|
6373 # Generate 322 keyset key 211 value as 1/0 indicating its presence/absence or
|
|
6374 # count of its presence in a molecule.
|
|
6375 #
|
|
6376 # Key 211 description: N#X
|
|
6377 #
|
|
6378 sub _Generate322KeySetKey211 {
|
|
6379 my($This) = @_;
|
|
6380 my($BondSymbol) = '#';
|
|
6381
|
|
6382 return $This->_DetectBondKeys('N', 'Z', $BondSymbol);
|
|
6383 }
|
|
6384
|
|
6385 # Generate 322 keyset key 212 value as 1/0 indicating its presence/absence or
|
|
6386 # count of its presence in a molecule.
|
|
6387 #
|
|
6388 # Key 212 description: O#O
|
|
6389 #
|
|
6390 sub _Generate322KeySetKey212 {
|
|
6391 my($This) = @_;
|
|
6392 my($BondSymbol) = '#';
|
|
6393
|
|
6394 return $This->_DetectBondKeys('O', 'O', $BondSymbol);
|
|
6395 }
|
|
6396
|
|
6397 # Generate 322 keyset key 213 value as 1/0 indicating its presence/absence or
|
|
6398 # count of its presence in a molecule.
|
|
6399 #
|
|
6400 # Key 213 description: O#S
|
|
6401 #
|
|
6402 sub _Generate322KeySetKey213 {
|
|
6403 my($This) = @_;
|
|
6404 my($BondSymbol) = '#';
|
|
6405
|
|
6406 return $This->_DetectBondKeys('O', 'S', $BondSymbol);
|
|
6407 }
|
|
6408
|
|
6409 # Generate 322 keyset key 214 value as 1/0 indicating its presence/absence or
|
|
6410 # count of its presence in a molecule.
|
|
6411 #
|
|
6412 # Key 214 description: O#Cl
|
|
6413 #
|
|
6414 sub _Generate322KeySetKey214 {
|
|
6415 my($This) = @_;
|
|
6416 my($BondSymbol) = '#';
|
|
6417
|
|
6418 return $This->_DetectBondKeys('O', 'Cl', $BondSymbol);
|
|
6419 }
|
|
6420
|
|
6421 # Generate 322 keyset key 215 value as 1/0 indicating its presence/absence or
|
|
6422 # count of its presence in a molecule.
|
|
6423 #
|
|
6424 # Key 215 description: O#P
|
|
6425 #
|
|
6426 sub _Generate322KeySetKey215 {
|
|
6427 my($This) = @_;
|
|
6428 my($BondSymbol) = '#';
|
|
6429
|
|
6430 return $This->_DetectBondKeys('O', 'P', $BondSymbol);
|
|
6431 }
|
|
6432
|
|
6433 # Generate 322 keyset key 216 value as 1/0 indicating its presence/absence or
|
|
6434 # count of its presence in a molecule.
|
|
6435 #
|
|
6436 # Key 216 description: O#F
|
|
6437 #
|
|
6438 sub _Generate322KeySetKey216 {
|
|
6439 my($This) = @_;
|
|
6440 my($BondSymbol) = '#';
|
|
6441
|
|
6442 return $This->_DetectBondKeys('O', 'F', $BondSymbol);
|
|
6443 }
|
|
6444
|
|
6445 # Generate 322 keyset key 217 value as 1/0 indicating its presence/absence or
|
|
6446 # count of its presence in a molecule.
|
|
6447 #
|
|
6448 # Key 217 description: O#Br
|
|
6449 #
|
|
6450 sub _Generate322KeySetKey217 {
|
|
6451 my($This) = @_;
|
|
6452 my($BondSymbol) = '#';
|
|
6453
|
|
6454 return $This->_DetectBondKeys('O', 'Br', $BondSymbol);
|
|
6455 }
|
|
6456
|
|
6457 # Generate 322 keyset key 218 value as 1/0 indicating its presence/absence or
|
|
6458 # count of its presence in a molecule.
|
|
6459 #
|
|
6460 # Key 218 description: O#Si
|
|
6461 #
|
|
6462 sub _Generate322KeySetKey218 {
|
|
6463 my($This) = @_;
|
|
6464 my($BondSymbol) = '#';
|
|
6465
|
|
6466 return $This->_DetectBondKeys('O', 'Si', $BondSymbol);
|
|
6467 }
|
|
6468
|
|
6469 # Generate 322 keyset key 219 value as 1/0 indicating its presence/absence or
|
|
6470 # count of its presence in a molecule.
|
|
6471 #
|
|
6472 # Key 219 description: O#I
|
|
6473 #
|
|
6474 sub _Generate322KeySetKey219 {
|
|
6475 my($This) = @_;
|
|
6476 my($BondSymbol) = '#';
|
|
6477
|
|
6478 return $This->_DetectBondKeys('O', 'I', $BondSymbol);
|
|
6479 }
|
|
6480
|
|
6481 # Generate 322 keyset key 220 value as 1/0 indicating its presence/absence or
|
|
6482 # count of its presence in a molecule.
|
|
6483 #
|
|
6484 # Key 220 description: O#X
|
|
6485 #
|
|
6486 sub _Generate322KeySetKey220 {
|
|
6487 my($This) = @_;
|
|
6488 my($BondSymbol) = '#';
|
|
6489
|
|
6490 return $This->_DetectBondKeys('O', 'Z', $BondSymbol);
|
|
6491 }
|
|
6492
|
|
6493 # Generate 322 keyset key 221 value as 1/0 indicating its presence/absence or
|
|
6494 # count of its presence in a molecule.
|
|
6495 #
|
|
6496 # Key 221 description: S#S
|
|
6497 #
|
|
6498 sub _Generate322KeySetKey221 {
|
|
6499 my($This) = @_;
|
|
6500 my($BondSymbol) = '#';
|
|
6501
|
|
6502 return $This->_DetectBondKeys('S', 'S', $BondSymbol);
|
|
6503 }
|
|
6504
|
|
6505 # Generate 322 keyset key 222 value as 1/0 indicating its presence/absence or
|
|
6506 # count of its presence in a molecule.
|
|
6507 #
|
|
6508 # Key 222 description: S#Cl
|
|
6509 #
|
|
6510 sub _Generate322KeySetKey222 {
|
|
6511 my($This) = @_;
|
|
6512 my($BondSymbol) = '#';
|
|
6513
|
|
6514 return $This->_DetectBondKeys('S', 'Cl', $BondSymbol);
|
|
6515 }
|
|
6516
|
|
6517 # Generate 322 keyset key 223 value as 1/0 indicating its presence/absence or
|
|
6518 # count of its presence in a molecule.
|
|
6519 #
|
|
6520 # Key 223 description: S#P
|
|
6521 #
|
|
6522 sub _Generate322KeySetKey223 {
|
|
6523 my($This) = @_;
|
|
6524 my($BondSymbol) = '#';
|
|
6525
|
|
6526 return $This->_DetectBondKeys('S', 'P', $BondSymbol);
|
|
6527 }
|
|
6528
|
|
6529 # Generate 322 keyset key 224 value as 1/0 indicating its presence/absence or
|
|
6530 # count of its presence in a molecule.
|
|
6531 #
|
|
6532 # Key 224 description: S#F
|
|
6533 #
|
|
6534 sub _Generate322KeySetKey224 {
|
|
6535 my($This) = @_;
|
|
6536 my($BondSymbol) = '#';
|
|
6537
|
|
6538 return $This->_DetectBondKeys('S', 'F', $BondSymbol);
|
|
6539 }
|
|
6540
|
|
6541 # Generate 322 keyset key 225 value as 1/0 indicating its presence/absence or
|
|
6542 # count of its presence in a molecule.
|
|
6543 #
|
|
6544 # Key 225 description: S#Br
|
|
6545 #
|
|
6546 sub _Generate322KeySetKey225 {
|
|
6547 my($This) = @_;
|
|
6548 my($BondSymbol) = '#';
|
|
6549
|
|
6550 return $This->_DetectBondKeys('S', 'Br', $BondSymbol);
|
|
6551 }
|
|
6552
|
|
6553 # Generate 322 keyset key 226 value as 1/0 indicating its presence/absence or
|
|
6554 # count of its presence in a molecule.
|
|
6555 #
|
|
6556 # Key 226 description: S#Si
|
|
6557 #
|
|
6558 sub _Generate322KeySetKey226 {
|
|
6559 my($This) = @_;
|
|
6560 my($BondSymbol) = '#';
|
|
6561
|
|
6562 return $This->_DetectBondKeys('S', 'Si', $BondSymbol);
|
|
6563 }
|
|
6564
|
|
6565 # Generate 322 keyset key 227 value as 1/0 indicating its presence/absence or
|
|
6566 # count of its presence in a molecule.
|
|
6567 #
|
|
6568 # Key 227 description: S#I
|
|
6569 #
|
|
6570 sub _Generate322KeySetKey227 {
|
|
6571 my($This) = @_;
|
|
6572 my($BondSymbol) = '#';
|
|
6573
|
|
6574 return $This->_DetectBondKeys('S', 'I', $BondSymbol);
|
|
6575 }
|
|
6576
|
|
6577 # Generate 322 keyset key 228 value as 1/0 indicating its presence/absence or
|
|
6578 # count of its presence in a molecule.
|
|
6579 #
|
|
6580 # Key 228 description: S#X
|
|
6581 #
|
|
6582 sub _Generate322KeySetKey228 {
|
|
6583 my($This) = @_;
|
|
6584 my($BondSymbol) = '#';
|
|
6585
|
|
6586 return $This->_DetectBondKeys('S', 'Z', $BondSymbol);
|
|
6587 }
|
|
6588
|
|
6589 # Generate 322 keyset key 229 value as 1/0 indicating its presence/absence or
|
|
6590 # count of its presence in a molecule.
|
|
6591 #
|
|
6592 # Key 229 description: Cl#Cl
|
|
6593 #
|
|
6594 sub _Generate322KeySetKey229 {
|
|
6595 my($This) = @_;
|
|
6596 my($BondSymbol) = '#';
|
|
6597
|
|
6598 return $This->_DetectBondKeys('Cl', 'Cl', $BondSymbol);
|
|
6599 }
|
|
6600
|
|
6601 # Generate 322 keyset key 230 value as 1/0 indicating its presence/absence or
|
|
6602 # count of its presence in a molecule.
|
|
6603 #
|
|
6604 # Key 230 description: Cl#P
|
|
6605 #
|
|
6606 sub _Generate322KeySetKey230 {
|
|
6607 my($This) = @_;
|
|
6608 my($BondSymbol) = '#';
|
|
6609
|
|
6610 return $This->_DetectBondKeys('Cl', 'P', $BondSymbol);
|
|
6611 }
|
|
6612
|
|
6613 # Generate 322 keyset key 231 value as 1/0 indicating its presence/absence or
|
|
6614 # count of its presence in a molecule.
|
|
6615 #
|
|
6616 # Key 231 description: Cl#F
|
|
6617 #
|
|
6618 sub _Generate322KeySetKey231 {
|
|
6619 my($This) = @_;
|
|
6620 my($BondSymbol) = '#';
|
|
6621
|
|
6622 return $This->_DetectBondKeys('Cl', 'F', $BondSymbol);
|
|
6623 }
|
|
6624
|
|
6625 # Generate 322 keyset key 232 value as 1/0 indicating its presence/absence or
|
|
6626 # count of its presence in a molecule.
|
|
6627 #
|
|
6628 # Key 232 description: Cl#Br
|
|
6629 #
|
|
6630 sub _Generate322KeySetKey232 {
|
|
6631 my($This) = @_;
|
|
6632 my($BondSymbol) = '#';
|
|
6633
|
|
6634 return $This->_DetectBondKeys('Cl', 'Br', $BondSymbol);
|
|
6635 }
|
|
6636
|
|
6637 # Generate 322 keyset key 233 value as 1/0 indicating its presence/absence or
|
|
6638 # count of its presence in a molecule.
|
|
6639 #
|
|
6640 # Key 233 description: Cl#Si
|
|
6641 #
|
|
6642 sub _Generate322KeySetKey233 {
|
|
6643 my($This) = @_;
|
|
6644 my($BondSymbol) = '#';
|
|
6645
|
|
6646 return $This->_DetectBondKeys('Cl', 'Si', $BondSymbol);
|
|
6647 }
|
|
6648
|
|
6649 # Generate 322 keyset key 234 value as 1/0 indicating its presence/absence or
|
|
6650 # count of its presence in a molecule.
|
|
6651 #
|
|
6652 # Key 234 description: Cl#I
|
|
6653 #
|
|
6654 sub _Generate322KeySetKey234 {
|
|
6655 my($This) = @_;
|
|
6656 my($BondSymbol) = '#';
|
|
6657
|
|
6658 return $This->_DetectBondKeys('Cl', 'I', $BondSymbol);
|
|
6659 }
|
|
6660
|
|
6661 # Generate 322 keyset key 235 value as 1/0 indicating its presence/absence or
|
|
6662 # count of its presence in a molecule.
|
|
6663 #
|
|
6664 # Key 235 description: Cl#X
|
|
6665 #
|
|
6666 sub _Generate322KeySetKey235 {
|
|
6667 my($This) = @_;
|
|
6668 my($BondSymbol) = '#';
|
|
6669
|
|
6670 return $This->_DetectBondKeys('Cl', 'Z', $BondSymbol);
|
|
6671 }
|
|
6672
|
|
6673 # Generate 322 keyset key 236 value as 1/0 indicating its presence/absence or
|
|
6674 # count of its presence in a molecule.
|
|
6675 #
|
|
6676 # Key 236 description: P#P
|
|
6677 #
|
|
6678 sub _Generate322KeySetKey236 {
|
|
6679 my($This) = @_;
|
|
6680 my($BondSymbol) = '#';
|
|
6681
|
|
6682 return $This->_DetectBondKeys('P', 'P', $BondSymbol);
|
|
6683 }
|
|
6684
|
|
6685 # Generate 322 keyset key 237 value as 1/0 indicating its presence/absence or
|
|
6686 # count of its presence in a molecule.
|
|
6687 #
|
|
6688 # Key 237 description: P#F
|
|
6689 #
|
|
6690 sub _Generate322KeySetKey237 {
|
|
6691 my($This) = @_;
|
|
6692 my($BondSymbol) = '#';
|
|
6693
|
|
6694 return $This->_DetectBondKeys('P', 'F', $BondSymbol);
|
|
6695 }
|
|
6696
|
|
6697 # Generate 322 keyset key 238 value as 1/0 indicating its presence/absence or
|
|
6698 # count of its presence in a molecule.
|
|
6699 #
|
|
6700 # Key 238 description: P#Br
|
|
6701 #
|
|
6702 sub _Generate322KeySetKey238 {
|
|
6703 my($This) = @_;
|
|
6704 my($BondSymbol) = '#';
|
|
6705
|
|
6706 return $This->_DetectBondKeys('P', 'Br', $BondSymbol);
|
|
6707 }
|
|
6708
|
|
6709 # Generate 322 keyset key 239 value as 1/0 indicating its presence/absence or
|
|
6710 # count of its presence in a molecule.
|
|
6711 #
|
|
6712 # Key 239 description: P#Si
|
|
6713 #
|
|
6714 sub _Generate322KeySetKey239 {
|
|
6715 my($This) = @_;
|
|
6716 my($BondSymbol) = '#';
|
|
6717
|
|
6718 return $This->_DetectBondKeys('P', 'Si', $BondSymbol);
|
|
6719 }
|
|
6720
|
|
6721 # Generate 322 keyset key 240 value as 1/0 indicating its presence/absence or
|
|
6722 # count of its presence in a molecule.
|
|
6723 #
|
|
6724 # Key 240 description: P#I
|
|
6725 #
|
|
6726 sub _Generate322KeySetKey240 {
|
|
6727 my($This) = @_;
|
|
6728 my($BondSymbol) = '#';
|
|
6729
|
|
6730 return $This->_DetectBondKeys('P', 'I', $BondSymbol);
|
|
6731 }
|
|
6732
|
|
6733 # Generate 322 keyset key 241 value as 1/0 indicating its presence/absence or
|
|
6734 # count of its presence in a molecule.
|
|
6735 #
|
|
6736 # Key 241 description: P#X
|
|
6737 #
|
|
6738 sub _Generate322KeySetKey241 {
|
|
6739 my($This) = @_;
|
|
6740 my($BondSymbol) = '#';
|
|
6741
|
|
6742 return $This->_DetectBondKeys('P', 'Z', $BondSymbol);
|
|
6743 }
|
|
6744
|
|
6745 # Generate 322 keyset key 242 value as 1/0 indicating its presence/absence or
|
|
6746 # count of its presence in a molecule.
|
|
6747 #
|
|
6748 # Key 242 description: F#F
|
|
6749 #
|
|
6750 sub _Generate322KeySetKey242 {
|
|
6751 my($This) = @_;
|
|
6752 my($BondSymbol) = '#';
|
|
6753
|
|
6754 return $This->_DetectBondKeys('F', 'F', $BondSymbol);
|
|
6755 }
|
|
6756
|
|
6757 # Generate 322 keyset key 243 value as 1/0 indicating its presence/absence or
|
|
6758 # count of its presence in a molecule.
|
|
6759 #
|
|
6760 # Key 243 description: F#Br
|
|
6761 #
|
|
6762 sub _Generate322KeySetKey243 {
|
|
6763 my($This) = @_;
|
|
6764 my($BondSymbol) = '#';
|
|
6765
|
|
6766 return $This->_DetectBondKeys('F', 'Br', $BondSymbol);
|
|
6767 }
|
|
6768
|
|
6769 # Generate 322 keyset key 244 value as 1/0 indicating its presence/absence or
|
|
6770 # count of its presence in a molecule.
|
|
6771 #
|
|
6772 # Key 244 description: F#Si
|
|
6773 #
|
|
6774 sub _Generate322KeySetKey244 {
|
|
6775 my($This) = @_;
|
|
6776 my($BondSymbol) = '#';
|
|
6777
|
|
6778 return $This->_DetectBondKeys('F', 'Si', $BondSymbol);
|
|
6779 }
|
|
6780
|
|
6781 # Generate 322 keyset key 245 value as 1/0 indicating its presence/absence or
|
|
6782 # count of its presence in a molecule.
|
|
6783 #
|
|
6784 # Key 245 description: F#I
|
|
6785 #
|
|
6786 sub _Generate322KeySetKey245 {
|
|
6787 my($This) = @_;
|
|
6788 my($BondSymbol) = '#';
|
|
6789
|
|
6790 return $This->_DetectBondKeys('F', 'I', $BondSymbol);
|
|
6791 }
|
|
6792
|
|
6793 # Generate 322 keyset key 246 value as 1/0 indicating its presence/absence or
|
|
6794 # count of its presence in a molecule.
|
|
6795 #
|
|
6796 # Key 246 description: F#X
|
|
6797 #
|
|
6798 sub _Generate322KeySetKey246 {
|
|
6799 my($This) = @_;
|
|
6800 my($BondSymbol) = '#';
|
|
6801
|
|
6802 return $This->_DetectBondKeys('F', 'Z', $BondSymbol);
|
|
6803 }
|
|
6804
|
|
6805 # Generate 322 keyset key 247 value as 1/0 indicating its presence/absence or
|
|
6806 # count of its presence in a molecule.
|
|
6807 #
|
|
6808 # Key 247 description: Br#Br
|
|
6809 #
|
|
6810 sub _Generate322KeySetKey247 {
|
|
6811 my($This) = @_;
|
|
6812 my($BondSymbol) = '#';
|
|
6813
|
|
6814 return $This->_DetectBondKeys('Br', 'Br', $BondSymbol);
|
|
6815 }
|
|
6816
|
|
6817 # Generate 322 keyset key 248 value as 1/0 indicating its presence/absence or
|
|
6818 # count of its presence in a molecule.
|
|
6819 #
|
|
6820 # Key 248 description: Br#Si
|
|
6821 #
|
|
6822 sub _Generate322KeySetKey248 {
|
|
6823 my($This) = @_;
|
|
6824 my($BondSymbol) = '#';
|
|
6825
|
|
6826 return $This->_DetectBondKeys('Br', 'Si', $BondSymbol);
|
|
6827 }
|
|
6828
|
|
6829 # Generate 322 keyset key 249 value as 1/0 indicating its presence/absence or
|
|
6830 # count of its presence in a molecule.
|
|
6831 #
|
|
6832 # Key 249 description: Br#I
|
|
6833 #
|
|
6834 sub _Generate322KeySetKey249 {
|
|
6835 my($This) = @_;
|
|
6836 my($BondSymbol) = '#';
|
|
6837
|
|
6838 return $This->_DetectBondKeys('Br', 'I', $BondSymbol);
|
|
6839 }
|
|
6840
|
|
6841 # Generate 322 keyset key 250 value as 1/0 indicating its presence/absence or
|
|
6842 # count of its presence in a molecule.
|
|
6843 #
|
|
6844 # Key 250 description: Br#X
|
|
6845 #
|
|
6846 sub _Generate322KeySetKey250 {
|
|
6847 my($This) = @_;
|
|
6848 my($BondSymbol) = '#';
|
|
6849
|
|
6850 return $This->_DetectBondKeys('Br', 'Z', $BondSymbol);
|
|
6851 }
|
|
6852
|
|
6853 # Generate 322 keyset key 251 value as 1/0 indicating its presence/absence or
|
|
6854 # count of its presence in a molecule.
|
|
6855 #
|
|
6856 # Key 251 description: Si#Si
|
|
6857 #
|
|
6858 sub _Generate322KeySetKey251 {
|
|
6859 my($This) = @_;
|
|
6860 my($BondSymbol) = '#';
|
|
6861
|
|
6862 return $This->_DetectBondKeys('Si', 'Si', $BondSymbol);
|
|
6863 }
|
|
6864
|
|
6865 # Generate 322 keyset key 252 value as 1/0 indicating its presence/absence or
|
|
6866 # count of its presence in a molecule.
|
|
6867 #
|
|
6868 # Key 252 description: Si#I
|
|
6869 #
|
|
6870 sub _Generate322KeySetKey252 {
|
|
6871 my($This) = @_;
|
|
6872 my($BondSymbol) = '#';
|
|
6873
|
|
6874 return $This->_DetectBondKeys('Si', 'I', $BondSymbol);
|
|
6875 }
|
|
6876
|
|
6877 # Generate 322 keyset key 253 value as 1/0 indicating its presence/absence or
|
|
6878 # count of its presence in a molecule.
|
|
6879 #
|
|
6880 # Key 253 description: Si#X
|
|
6881 #
|
|
6882 sub _Generate322KeySetKey253 {
|
|
6883 my($This) = @_;
|
|
6884 my($BondSymbol) = '#';
|
|
6885
|
|
6886 return $This->_DetectBondKeys('Si', 'Z', $BondSymbol);
|
|
6887 }
|
|
6888
|
|
6889 # Generate 322 keyset key 254 value as 1/0 indicating its presence/absence or
|
|
6890 # count of its presence in a molecule.
|
|
6891 #
|
|
6892 # Key 254 description: I#I
|
|
6893 #
|
|
6894 sub _Generate322KeySetKey254 {
|
|
6895 my($This) = @_;
|
|
6896 my($BondSymbol) = '#';
|
|
6897
|
|
6898 return $This->_DetectBondKeys('I', 'I', $BondSymbol);
|
|
6899 }
|
|
6900
|
|
6901 # Generate 322 keyset key 255 value as 1/0 indicating its presence/absence or
|
|
6902 # count of its presence in a molecule.
|
|
6903 #
|
|
6904 # Key 255 description: I#X
|
|
6905 #
|
|
6906 sub _Generate322KeySetKey255 {
|
|
6907 my($This) = @_;
|
|
6908 my($BondSymbol) = '#';
|
|
6909
|
|
6910 return $This->_DetectBondKeys('I', 'Z', $BondSymbol);
|
|
6911 }
|
|
6912
|
|
6913 # Generate 322 keyset key 256 value as 1/0 indicating its presence/absence or
|
|
6914 # count of its presence in a molecule.
|
|
6915 #
|
|
6916 # Key 256 description: X#X
|
|
6917 #
|
|
6918 sub _Generate322KeySetKey256 {
|
|
6919 my($This) = @_;
|
|
6920 my($BondSymbol) = '#';
|
|
6921
|
|
6922 return $This->_DetectBondKeys('Z', 'Z', $BondSymbol);
|
|
6923 }
|
|
6924
|
|
6925 # Generate 322 keyset key 257 value as 1/0 indicating its presence/absence or
|
|
6926 # count of its presence in a molecule.
|
|
6927 #
|
|
6928 # Key 257 description: C$C
|
|
6929 #
|
|
6930 sub _Generate322KeySetKey257 {
|
|
6931 my($This) = @_;
|
|
6932 my($BondSymbol) = '$';
|
|
6933
|
|
6934 return $This->_DetectBondKeys('C', 'C', $BondSymbol);
|
|
6935 }
|
|
6936
|
|
6937 # Generate 322 keyset key 258 value as 1/0 indicating its presence/absence or
|
|
6938 # count of its presence in a molecule.
|
|
6939 #
|
|
6940 # Key 258 description: C$N
|
|
6941 #
|
|
6942 sub _Generate322KeySetKey258 {
|
|
6943 my($This) = @_;
|
|
6944 my($BondSymbol) = '$';
|
|
6945
|
|
6946 return $This->_DetectBondKeys('C', 'N', $BondSymbol);
|
|
6947 }
|
|
6948
|
|
6949 # Generate 322 keyset key 259 value as 1/0 indicating its presence/absence or
|
|
6950 # count of its presence in a molecule.
|
|
6951 #
|
|
6952 # Key 259 description: C$O
|
|
6953 #
|
|
6954 sub _Generate322KeySetKey259 {
|
|
6955 my($This) = @_;
|
|
6956 my($BondSymbol) = '$';
|
|
6957
|
|
6958 return $This->_DetectBondKeys('C', 'O', $BondSymbol);
|
|
6959 }
|
|
6960
|
|
6961 # Generate 322 keyset key 260 value as 1/0 indicating its presence/absence or
|
|
6962 # count of its presence in a molecule.
|
|
6963 #
|
|
6964 # Key 260 description: C$S
|
|
6965 #
|
|
6966 sub _Generate322KeySetKey260 {
|
|
6967 my($This) = @_;
|
|
6968 my($BondSymbol) = '$';
|
|
6969
|
|
6970 return $This->_DetectBondKeys('C', 'S', $BondSymbol);
|
|
6971 }
|
|
6972
|
|
6973 # Generate 322 keyset key 261 value as 1/0 indicating its presence/absence or
|
|
6974 # count of its presence in a molecule.
|
|
6975 #
|
|
6976 # Key 261 description: C$Cl
|
|
6977 #
|
|
6978 sub _Generate322KeySetKey261 {
|
|
6979 my($This) = @_;
|
|
6980 my($BondSymbol) = '$';
|
|
6981
|
|
6982 return $This->_DetectBondKeys('C', 'Cl', $BondSymbol);
|
|
6983 }
|
|
6984
|
|
6985 # Generate 322 keyset key 262 value as 1/0 indicating its presence/absence or
|
|
6986 # count of its presence in a molecule.
|
|
6987 #
|
|
6988 # Key 262 description: C$P
|
|
6989 #
|
|
6990 sub _Generate322KeySetKey262 {
|
|
6991 my($This) = @_;
|
|
6992 my($BondSymbol) = '$';
|
|
6993
|
|
6994 return $This->_DetectBondKeys('C', 'P', $BondSymbol);
|
|
6995 }
|
|
6996
|
|
6997 # Generate 322 keyset key 263 value as 1/0 indicating its presence/absence or
|
|
6998 # count of its presence in a molecule.
|
|
6999 #
|
|
7000 # Key 263 description: C$F
|
|
7001 #
|
|
7002 sub _Generate322KeySetKey263 {
|
|
7003 my($This) = @_;
|
|
7004 my($BondSymbol) = '$';
|
|
7005
|
|
7006 return $This->_DetectBondKeys('C', 'F', $BondSymbol);
|
|
7007 }
|
|
7008
|
|
7009 # Generate 322 keyset key 264 value as 1/0 indicating its presence/absence or
|
|
7010 # count of its presence in a molecule.
|
|
7011 #
|
|
7012 # Key 264 description: C$Br
|
|
7013 #
|
|
7014 sub _Generate322KeySetKey264 {
|
|
7015 my($This) = @_;
|
|
7016 my($BondSymbol) = '$';
|
|
7017
|
|
7018 return $This->_DetectBondKeys('C', 'Br', $BondSymbol);
|
|
7019 }
|
|
7020
|
|
7021 # Generate 322 keyset key 265 value as 1/0 indicating its presence/absence or
|
|
7022 # count of its presence in a molecule.
|
|
7023 #
|
|
7024 # Key 265 description: C$Si
|
|
7025 #
|
|
7026 sub _Generate322KeySetKey265 {
|
|
7027 my($This) = @_;
|
|
7028 my($BondSymbol) = '$';
|
|
7029
|
|
7030 return $This->_DetectBondKeys('C', 'Si', $BondSymbol);
|
|
7031 }
|
|
7032
|
|
7033 # Generate 322 keyset key 266 value as 1/0 indicating its presence/absence or
|
|
7034 # count of its presence in a molecule.
|
|
7035 #
|
|
7036 # Key 266 description: C$I
|
|
7037 #
|
|
7038 sub _Generate322KeySetKey266 {
|
|
7039 my($This) = @_;
|
|
7040 my($BondSymbol) = '$';
|
|
7041
|
|
7042 return $This->_DetectBondKeys('C', 'I', $BondSymbol);
|
|
7043 }
|
|
7044
|
|
7045 # Generate 322 keyset key 267 value as 1/0 indicating its presence/absence or
|
|
7046 # count of its presence in a molecule.
|
|
7047 #
|
|
7048 # Key 267 description: C$X
|
|
7049 #
|
|
7050 sub _Generate322KeySetKey267 {
|
|
7051 my($This) = @_;
|
|
7052 my($BondSymbol) = '$';
|
|
7053
|
|
7054 return $This->_DetectBondKeys('C', 'Z', $BondSymbol);
|
|
7055 }
|
|
7056
|
|
7057 # Generate 322 keyset key 268 value as 1/0 indicating its presence/absence or
|
|
7058 # count of its presence in a molecule.
|
|
7059 #
|
|
7060 # Key 268 description: N$N
|
|
7061 #
|
|
7062 sub _Generate322KeySetKey268 {
|
|
7063 my($This) = @_;
|
|
7064 my($BondSymbol) = '$';
|
|
7065
|
|
7066 return $This->_DetectBondKeys('N', 'N', $BondSymbol);
|
|
7067 }
|
|
7068
|
|
7069 # Generate 322 keyset key 269 value as 1/0 indicating its presence/absence or
|
|
7070 # count of its presence in a molecule.
|
|
7071 #
|
|
7072 # Key 269 description: N$O
|
|
7073 #
|
|
7074 sub _Generate322KeySetKey269 {
|
|
7075 my($This) = @_;
|
|
7076 my($BondSymbol) = '$';
|
|
7077
|
|
7078 return $This->_DetectBondKeys('N', 'O', $BondSymbol);
|
|
7079 }
|
|
7080
|
|
7081 # Generate 322 keyset key 270 value as 1/0 indicating its presence/absence or
|
|
7082 # count of its presence in a molecule.
|
|
7083 #
|
|
7084 # Key 270 description: N$S
|
|
7085 #
|
|
7086 sub _Generate322KeySetKey270 {
|
|
7087 my($This) = @_;
|
|
7088 my($BondSymbol) = '$';
|
|
7089
|
|
7090 return $This->_DetectBondKeys('N', 'S', $BondSymbol);
|
|
7091 }
|
|
7092
|
|
7093 # Generate 322 keyset key 271 value as 1/0 indicating its presence/absence or
|
|
7094 # count of its presence in a molecule.
|
|
7095 #
|
|
7096 # Key 271 description: N$Cl
|
|
7097 #
|
|
7098 sub _Generate322KeySetKey271 {
|
|
7099 my($This) = @_;
|
|
7100 my($BondSymbol) = '$';
|
|
7101
|
|
7102 return $This->_DetectBondKeys('N', 'Cl', $BondSymbol);
|
|
7103 }
|
|
7104
|
|
7105 # Generate 322 keyset key 272 value as 1/0 indicating its presence/absence or
|
|
7106 # count of its presence in a molecule.
|
|
7107 #
|
|
7108 # Key 272 description: N$P
|
|
7109 #
|
|
7110 sub _Generate322KeySetKey272 {
|
|
7111 my($This) = @_;
|
|
7112 my($BondSymbol) = '$';
|
|
7113
|
|
7114 return $This->_DetectBondKeys('N', 'P', $BondSymbol);
|
|
7115 }
|
|
7116
|
|
7117 # Generate 322 keyset key 273 value as 1/0 indicating its presence/absence or
|
|
7118 # count of its presence in a molecule.
|
|
7119 #
|
|
7120 # Key 273 description: N$F
|
|
7121 #
|
|
7122 sub _Generate322KeySetKey273 {
|
|
7123 my($This) = @_;
|
|
7124 my($BondSymbol) = '$';
|
|
7125
|
|
7126 return $This->_DetectBondKeys('N', 'F', $BondSymbol);
|
|
7127 }
|
|
7128
|
|
7129 # Generate 322 keyset key 274 value as 1/0 indicating its presence/absence or
|
|
7130 # count of its presence in a molecule.
|
|
7131 #
|
|
7132 # Key 274 description: N$Br
|
|
7133 #
|
|
7134 sub _Generate322KeySetKey274 {
|
|
7135 my($This) = @_;
|
|
7136 my($BondSymbol) = '$';
|
|
7137
|
|
7138 return $This->_DetectBondKeys('N', 'Br', $BondSymbol);
|
|
7139 }
|
|
7140
|
|
7141 # Generate 322 keyset key 275 value as 1/0 indicating its presence/absence or
|
|
7142 # count of its presence in a molecule.
|
|
7143 #
|
|
7144 # Key 275 description: N$Si
|
|
7145 #
|
|
7146 sub _Generate322KeySetKey275 {
|
|
7147 my($This) = @_;
|
|
7148 my($BondSymbol) = '$';
|
|
7149
|
|
7150 return $This->_DetectBondKeys('N', 'Si', $BondSymbol);
|
|
7151 }
|
|
7152
|
|
7153 # Generate 322 keyset key 276 value as 1/0 indicating its presence/absence or
|
|
7154 # count of its presence in a molecule.
|
|
7155 #
|
|
7156 # Key 276 description: N$I
|
|
7157 #
|
|
7158 sub _Generate322KeySetKey276 {
|
|
7159 my($This) = @_;
|
|
7160 my($BondSymbol) = '$';
|
|
7161
|
|
7162 return $This->_DetectBondKeys('N', 'I', $BondSymbol);
|
|
7163 }
|
|
7164
|
|
7165 # Generate 322 keyset key 277 value as 1/0 indicating its presence/absence or
|
|
7166 # count of its presence in a molecule.
|
|
7167 #
|
|
7168 # Key 277 description: N$X
|
|
7169 #
|
|
7170 sub _Generate322KeySetKey277 {
|
|
7171 my($This) = @_;
|
|
7172 my($BondSymbol) = '$';
|
|
7173
|
|
7174 return $This->_DetectBondKeys('N', 'Z', $BondSymbol);
|
|
7175 }
|
|
7176
|
|
7177 # Generate 322 keyset key 278 value as 1/0 indicating its presence/absence or
|
|
7178 # count of its presence in a molecule.
|
|
7179 #
|
|
7180 # Key 278 description: O$O
|
|
7181 #
|
|
7182 sub _Generate322KeySetKey278 {
|
|
7183 my($This) = @_;
|
|
7184 my($BondSymbol) = '$';
|
|
7185
|
|
7186 return $This->_DetectBondKeys('O', 'O', $BondSymbol);
|
|
7187 }
|
|
7188
|
|
7189 # Generate 322 keyset key 279 value as 1/0 indicating its presence/absence or
|
|
7190 # count of its presence in a molecule.
|
|
7191 #
|
|
7192 # Key 279 description: O$S
|
|
7193 #
|
|
7194 sub _Generate322KeySetKey279 {
|
|
7195 my($This) = @_;
|
|
7196 my($BondSymbol) = '$';
|
|
7197
|
|
7198 return $This->_DetectBondKeys('O', 'S', $BondSymbol);
|
|
7199 }
|
|
7200
|
|
7201 # Generate 322 keyset key 280 value as 1/0 indicating its presence/absence or
|
|
7202 # count of its presence in a molecule.
|
|
7203 #
|
|
7204 # Key 280 description: O$Cl
|
|
7205 #
|
|
7206 sub _Generate322KeySetKey280 {
|
|
7207 my($This) = @_;
|
|
7208 my($BondSymbol) = '$';
|
|
7209
|
|
7210 return $This->_DetectBondKeys('O', 'Cl', $BondSymbol);
|
|
7211 }
|
|
7212
|
|
7213 # Generate 322 keyset key 281 value as 1/0 indicating its presence/absence or
|
|
7214 # count of its presence in a molecule.
|
|
7215 #
|
|
7216 # Key 281 description: O$P
|
|
7217 #
|
|
7218 sub _Generate322KeySetKey281 {
|
|
7219 my($This) = @_;
|
|
7220 my($BondSymbol) = '$';
|
|
7221
|
|
7222 return $This->_DetectBondKeys('O', 'P', $BondSymbol);
|
|
7223 }
|
|
7224
|
|
7225 # Generate 322 keyset key 282 value as 1/0 indicating its presence/absence or
|
|
7226 # count of its presence in a molecule.
|
|
7227 #
|
|
7228 # Key 282 description: O$F
|
|
7229 #
|
|
7230 sub _Generate322KeySetKey282 {
|
|
7231 my($This) = @_;
|
|
7232 my($BondSymbol) = '$';
|
|
7233
|
|
7234 return $This->_DetectBondKeys('O', 'F', $BondSymbol);
|
|
7235 }
|
|
7236
|
|
7237 # Generate 322 keyset key 283 value as 1/0 indicating its presence/absence or
|
|
7238 # count of its presence in a molecule.
|
|
7239 #
|
|
7240 # Key 283 description: O$Br
|
|
7241 #
|
|
7242 sub _Generate322KeySetKey283 {
|
|
7243 my($This) = @_;
|
|
7244 my($BondSymbol) = '$';
|
|
7245
|
|
7246 return $This->_DetectBondKeys('O', 'Br', $BondSymbol);
|
|
7247 }
|
|
7248
|
|
7249 # Generate 322 keyset key 284 value as 1/0 indicating its presence/absence or
|
|
7250 # count of its presence in a molecule.
|
|
7251 #
|
|
7252 # Key 284 description: O$Si
|
|
7253 #
|
|
7254 sub _Generate322KeySetKey284 {
|
|
7255 my($This) = @_;
|
|
7256 my($BondSymbol) = '$';
|
|
7257
|
|
7258 return $This->_DetectBondKeys('O', 'Si', $BondSymbol);
|
|
7259 }
|
|
7260
|
|
7261 # Generate 322 keyset key 285 value as 1/0 indicating its presence/absence or
|
|
7262 # count of its presence in a molecule.
|
|
7263 #
|
|
7264 # Key 285 description: O$I
|
|
7265 #
|
|
7266 sub _Generate322KeySetKey285 {
|
|
7267 my($This) = @_;
|
|
7268 my($BondSymbol) = '$';
|
|
7269
|
|
7270 return $This->_DetectBondKeys('O', 'I', $BondSymbol);
|
|
7271 }
|
|
7272
|
|
7273 # Generate 322 keyset key 286 value as 1/0 indicating its presence/absence or
|
|
7274 # count of its presence in a molecule.
|
|
7275 #
|
|
7276 # Key 286 description: O$X
|
|
7277 #
|
|
7278 sub _Generate322KeySetKey286 {
|
|
7279 my($This) = @_;
|
|
7280 my($BondSymbol) = '$';
|
|
7281
|
|
7282 return $This->_DetectBondKeys('O', 'Z', $BondSymbol);
|
|
7283 }
|
|
7284
|
|
7285 # Generate 322 keyset key 287 value as 1/0 indicating its presence/absence or
|
|
7286 # count of its presence in a molecule.
|
|
7287 #
|
|
7288 # Key 287 description: S$S
|
|
7289 #
|
|
7290 sub _Generate322KeySetKey287 {
|
|
7291 my($This) = @_;
|
|
7292 my($BondSymbol) = '$';
|
|
7293
|
|
7294 return $This->_DetectBondKeys('S', 'S', $BondSymbol);
|
|
7295 }
|
|
7296
|
|
7297 # Generate 322 keyset key 288 value as 1/0 indicating its presence/absence or
|
|
7298 # count of its presence in a molecule.
|
|
7299 #
|
|
7300 # Key 288 description: S$Cl
|
|
7301 #
|
|
7302 sub _Generate322KeySetKey288 {
|
|
7303 my($This) = @_;
|
|
7304 my($BondSymbol) = '$';
|
|
7305
|
|
7306 return $This->_DetectBondKeys('S', 'Cl', $BondSymbol);
|
|
7307 }
|
|
7308
|
|
7309 # Generate 322 keyset key 289 value as 1/0 indicating its presence/absence or
|
|
7310 # count of its presence in a molecule.
|
|
7311 #
|
|
7312 # Key 289 description: S$P
|
|
7313 #
|
|
7314 sub _Generate322KeySetKey289 {
|
|
7315 my($This) = @_;
|
|
7316 my($BondSymbol) = '$';
|
|
7317
|
|
7318 return $This->_DetectBondKeys('S', 'P', $BondSymbol);
|
|
7319 }
|
|
7320
|
|
7321 # Generate 322 keyset key 290 value as 1/0 indicating its presence/absence or
|
|
7322 # count of its presence in a molecule.
|
|
7323 #
|
|
7324 # Key 290 description: S$F
|
|
7325 #
|
|
7326 sub _Generate322KeySetKey290 {
|
|
7327 my($This) = @_;
|
|
7328 my($BondSymbol) = '$';
|
|
7329
|
|
7330 return $This->_DetectBondKeys('S', 'F', $BondSymbol);
|
|
7331 }
|
|
7332
|
|
7333 # Generate 322 keyset key 291 value as 1/0 indicating its presence/absence or
|
|
7334 # count of its presence in a molecule.
|
|
7335 #
|
|
7336 # Key 291 description: S$Br
|
|
7337 #
|
|
7338 sub _Generate322KeySetKey291 {
|
|
7339 my($This) = @_;
|
|
7340 my($BondSymbol) = '$';
|
|
7341
|
|
7342 return $This->_DetectBondKeys('S', 'Br', $BondSymbol);
|
|
7343 }
|
|
7344
|
|
7345 # Generate 322 keyset key 292 value as 1/0 indicating its presence/absence or
|
|
7346 # count of its presence in a molecule.
|
|
7347 #
|
|
7348 # Key 292 description: S$Si
|
|
7349 #
|
|
7350 sub _Generate322KeySetKey292 {
|
|
7351 my($This) = @_;
|
|
7352 my($BondSymbol) = '$';
|
|
7353
|
|
7354 return $This->_DetectBondKeys('S', 'Si', $BondSymbol);
|
|
7355 }
|
|
7356
|
|
7357 # Generate 322 keyset key 293 value as 1/0 indicating its presence/absence or
|
|
7358 # count of its presence in a molecule.
|
|
7359 #
|
|
7360 # Key 293 description: S$I
|
|
7361 #
|
|
7362 sub _Generate322KeySetKey293 {
|
|
7363 my($This) = @_;
|
|
7364 my($BondSymbol) = '$';
|
|
7365
|
|
7366 return $This->_DetectBondKeys('S', 'I', $BondSymbol);
|
|
7367 }
|
|
7368
|
|
7369 # Generate 322 keyset key 294 value as 1/0 indicating its presence/absence or
|
|
7370 # count of its presence in a molecule.
|
|
7371 #
|
|
7372 # Key 294 description: S$X
|
|
7373 #
|
|
7374 sub _Generate322KeySetKey294 {
|
|
7375 my($This) = @_;
|
|
7376 my($BondSymbol) = '$';
|
|
7377
|
|
7378 return $This->_DetectBondKeys('S', 'Z', $BondSymbol);
|
|
7379 }
|
|
7380
|
|
7381 # Generate 322 keyset key 295 value as 1/0 indicating its presence/absence or
|
|
7382 # count of its presence in a molecule.
|
|
7383 #
|
|
7384 # Key 295 description: Cl$Cl
|
|
7385 #
|
|
7386 sub _Generate322KeySetKey295 {
|
|
7387 my($This) = @_;
|
|
7388 my($BondSymbol) = '$';
|
|
7389
|
|
7390 return $This->_DetectBondKeys('Cl', 'Cl', $BondSymbol);
|
|
7391 }
|
|
7392
|
|
7393 # Generate 322 keyset key 296 value as 1/0 indicating its presence/absence or
|
|
7394 # count of its presence in a molecule.
|
|
7395 #
|
|
7396 # Key 296 description: Cl$P
|
|
7397 #
|
|
7398 sub _Generate322KeySetKey296 {
|
|
7399 my($This) = @_;
|
|
7400 my($BondSymbol) = '$';
|
|
7401
|
|
7402 return $This->_DetectBondKeys('Cl', 'P', $BondSymbol);
|
|
7403 }
|
|
7404
|
|
7405 # Generate 322 keyset key 297 value as 1/0 indicating its presence/absence or
|
|
7406 # count of its presence in a molecule.
|
|
7407 #
|
|
7408 # Key 297 description: Cl$F
|
|
7409 #
|
|
7410 sub _Generate322KeySetKey297 {
|
|
7411 my($This) = @_;
|
|
7412 my($BondSymbol) = '$';
|
|
7413
|
|
7414 return $This->_DetectBondKeys('Cl', 'F', $BondSymbol);
|
|
7415 }
|
|
7416
|
|
7417 # Generate 322 keyset key 298 value as 1/0 indicating its presence/absence or
|
|
7418 # count of its presence in a molecule.
|
|
7419 #
|
|
7420 # Key 298 description: Cl$Br
|
|
7421 #
|
|
7422 sub _Generate322KeySetKey298 {
|
|
7423 my($This) = @_;
|
|
7424 my($BondSymbol) = '$';
|
|
7425
|
|
7426 return $This->_DetectBondKeys('Cl', 'Br', $BondSymbol);
|
|
7427 }
|
|
7428
|
|
7429 # Generate 322 keyset key 299 value as 1/0 indicating its presence/absence or
|
|
7430 # count of its presence in a molecule.
|
|
7431 #
|
|
7432 # Key 299 description: Cl$Si
|
|
7433 #
|
|
7434 sub _Generate322KeySetKey299 {
|
|
7435 my($This) = @_;
|
|
7436 my($BondSymbol) = '$';
|
|
7437
|
|
7438 return $This->_DetectBondKeys('Cl', 'Si', $BondSymbol);
|
|
7439 }
|
|
7440
|
|
7441 # Generate 322 keyset key 300 value as 1/0 indicating its presence/absence or
|
|
7442 # count of its presence in a molecule.
|
|
7443 #
|
|
7444 # Key 300 description: Cl$I
|
|
7445 #
|
|
7446 sub _Generate322KeySetKey300 {
|
|
7447 my($This) = @_;
|
|
7448 my($BondSymbol) = '$';
|
|
7449
|
|
7450 return $This->_DetectBondKeys('Cl', 'I', $BondSymbol);
|
|
7451 }
|
|
7452
|
|
7453 # Generate 322 keyset key 301 value as 1/0 indicating its presence/absence or
|
|
7454 # count of its presence in a molecule.
|
|
7455 #
|
|
7456 # Key 301 description: Cl$X
|
|
7457 #
|
|
7458 sub _Generate322KeySetKey301 {
|
|
7459 my($This) = @_;
|
|
7460 my($BondSymbol) = '$';
|
|
7461
|
|
7462 return $This->_DetectBondKeys('Cl', 'Z', $BondSymbol);
|
|
7463 }
|
|
7464
|
|
7465 # Generate 322 keyset key 302 value as 1/0 indicating its presence/absence or
|
|
7466 # count of its presence in a molecule.
|
|
7467 #
|
|
7468 # Key 302 description: P$P
|
|
7469 #
|
|
7470 sub _Generate322KeySetKey302 {
|
|
7471 my($This) = @_;
|
|
7472 my($BondSymbol) = '$';
|
|
7473
|
|
7474 return $This->_DetectBondKeys('P', 'P', $BondSymbol);
|
|
7475 }
|
|
7476
|
|
7477 # Generate 322 keyset key 303 value as 1/0 indicating its presence/absence or
|
|
7478 # count of its presence in a molecule.
|
|
7479 #
|
|
7480 # Key 303 description: P$F
|
|
7481 #
|
|
7482 sub _Generate322KeySetKey303 {
|
|
7483 my($This) = @_;
|
|
7484 my($BondSymbol) = '$';
|
|
7485
|
|
7486 return $This->_DetectBondKeys('P', 'F', $BondSymbol);
|
|
7487 }
|
|
7488
|
|
7489 # Generate 322 keyset key 304 value as 1/0 indicating its presence/absence or
|
|
7490 # count of its presence in a molecule.
|
|
7491 #
|
|
7492 # Key 304 description: P$Br
|
|
7493 #
|
|
7494 sub _Generate322KeySetKey304 {
|
|
7495 my($This) = @_;
|
|
7496 my($BondSymbol) = '$';
|
|
7497
|
|
7498 return $This->_DetectBondKeys('P', 'Br', $BondSymbol);
|
|
7499 }
|
|
7500
|
|
7501 # Generate 322 keyset key 305 value as 1/0 indicating its presence/absence or
|
|
7502 # count of its presence in a molecule.
|
|
7503 #
|
|
7504 # Key 305 description: P$Si
|
|
7505 #
|
|
7506 sub _Generate322KeySetKey305 {
|
|
7507 my($This) = @_;
|
|
7508 my($BondSymbol) = '$';
|
|
7509
|
|
7510 return $This->_DetectBondKeys('P', 'Si', $BondSymbol);
|
|
7511 }
|
|
7512
|
|
7513 # Generate 322 keyset key 306 value as 1/0 indicating its presence/absence or
|
|
7514 # count of its presence in a molecule.
|
|
7515 #
|
|
7516 # Key 306 description: P$I
|
|
7517 #
|
|
7518 sub _Generate322KeySetKey306 {
|
|
7519 my($This) = @_;
|
|
7520 my($BondSymbol) = '$';
|
|
7521
|
|
7522 return $This->_DetectBondKeys('P', 'I', $BondSymbol);
|
|
7523 }
|
|
7524
|
|
7525 # Generate 322 keyset key 307 value as 1/0 indicating its presence/absence or
|
|
7526 # count of its presence in a molecule.
|
|
7527 #
|
|
7528 # Key 307 description: P$X
|
|
7529 #
|
|
7530 sub _Generate322KeySetKey307 {
|
|
7531 my($This) = @_;
|
|
7532 my($BondSymbol) = '$';
|
|
7533
|
|
7534 return $This->_DetectBondKeys('P', 'Z', $BondSymbol);
|
|
7535 }
|
|
7536
|
|
7537 # Generate 322 keyset key 308 value as 1/0 indicating its presence/absence or
|
|
7538 # count of its presence in a molecule.
|
|
7539 #
|
|
7540 # Key 308 description: F$F
|
|
7541 #
|
|
7542 sub _Generate322KeySetKey308 {
|
|
7543 my($This) = @_;
|
|
7544 my($BondSymbol) = '$';
|
|
7545
|
|
7546 return $This->_DetectBondKeys('F', 'F', $BondSymbol);
|
|
7547 }
|
|
7548
|
|
7549 # Generate 322 keyset key 309 value as 1/0 indicating its presence/absence or
|
|
7550 # count of its presence in a molecule.
|
|
7551 #
|
|
7552 # Key 309 description: F$Br
|
|
7553 #
|
|
7554 sub _Generate322KeySetKey309 {
|
|
7555 my($This) = @_;
|
|
7556 my($BondSymbol) = '$';
|
|
7557
|
|
7558 return $This->_DetectBondKeys('F', 'Br', $BondSymbol);
|
|
7559 }
|
|
7560
|
|
7561 # Generate 322 keyset key 310 value as 1/0 indicating its presence/absence or
|
|
7562 # count of its presence in a molecule.
|
|
7563 #
|
|
7564 # Key 310 description: F$Si
|
|
7565 #
|
|
7566 sub _Generate322KeySetKey310 {
|
|
7567 my($This) = @_;
|
|
7568 my($BondSymbol) = '$';
|
|
7569
|
|
7570 return $This->_DetectBondKeys('F', 'Si', $BondSymbol);
|
|
7571 }
|
|
7572
|
|
7573 # Generate 322 keyset key 311 value as 1/0 indicating its presence/absence or
|
|
7574 # count of its presence in a molecule.
|
|
7575 #
|
|
7576 # Key 311 description: F$I
|
|
7577 #
|
|
7578 sub _Generate322KeySetKey311 {
|
|
7579 my($This) = @_;
|
|
7580 my($BondSymbol) = '$';
|
|
7581
|
|
7582 return $This->_DetectBondKeys('F', 'I', $BondSymbol);
|
|
7583 }
|
|
7584
|
|
7585 # Generate 322 keyset key 312 value as 1/0 indicating its presence/absence or
|
|
7586 # count of its presence in a molecule.
|
|
7587 #
|
|
7588 # Key 312 description: F$X
|
|
7589 #
|
|
7590 sub _Generate322KeySetKey312 {
|
|
7591 my($This) = @_;
|
|
7592 my($BondSymbol) = '$';
|
|
7593
|
|
7594 return $This->_DetectBondKeys('F', 'Z', $BondSymbol);
|
|
7595 }
|
|
7596
|
|
7597 # Generate 322 keyset key 313 value as 1/0 indicating its presence/absence or
|
|
7598 # count of its presence in a molecule.
|
|
7599 #
|
|
7600 # Key 313 description: Br$Br
|
|
7601 #
|
|
7602 sub _Generate322KeySetKey313 {
|
|
7603 my($This) = @_;
|
|
7604 my($BondSymbol) = '$';
|
|
7605
|
|
7606 return $This->_DetectBondKeys('Br', 'Br', $BondSymbol);
|
|
7607 }
|
|
7608
|
|
7609 # Generate 322 keyset key 314 value as 1/0 indicating its presence/absence or
|
|
7610 # count of its presence in a molecule.
|
|
7611 #
|
|
7612 # Key 314 description: Br$Si
|
|
7613 #
|
|
7614 sub _Generate322KeySetKey314 {
|
|
7615 my($This) = @_;
|
|
7616 my($BondSymbol) = '$';
|
|
7617
|
|
7618 return $This->_DetectBondKeys('Br', 'Si', $BondSymbol);
|
|
7619 }
|
|
7620
|
|
7621 # Generate 322 keyset key 315 value as 1/0 indicating its presence/absence or
|
|
7622 # count of its presence in a molecule.
|
|
7623 #
|
|
7624 # Key 315 description: Br$I
|
|
7625 #
|
|
7626 sub _Generate322KeySetKey315 {
|
|
7627 my($This) = @_;
|
|
7628 my($BondSymbol) = '$';
|
|
7629
|
|
7630 return $This->_DetectBondKeys('Br', 'I', $BondSymbol);
|
|
7631 }
|
|
7632
|
|
7633 # Generate 322 keyset key 316 value as 1/0 indicating its presence/absence or
|
|
7634 # count of its presence in a molecule.
|
|
7635 #
|
|
7636 # Key 316 description: Br$X
|
|
7637 #
|
|
7638 sub _Generate322KeySetKey316 {
|
|
7639 my($This) = @_;
|
|
7640 my($BondSymbol) = '$';
|
|
7641
|
|
7642 return $This->_DetectBondKeys('Br', 'Z', $BondSymbol);
|
|
7643 }
|
|
7644
|
|
7645 # Generate 322 keyset key 317 value as 1/0 indicating its presence/absence or
|
|
7646 # count of its presence in a molecule.
|
|
7647 #
|
|
7648 # Key 317 description: Si$Si
|
|
7649 #
|
|
7650 sub _Generate322KeySetKey317 {
|
|
7651 my($This) = @_;
|
|
7652 my($BondSymbol) = '$';
|
|
7653
|
|
7654 return $This->_DetectBondKeys('Si', 'Si', $BondSymbol);
|
|
7655 }
|
|
7656
|
|
7657 # Generate 322 keyset key 318 value as 1/0 indicating its presence/absence or
|
|
7658 # count of its presence in a molecule.
|
|
7659 #
|
|
7660 # Key 318 description: Si$I
|
|
7661 #
|
|
7662 sub _Generate322KeySetKey318 {
|
|
7663 my($This) = @_;
|
|
7664 my($BondSymbol) = '$';
|
|
7665
|
|
7666 return $This->_DetectBondKeys('Si', 'I', $BondSymbol);
|
|
7667 }
|
|
7668
|
|
7669 # Generate 322 keyset key 319 value as 1/0 indicating its presence/absence or
|
|
7670 # count of its presence in a molecule.
|
|
7671 #
|
|
7672 # Key 319 description: Si$X
|
|
7673 #
|
|
7674 sub _Generate322KeySetKey319 {
|
|
7675 my($This) = @_;
|
|
7676 my($BondSymbol) = '$';
|
|
7677
|
|
7678 return $This->_DetectBondKeys('Si', 'Z', $BondSymbol);
|
|
7679 }
|
|
7680
|
|
7681 # Generate 322 keyset key 320 value as 1/0 indicating its presence/absence or
|
|
7682 # count of its presence in a molecule.
|
|
7683 #
|
|
7684 # Key 320 description: I$I
|
|
7685 #
|
|
7686 sub _Generate322KeySetKey320 {
|
|
7687 my($This) = @_;
|
|
7688 my($BondSymbol) = '$';
|
|
7689
|
|
7690 return $This->_DetectBondKeys('I', 'I', $BondSymbol);
|
|
7691 }
|
|
7692
|
|
7693 # Generate 322 keyset key 321 value as 1/0 indicating its presence/absence or
|
|
7694 # count of its presence in a molecule.
|
|
7695 #
|
|
7696 # Key 321 description: I$X
|
|
7697 #
|
|
7698 sub _Generate322KeySetKey321 {
|
|
7699 my($This) = @_;
|
|
7700 my($BondSymbol) = '$';
|
|
7701
|
|
7702 return $This->_DetectBondKeys('I', 'Z', $BondSymbol);
|
|
7703 }
|
|
7704
|
|
7705 # Generate 322 keyset key 322 value as 1/0 indicating its presence/absence or
|
|
7706 # count of its presence in a molecule.
|
|
7707 #
|
|
7708 # Key 322 description: X$X
|
|
7709 #
|
|
7710 sub _Generate322KeySetKey322 {
|
|
7711 my($This) = @_;
|
|
7712 my($BondSymbol) = '$';
|
|
7713
|
|
7714 return $This->_DetectBondKeys('Z', 'Z', $BondSymbol);
|
|
7715 }
|
|
7716
|
|
7717 # A : Any valid perodic table elemnet symbol
|
|
7718 sub _IsAtom {
|
|
7719 my($This, $Atom) = @_;
|
|
7720
|
|
7721 return $Atom->GetAtomicNumber() ? 1 : 0;
|
|
7722 }
|
|
7723
|
|
7724 # Q : Hetro atoms; any non-C or non-H atom
|
|
7725 sub _IsHeteroAtom {
|
|
7726 my($This, $Atom) = @_;
|
|
7727
|
|
7728 return ($Atom->GetAtomicNumber() =~ /^(1|6)$/) ? 0 : 1;
|
|
7729 }
|
|
7730
|
|
7731 # X : Halogens; F, Cl, Br, I
|
|
7732 sub _IsHalogenAtom {
|
|
7733 my($This, $Atom) = @_;
|
|
7734
|
|
7735 return ($Atom->GetAtomicNumber() =~ /^(9|17|35|53)$/) ? 1 : 0;
|
|
7736 }
|
|
7737
|
|
7738 # Z : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I
|
|
7739 sub _IsOtherAtom {
|
|
7740 my($This, $Atom) = @_;
|
|
7741
|
|
7742 return ($Atom->GetAtomicNumber() =~ /^(1|6|7|8|9|14|15|16|17|35|53)$/) ? 0 : 1;
|
|
7743 }
|
|
7744
|
|
7745 # Detect atom keys like Cl, Br and so on...
|
|
7746 #
|
|
7747 sub _DetectAtomKeys {
|
|
7748 my($This, $AtomSymbol, $MinKeyCount, $IsInRing, $MinHydrogenCount) = @_;
|
|
7749 my($Atom, $KeyValue);
|
|
7750
|
|
7751 $KeyValue = 0;
|
|
7752 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
7753 if (!$This->_DoesAtomMatchesSymbol($Atom, $AtomSymbol)) {
|
|
7754 next ATOM;
|
|
7755 }
|
|
7756 if (defined($IsInRing) && $IsInRing && !$Atom->IsInRing()) {
|
|
7757 next ATOM;
|
|
7758 }
|
|
7759 if (defined $MinHydrogenCount) {
|
|
7760 if (!$This->_DoesAtomMinHydrogenCountMatch($Atom, $MinHydrogenCount)) {
|
|
7761 next ATOM;
|
|
7762 }
|
|
7763 }
|
|
7764 $KeyValue++;
|
|
7765 if (defined($MinKeyCount) && $KeyValue < $MinKeyCount) {
|
|
7766 next ATOM;
|
|
7767 }
|
|
7768 if ($This->{KeyBits}) {
|
|
7769 $KeyValue = 1;
|
|
7770 last ATOM;
|
|
7771 }
|
|
7772 }
|
|
7773 return $KeyValue;
|
|
7774 }
|
|
7775
|
|
7776 # Detect bond keys like S-S, N-O and so on...
|
|
7777 #
|
|
7778 sub _DetectBondKeys {
|
|
7779 my($This, $AtomSymbol1, $AtomSymbol2, $BondSymbol, $MinKeyCount, $Atom1MinHydrogenCount, $Atom2MinHydrogenCount) = @_;
|
|
7780 my($Atom1, $Atom2, $Bond, $KeyValue, $MatchSpecifiedAtomOrder);
|
|
7781
|
|
7782 $MatchSpecifiedAtomOrder = 0;
|
|
7783
|
|
7784 $KeyValue = 0;
|
|
7785 BOND: for $Bond (@{$This->{Bonds}}) {
|
|
7786 ($Atom1, $Atom2) = $Bond->GetAtoms();
|
|
7787 if (!$This->_DoBondAtomsMatchBondSymbols($Atom1, $Atom2, $AtomSymbol1, $AtomSymbol2, $BondSymbol, $MatchSpecifiedAtomOrder, $Atom1MinHydrogenCount, $Atom2MinHydrogenCount)) {
|
|
7788 next BOND;
|
|
7789 }
|
|
7790 $KeyValue++;
|
|
7791 if (defined($MinKeyCount) && $KeyValue < $MinKeyCount) {
|
|
7792 next BOND;
|
|
7793 }
|
|
7794 if ($This->{KeyBits}) {
|
|
7795 $KeyValue = 1;
|
|
7796 last BOND;
|
|
7797 }
|
|
7798 }
|
|
7799 return $KeyValue;
|
|
7800 }
|
|
7801
|
|
7802 # Detect atom neighborhood keys like ON(C)C, OC(O)O and so on.
|
|
7803 #
|
|
7804 sub _DetectAtomNeighborhoodKeys {
|
|
7805 my($This, $CentralAtomSymbol, $NbrAtomSymbolsRef, $NbrBondSymbolsRef, $MinKeyCount, $CentralAtomMinHydrogenCount, $NbrAtomMinHydrogenCountRef) = @_;
|
|
7806 my($KeyValue, $CentralAtom);
|
|
7807
|
|
7808 $KeyValue = 0;
|
|
7809
|
|
7810 CENTRALATOM: for $CentralAtom (@{$This->{Atoms}}) {
|
|
7811 if (!$This->_DoesAtomNeighborhoodMatch($CentralAtom, $CentralAtomSymbol, $NbrAtomSymbolsRef, $NbrBondSymbolsRef, $CentralAtomMinHydrogenCount, $NbrAtomMinHydrogenCountRef)) {
|
|
7812 next CENTRALATOM;
|
|
7813 }
|
|
7814 $KeyValue++;
|
|
7815 if (defined($MinKeyCount) && $KeyValue < $MinKeyCount) {
|
|
7816 next CENTRALATOM;
|
|
7817 }
|
|
7818 if ($This->{KeyBits}) {
|
|
7819 $KeyValue = 1;
|
|
7820 last CENTRALATOM;
|
|
7821 }
|
|
7822 }
|
|
7823 return $KeyValue;
|
|
7824 }
|
|
7825
|
|
7826 # Detect bond neighborhood keys like A%Anot%A%A and so on.
|
|
7827 #
|
|
7828 sub _DetectBondNeighborhoodKeys {
|
|
7829 my($This, $BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, $NbrAtomSymbolsRef, $NbrBondSymbolsRef, $MinKeyCount, $BondAtomMinHydrogenCountRef, $NbrsMinHydrogenCountRef) = @_;
|
|
7830 my($BondAtomIndex, $BondAtom1, $BondAtom2, $MatchedBondAtom1, $MatchedBondAtom2, $BondAtom, $Bond, $KeyValue, $BondAtomSymbol, $MatchSpecifiedAtomOrder, $BondAtom1MinHydrogenCount, $BondAtom2MinHydrogenCount, $MinHydrogenCount, @NbrsToExcludeFromMatch, @NbrAtomSymbols, @NbrBondSymbols, @NbrMinHydrogenCount, );
|
|
7831
|
|
7832 $MatchSpecifiedAtomOrder = 1;
|
|
7833 ($BondAtom1MinHydrogenCount, $BondAtom2MinHydrogenCount) = defined($BondAtomMinHydrogenCountRef) ? ( @{$BondAtomMinHydrogenCountRef} ) : (undef, undef);
|
|
7834
|
|
7835 $KeyValue = 0;
|
|
7836 BOND: for $Bond (@{$This->{Bonds}}) {
|
|
7837 ($BondAtom1, $BondAtom2) = $Bond->GetAtoms();
|
|
7838
|
|
7839 # Match bond first...
|
|
7840 if ($This->_DoBondAtomsMatchBondSymbols($BondAtom1, $BondAtom2, $BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, $MatchSpecifiedAtomOrder, $BondAtom1MinHydrogenCount, $BondAtom2MinHydrogenCount)) {
|
|
7841 ($MatchedBondAtom1, $MatchedBondAtom2) = ($BondAtom1, $BondAtom2);
|
|
7842 }
|
|
7843 elsif ($This->_DoBondAtomsMatchBondSymbols($BondAtom2, $BondAtom1, $BondAtomSymbol1, $BondAtomSymbol2, $BondSymbol, $MatchSpecifiedAtomOrder, $BondAtom1MinHydrogenCount, $BondAtom2MinHydrogenCount)) {
|
|
7844 ($MatchedBondAtom1, $MatchedBondAtom2) = ($BondAtom2, $BondAtom1);
|
|
7845 }
|
|
7846 else {
|
|
7847 next BOND;
|
|
7848 }
|
|
7849 # Match neighbors of bonded atoms...
|
|
7850 for $BondAtomIndex (0 .. 1) {
|
|
7851 $MinHydrogenCount = undef;
|
|
7852 @NbrsToExcludeFromMatch = ();
|
|
7853
|
|
7854 if ($BondAtomIndex == 0) {
|
|
7855 $BondAtom = $MatchedBondAtom1;
|
|
7856 $BondAtomSymbol = $BondAtomSymbol1;
|
|
7857 push @NbrsToExcludeFromMatch, $MatchedBondAtom2;
|
|
7858 }
|
|
7859 elsif ($BondAtomIndex == 1) {
|
|
7860 $BondAtom = $MatchedBondAtom2;
|
|
7861 $BondAtomSymbol = $BondAtomSymbol2;
|
|
7862 push @NbrsToExcludeFromMatch, $MatchedBondAtom1;
|
|
7863 }
|
|
7864
|
|
7865 @NbrAtomSymbols = (defined($NbrAtomSymbolsRef) && defined($NbrAtomSymbolsRef->[$BondAtomIndex])) ? @{$NbrAtomSymbolsRef->[$BondAtomIndex]} : ();
|
|
7866 @NbrBondSymbols = (defined($NbrBondSymbolsRef) && defined($NbrBondSymbolsRef->[$BondAtomIndex]) ) ? @{$NbrBondSymbolsRef->[$BondAtomIndex]} : ();
|
|
7867 @NbrMinHydrogenCount = (defined($NbrsMinHydrogenCountRef) && defined($NbrsMinHydrogenCountRef->[$BondAtomIndex]) ) ? @{$NbrsMinHydrogenCountRef->[$BondAtomIndex]} : ();
|
|
7868 if (!$This->_DoesAtomNeighborhoodMatch($BondAtom, $BondAtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinHydrogenCount, \@NbrMinHydrogenCount, \@NbrsToExcludeFromMatch)) {
|
|
7869 next BOND;
|
|
7870 }
|
|
7871 }
|
|
7872 $KeyValue++;
|
|
7873 if (defined($MinKeyCount) && $KeyValue < $MinKeyCount) {
|
|
7874 next BOND;
|
|
7875 }
|
|
7876 if ($This->{KeyBits}) {
|
|
7877 $KeyValue = 1;
|
|
7878 last BOND;
|
|
7879 }
|
|
7880 }
|
|
7881 return $KeyValue;
|
|
7882 }
|
|
7883
|
|
7884 # Detect extended atom neighborhood keys like QHAQH, QHAAQH, and so on...
|
|
7885 #
|
|
7886 sub _DetectExtendedAtomNeighborhoodKeys {
|
|
7887 my($This, $CentralAtomsSymbolsRef, $CentralAtomsBondSymbolsRef, $CentralAtomsMinHydrogenCountRef, $MinKeyCount, $NbrAtomSymbolsRef, $NbrBondSymbolsRef, $NbrsMinHydrogenCountRef) = @_;
|
|
7888 my($KeyValue, $Molecule, $FirstCentralAtomIndex, $LastCentralAtomIndex, $NumOfCentralAtoms);
|
|
7889
|
|
7890 $KeyValue = 0;
|
|
7891
|
|
7892 $Molecule = $This->GetMolecule();
|
|
7893 $NumOfCentralAtoms = @{$CentralAtomsSymbolsRef};
|
|
7894 $FirstCentralAtomIndex = 0;
|
|
7895 $LastCentralAtomIndex = $NumOfCentralAtoms - 1;
|
|
7896
|
|
7897 # Retrieve first central atom information...
|
|
7898 my($FirstCentralAtomSymbol, $FirstCentralAtomMinHydrogenCount);
|
|
7899 $FirstCentralAtomSymbol = $CentralAtomsSymbolsRef->[$FirstCentralAtomIndex];
|
|
7900 $FirstCentralAtomMinHydrogenCount = defined($CentralAtomsMinHydrogenCountRef) ? $CentralAtomsMinHydrogenCountRef->[$FirstCentralAtomIndex] : undef;
|
|
7901
|
|
7902 # Retrieve last central atom information...
|
|
7903 my($LastCentralAtomSymbol, $LastCentralAtomMinHydrogenCount);
|
|
7904 $LastCentralAtomSymbol = $CentralAtomsSymbolsRef->[$LastCentralAtomIndex];
|
|
7905 $LastCentralAtomMinHydrogenCount = defined($CentralAtomsMinHydrogenCountRef) ? $CentralAtomsMinHydrogenCountRef->[$LastCentralAtomIndex] : undef;
|
|
7906
|
|
7907 my($Atom, $AtomPathRef, $AtomPathsRef, $FirstAtomIndex, $LastAtomIndex, $AtomIndex, $FirstPathAtom, $LastPathAtom, $FirstPathAtomID, $LastPathAtomID, $DetectedPathID, $PathAtom, $NextPathAtom, $PreviousPathAtom, $AtomSymbol, $NextAtomSymbol, $BondSymbol, $MatchSpecifiedAtomOrder, $MinHydrogenCount, @NbrsToExcludeFromMatch, @NbrAtomSymbols, @NbrBondSymbols, @NbrMinHydrogenCount, %AlreadyDetectedPaths);
|
|
7908
|
|
7909 # Go over all the atoms...
|
|
7910 #
|
|
7911 ATOM: for $Atom (@{$This->{Atoms}}) {
|
|
7912 # Match first central atom...
|
|
7913 if (!$This->_DoesAtomNeighborhoodMatch($Atom, $FirstCentralAtomSymbol, undef, undef, $FirstCentralAtomMinHydrogenCount, undef)) {
|
|
7914 next ATOM;
|
|
7915 }
|
|
7916 # Get atom paths starting from matched central atom with length equal to NumOfCentralAtoms...
|
|
7917 #
|
|
7918 $AtomPathsRef = $Molecule->GetAllAtomPathsStartingAtWithLength($Atom, $NumOfCentralAtoms);
|
|
7919 if (!(defined($AtomPathsRef) && @{$AtomPathsRef})) {
|
|
7920 next ATOM;
|
|
7921 }
|
|
7922 ATOMPATH: for $AtomPathRef (@{$AtomPathsRef}) {
|
|
7923 $FirstAtomIndex = 0;
|
|
7924 $FirstPathAtom = $AtomPathRef->[$FirstAtomIndex];
|
|
7925 $LastAtomIndex = @{$AtomPathRef} - 1;
|
|
7926 $LastPathAtom = $AtomPathRef->[$LastAtomIndex];
|
|
7927
|
|
7928 # Match last central atom to the last atom in path...
|
|
7929 if (!$This->_DoesAtomNeighborhoodMatch($LastPathAtom, $LastCentralAtomSymbol, undef, undef, $LastCentralAtomMinHydrogenCount, undef)) {
|
|
7930 next ATOMPATH;
|
|
7931 }
|
|
7932
|
|
7933 # Match other path atoms with central atoms..
|
|
7934 for $AtomIndex ($FirstAtomIndex .. $LastAtomIndex) {
|
|
7935 $PathAtom = $AtomPathRef->[$AtomIndex];
|
|
7936 $AtomSymbol = $CentralAtomsSymbolsRef->[$AtomIndex];
|
|
7937 $MinHydrogenCount = defined($CentralAtomsMinHydrogenCountRef) ? $CentralAtomsMinHydrogenCountRef->[$AtomIndex] : undef;
|
|
7938
|
|
7939 @NbrsToExcludeFromMatch = ();
|
|
7940 if ($AtomIndex == $FirstAtomIndex) {
|
|
7941 $NextPathAtom = $AtomPathRef->[$AtomIndex + 1]; $PreviousPathAtom = undef;
|
|
7942 push @NbrsToExcludeFromMatch, $NextPathAtom;
|
|
7943 }
|
|
7944 elsif ($AtomIndex == $LastAtomIndex) {
|
|
7945 $NextPathAtom = undef; $PreviousPathAtom = $AtomPathRef->[$AtomIndex - 1];
|
|
7946 push @NbrsToExcludeFromMatch, $PreviousPathAtom;
|
|
7947 }
|
|
7948 else {
|
|
7949 $NextPathAtom = $AtomPathRef->[$AtomIndex + 1]; $PreviousPathAtom = $AtomPathRef->[$AtomIndex - 1];
|
|
7950 push @NbrsToExcludeFromMatch, ($PreviousPathAtom, $NextPathAtom);
|
|
7951 }
|
|
7952
|
|
7953 @NbrAtomSymbols = (defined($NbrAtomSymbolsRef) && defined($NbrAtomSymbolsRef->[$AtomIndex])) ? @{$NbrAtomSymbolsRef->[$AtomIndex]} : ();
|
|
7954 @NbrBondSymbols = (defined($NbrBondSymbolsRef) && defined($NbrBondSymbolsRef->[$AtomIndex]) ) ? @{$NbrBondSymbolsRef->[$AtomIndex]} : ();
|
|
7955 @NbrMinHydrogenCount = (defined($NbrsMinHydrogenCountRef) && defined($NbrsMinHydrogenCountRef->[$AtomIndex]) ) ? @{$NbrsMinHydrogenCountRef->[$AtomIndex]} : ();
|
|
7956
|
|
7957 if (!$This->_DoesAtomNeighborhoodMatch($PathAtom, $AtomSymbol, \@NbrAtomSymbols, \@NbrBondSymbols, $MinHydrogenCount, \@NbrMinHydrogenCount, \@NbrsToExcludeFromMatch)) {
|
|
7958 next ATOMPATH;
|
|
7959 }
|
|
7960 # Match path bond symbols...
|
|
7961 if (defined($CentralAtomsBondSymbolsRef) && ($AtomIndex < $LastAtomIndex)) {
|
|
7962 $NextAtomSymbol = $CentralAtomsSymbolsRef->[$AtomIndex + 1];
|
|
7963 $BondSymbol = $CentralAtomsBondSymbolsRef->[$AtomIndex];
|
|
7964 $MatchSpecifiedAtomOrder = 1;
|
|
7965 if (!$This->_DoBondAtomsMatchBondSymbols($PathAtom, $NextPathAtom, $AtomSymbol, $NextAtomSymbol, $BondSymbol, $MatchSpecifiedAtomOrder)) {
|
|
7966 next ATOMPATH;
|
|
7967 }
|
|
7968 }
|
|
7969 }
|
|
7970 # Keep track of the first and last atom ID in the matched path to avoid double counting of paths...
|
|
7971 if (defined($MinKeyCount) || !$This->{KeyBits}) {
|
|
7972 $FirstPathAtomID = $FirstPathAtom->GetID(); $LastPathAtomID = $LastPathAtom->GetID();
|
|
7973 $DetectedPathID = ($FirstPathAtomID < $LastPathAtomID) ? "${FirstPathAtomID}-${LastPathAtomID}" : "${LastPathAtomID}-${FirstPathAtomID}";
|
|
7974 if (exists $AlreadyDetectedPaths{$DetectedPathID}) {
|
|
7975 $AlreadyDetectedPaths{$DetectedPathID} += 1;
|
|
7976 next ATOMPATH;
|
|
7977 }
|
|
7978 $AlreadyDetectedPaths{$DetectedPathID} = 1;
|
|
7979 }
|
|
7980
|
|
7981 $KeyValue++;
|
|
7982 if (defined($MinKeyCount) && $KeyValue < $MinKeyCount) {
|
|
7983 next ATOMPATH;
|
|
7984 }
|
|
7985 if ($This->{KeyBits}) {
|
|
7986 $KeyValue = 1;
|
|
7987 last ATOM;
|
|
7988 }
|
|
7989 }
|
|
7990 }
|
|
7991 return $KeyValue;
|
|
7992 }
|
|
7993
|
|
7994 # Go over the atoms attached to central atom and match 'em against specified
|
|
7995 # neighborhood atom symbol and bond symbols...
|
|
7996 #
|
|
7997 sub _DoesAtomNeighborhoodMatch {
|
|
7998 my($This, $CentralAtom, $CentralAtomSymbol, $NbrAtomSymbolsRef, $NbrBondSymbolsRef, $CentralAtomMinHydrogenCount, $NbrAtomMinHydrogenCountRef, $NbrsToExcludeRef) = @_;
|
|
7999
|
|
8000 # Match central atom first...
|
|
8001 if (!$This->_DoesAtomMatchesSymbol($CentralAtom, $CentralAtomSymbol)) {
|
|
8002 return 0;
|
|
8003 }
|
|
8004 if (defined $CentralAtomMinHydrogenCount) {
|
|
8005 if (!$This->_DoesAtomMinHydrogenCountMatch($CentralAtom, $CentralAtomMinHydrogenCount)) {
|
|
8006 return 0;
|
|
8007 }
|
|
8008 }
|
|
8009 if (!defined $NbrAtomSymbolsRef) {
|
|
8010 # No neighbors to match...
|
|
8011 return 1;
|
|
8012 }
|
|
8013
|
|
8014 # Match neighbors...
|
|
8015 my($NbrAtom, $Index, $NbrAtomSymbol, $NbrBondSymbol, $NbrAtomMinHydrogenCount, $NbrAtomMatchCount, $MinNbrAtomMatchCount, $MatchSpecifiedAtomOrder, @CentralAtomNeighbors, %NbrAtomAlreadyMatchedMap);
|
|
8016
|
|
8017 $MinNbrAtomMatchCount = @$NbrAtomSymbolsRef;
|
|
8018 if (!$MinNbrAtomMatchCount) {
|
|
8019 # No neighbors to match...
|
|
8020 return 1;
|
|
8021 }
|
|
8022
|
|
8023 $NbrAtomMatchCount = 0;
|
|
8024
|
|
8025 %NbrAtomAlreadyMatchedMap = ();
|
|
8026 $MatchSpecifiedAtomOrder = 1;
|
|
8027
|
|
8028 @CentralAtomNeighbors = ();
|
|
8029 if (defined($NbrsToExcludeRef) && @{$NbrsToExcludeRef}) {
|
|
8030 push @CentralAtomNeighbors, $CentralAtom->GetNeighbors(@{$NbrsToExcludeRef});
|
|
8031 }
|
|
8032 else {
|
|
8033 push @CentralAtomNeighbors, $CentralAtom->GetNeighbors();
|
|
8034 }
|
|
8035
|
|
8036 NBRATOM: for $NbrAtom (@CentralAtomNeighbors) {
|
|
8037 NBRATOMSYMBOL: for $Index (0 .. ($MinNbrAtomMatchCount - 1)) {
|
|
8038 if (exists $NbrAtomAlreadyMatchedMap{$Index}) {
|
|
8039 next NBRATOMSYMBOL;
|
|
8040 }
|
|
8041 $NbrAtomSymbol = $NbrAtomSymbolsRef->[$Index];
|
|
8042 $NbrBondSymbol = $NbrBondSymbolsRef->[$Index];
|
|
8043 if (!$This->_DoBondAtomsMatchBondSymbols($CentralAtom, $NbrAtom, $CentralAtomSymbol, $NbrAtomSymbol, $NbrBondSymbol, $MatchSpecifiedAtomOrder)) {
|
|
8044 next NBRATOMSYMBOL;
|
|
8045 }
|
|
8046
|
|
8047 if (defined($NbrAtomMinHydrogenCountRef) && $NbrAtomMinHydrogenCountRef->[$Index]) {
|
|
8048 $NbrAtomMinHydrogenCount = $NbrAtomMinHydrogenCountRef->[$Index];
|
|
8049 if (!$This->_DoesAtomMinHydrogenCountMatch($NbrAtom, $NbrAtomMinHydrogenCount)) {
|
|
8050 next NBRATOMSYMBOL;
|
|
8051 }
|
|
8052 }
|
|
8053 $NbrAtomAlreadyMatchedMap{$Index} = $Index;
|
|
8054 $NbrAtomMatchCount++;
|
|
8055
|
|
8056 if ($NbrAtomMatchCount == $MinNbrAtomMatchCount) {
|
|
8057 last NBRATOM;
|
|
8058 }
|
|
8059 next NBRATOM;
|
|
8060 }
|
|
8061 }
|
|
8062
|
|
8063 return ($NbrAtomMatchCount == $MinNbrAtomMatchCount) ? 1 : 0;
|
|
8064 }
|
|
8065
|
|
8066 # Checks whether bond atoms match bond symbols...
|
|
8067 #
|
|
8068 sub _DoBondAtomsMatchBondSymbols {
|
|
8069 my($This, $Atom1, $Atom2, $AtomSymbol1, $AtomSymbol2, $BondSymbol, $MatchSpecifiedAtomOrder, $Atom1MinHydrogenCount, $Atom2MinHydrogenCount) = @_;
|
|
8070 my($Status, $ReverseMinHydrogenCountMatch);
|
|
8071
|
|
8072 $ReverseMinHydrogenCountMatch = 0;
|
|
8073
|
|
8074 if (defined($MatchSpecifiedAtomOrder) && $MatchSpecifiedAtomOrder) {
|
|
8075 if (!($This->_DoesAtomMatchesSymbol($Atom1, $AtomSymbol1) && $This->_DoesAtomMatchesSymbol($Atom2, $AtomSymbol2))) {
|
|
8076 return 0;
|
|
8077 }
|
|
8078 }
|
|
8079 else {
|
|
8080 if ($This->_DoesAtomMatchesSymbol($Atom1, $AtomSymbol1) && $This->_DoesAtomMatchesSymbol($Atom2, $AtomSymbol2)) {
|
|
8081 $ReverseMinHydrogenCountMatch = 0;
|
|
8082 }
|
|
8083 elsif ($This->_DoesAtomMatchesSymbol($Atom1, $AtomSymbol2) && $This->_DoesAtomMatchesSymbol($Atom2, $AtomSymbol1)) {
|
|
8084 $ReverseMinHydrogenCountMatch = 1;
|
|
8085 }
|
|
8086 else {
|
|
8087 return 0;
|
|
8088 }
|
|
8089 }
|
|
8090
|
|
8091 # Match any hydrogen count...
|
|
8092 if (defined($Atom1MinHydrogenCount) || defined($Atom2MinHydrogenCount)) {
|
|
8093 my($MinHydrogenCountMatchAtom1, $MinHydrogenCountMatchAtom2);
|
|
8094
|
|
8095 ($MinHydrogenCountMatchAtom1, $MinHydrogenCountMatchAtom2) = $ReverseMinHydrogenCountMatch ? ($Atom2, $Atom1) : ($Atom1, $Atom2);
|
|
8096 if (defined $Atom1MinHydrogenCount ) {
|
|
8097 if (!$This->_DoesAtomMinHydrogenCountMatch($MinHydrogenCountMatchAtom1, $Atom1MinHydrogenCount)) {
|
|
8098 return 0;
|
|
8099 }
|
|
8100 }
|
|
8101 if (defined $Atom2MinHydrogenCount ) {
|
|
8102 if (!$This->_DoesAtomMinHydrogenCountMatch($MinHydrogenCountMatchAtom2, $Atom2MinHydrogenCount)) {
|
|
8103 return 0;
|
|
8104 }
|
|
8105 }
|
|
8106 }
|
|
8107
|
|
8108 if (defined($BondSymbol) && $BondSymbol) {
|
|
8109 my($Bond);
|
|
8110 $Bond = $Atom1->GetBondToAtom($Atom2);
|
|
8111 if (!$This->_DoesBondMatchesSymbol($Bond, $BondSymbol)) {
|
|
8112 return 0;
|
|
8113 }
|
|
8114 }
|
|
8115 return 1;
|
|
8116 }
|
|
8117
|
|
8118 # Match both implicit and explicit hydrogens on central atom...
|
|
8119 sub _DoesAtomMinHydrogenCountMatch {
|
|
8120 my($This, $Atom, $MinHydrogenCount) = @_;
|
|
8121
|
|
8122 if (!(defined($MinHydrogenCount) && $MinHydrogenCount)) {
|
|
8123 return 0;
|
|
8124 }
|
|
8125 return ($Atom->GetNumOfHydrogens() < $MinHydrogenCount) ? 0 : 1;
|
|
8126 }
|
|
8127
|
|
8128 # Checks whether atom matches supported symbol...
|
|
8129 #
|
|
8130 sub _DoesAtomMatchesSymbol {
|
|
8131 my($This, $Atom, $Symbol) = @_;
|
|
8132 my($Status);
|
|
8133
|
|
8134 $Status = 0;
|
|
8135 SYMBOL: {
|
|
8136 if ($Symbol =~ /^Q$/i) { $Status = $This->_IsHeteroAtom($Atom) ? 1 : 0; last SYMBOL; }
|
|
8137 if ($Symbol =~ /^X$/i) { $Status = $This->_IsHalogenAtom($Atom) ? 1 : 0; last SYMBOL; }
|
|
8138 if ($Symbol =~ /^Z$/i) { $Status = $This->_IsOtherAtom($Atom) ? 1 : 0; last SYMBOL; }
|
|
8139 if ($Symbol =~ /^A$/i) { $Status = $This->_IsAtom($Atom) ? 1 : 0; last SYMBOL; }
|
|
8140 $Status = ($Atom->GetAtomSymbol() =~ /^$Symbol$/i) ? 1 : 0;
|
|
8141 }
|
|
8142 return $Status;
|
|
8143 }
|
|
8144
|
|
8145 # Checks whether bond matches supported symbol...
|
|
8146 #
|
|
8147 sub _DoesBondMatchesSymbol {
|
|
8148 my($This, $Bond, $Symbol) = @_;
|
|
8149 my($Status, $BondOrder);
|
|
8150
|
|
8151 $Status = 0;
|
|
8152 SYMBOL: {
|
|
8153 if ($Symbol =~ /^(1|-)$/i) { $Status = $Bond->IsSingle() ? 1 : 0; last SYMBOL; }
|
|
8154 if ($Symbol =~ /^(2|=)$/i) { $Status = $Bond->IsDouble() ? 1 : 0; last SYMBOL; }
|
|
8155 if ($Symbol =~ /^(3|#|T)$/i) { $Status = $Bond->IsTriple() ? 1 : 0; last SYMBOL; }
|
|
8156 if ($Symbol =~ /^(1.5|%)$/i) { $Status = $Bond->IsAromatic() ? 1 : 0; last SYMBOL; }
|
|
8157
|
|
8158 if ($Symbol =~ /^\~$/i) { $Status = ($Bond->IsSingle() || $Bond->IsDouble()) ? 1 : 0; last SYMBOL; }
|
|
8159
|
|
8160 if ($Symbol =~ /^\$$/i) { $Status = $Bond->IsInRing() ? 1 : 0; last SYMBOL; }
|
|
8161 if ($Symbol =~ /^\!$/i) { $Status = $Bond->IsInRing() ? 0 : 1; last SYMBOL; }
|
|
8162
|
|
8163 if ($Symbol =~ /^(\$-)$/i) { $Status = ($Bond->IsInRing() && $Bond->IsSingle()) ? 1 : 0; last SYMBOL; }
|
|
8164 if ($Symbol =~ /^(\$=)$/i) { $Status = ($Bond->IsInRing() && $Bond->IsDouble()) ? 1 : 0; last SYMBOL; }
|
|
8165 if ($Symbol =~ /^(\$#|\$T)$/i) { $Status = ($Bond->IsInRing() && $Bond->IsTriple()) ? 1 : 0; last SYMBOL; }
|
|
8166
|
|
8167 if ($Symbol =~ /^(not%)$/i) { $Status = $Bond->IsAromatic() ? 0 : 1; last SYMBOL; }
|
|
8168 if ($Symbol =~ /^(not%not-)$/i) { $Status = $Bond->IsAromatic() ? 0 : ($Bond->IsSingle() ? 0 : 1); last SYMBOL; }
|
|
8169 if ($Symbol =~ /^(not%not=)$/i) { $Status = $Bond->IsAromatic() ? 0 : ($Bond->IsDouble() ? 0 : 1); last SYMBOL; }
|
|
8170
|
|
8171 $Status = 0;
|
|
8172 }
|
|
8173 return $Status;
|
|
8174 }
|
|
8175
|
|
8176 # Cache appropriate molecule data...
|
|
8177 #
|
|
8178 sub _SetupMoleculeDataCache {
|
|
8179 my($This) = @_;
|
|
8180
|
|
8181 @{$This->{Atoms}} = $This->GetMolecule()->GetAtoms();
|
|
8182 @{$This->{Bonds}} = $This->GetMolecule()->GetBonds();
|
|
8183
|
|
8184 return $This;
|
|
8185 }
|
|
8186
|
|
8187 # Clear cached molecule data...
|
|
8188 #
|
|
8189 sub _ClearMoleculeDataCache {
|
|
8190 my($This) = @_;
|
|
8191
|
|
8192 @{$This->{Atoms}} = ();
|
|
8193 @{$This->{Bonds}} = ();
|
|
8194
|
|
8195 return $This;
|
|
8196 }
|
|
8197
|
|
8198 # Return a string containg data for MACCSKeys object...
|
|
8199 sub StringifyMACCSKeys {
|
|
8200 my($This) = @_;
|
|
8201 my($MACCSKeysString);
|
|
8202
|
|
8203 # Type of Keys...
|
|
8204 $MACCSKeysString = "Type: $This->{Type}; Size: $This->{Size}";
|
|
8205
|
|
8206 if ($This->{Type} =~ /^MACCSKeyBits$/i) {
|
|
8207 $MACCSKeysString .= "; FingerprintsBitVector: < $This->{FingerprintsBitVector} >";
|
|
8208 }
|
|
8209 elsif ($This->{Type} =~ /^MACCSKeyCount$/i) {
|
|
8210 $MACCSKeysString .= "; FingerprintsVector: < $This->{FingerprintsVector} >";
|
|
8211 }
|
|
8212
|
|
8213 return $MACCSKeysString;
|
|
8214 }
|
|
8215
|
|
8216 1;
|
|
8217
|
|
8218 __END__
|
|
8219
|
|
8220 =head1 NAME
|
|
8221
|
|
8222 MACCSKeys
|
|
8223
|
|
8224 =head1 SYNOPSIS
|
|
8225
|
|
8226 use Fingerprints::MACCSKeys;
|
|
8227
|
|
8228 use Fingerprints::MACCSKeys qw(:all);
|
|
8229
|
|
8230 =head1 DESCRIPTION
|
|
8231
|
|
8232 B<MACCSKeys> [ Ref 45-47 ] class provides the following methods:
|
|
8233
|
|
8234 new, GenerateFingerprints, GenerateMACCSKeys, GetDescription, SetSize, SetType,
|
|
8235 StringifyMACCSKeys
|
|
8236
|
|
8237 B<MACCSKeys> is derived from B<Fingerprints> class which in turn is derived from
|
|
8238 B<ObjectProperty> base class that provides methods not explicitly defined in B<MACCSKeys>,
|
|
8239 B<Fingerprints> or B<ObjectProperty> classes using Perl's AUTOLOAD functionality. These
|
|
8240 methods are generated on-the-fly for a specified object property:
|
|
8241
|
|
8242 Set<PropertyName>(<PropertyValue>);
|
|
8243 $PropertyValue = Get<PropertyName>();
|
|
8244 Delete<PropertyName>();
|
|
8245
|
|
8246 For each MACCS (Molecular ACCess System) keys definition, atoms are processed to
|
|
8247 determine their membership to the key and the appropriate molecular fingerprints strings
|
|
8248 are generated. An atom can belong to multiple MACCS keys.
|
|
8249
|
|
8250 For I<MACCSKeyBits> value of B<Type> option, a fingerprint bit-vector string containing
|
|
8251 zeros and ones is generated and for I<MACCSKeyCount> value, a fingerprint vector string
|
|
8252 corresponding to number of MACCS keys [ Ref 45-47 ] is generated.
|
|
8253
|
|
8254 I<MACCSKeyBits or MACCSKeyCount> values for B<Type> along with two possible
|
|
8255 I<166 | 322> values of B<Size> supports generation of four different types of MACCS
|
|
8256 keys fingerprint: I<MACCS166KeyBits, MACCS166KeyCount, MACCS322KeyBits, MACCS322KeyCount>.
|
|
8257
|
|
8258 The current release of MayaChemTools generates the following types of MACCS keys
|
|
8259 fingerprints bit-vector and vector strings:
|
|
8260
|
|
8261 FingerprintsBitVector;MACCSKeyBits;166;BinaryString;Ascending;00000000
|
|
8262 0000000000000000000000000000000001001000010010000000010010000000011100
|
|
8263 0100101010111100011011000100110110000011011110100110111111111111011111
|
|
8264 11111111111110111000
|
|
8265
|
|
8266 FingerprintsBitVector;MACCSKeyBits;166;HexadecimalString;Ascending;000
|
|
8267 000000021210210e845f8d8c60b79dffbffffd1
|
|
8268
|
|
8269 FingerprintsBitVector;MACCSKeyBits;322;BinaryString;Ascending;11101011
|
|
8270 1110011111100101111111000111101100110000000000000011100010000000000000
|
|
8271 0000000000000000000000000000000000000000000000101000000000000000000000
|
|
8272 0000000000000000000000000000000000000000000000000000000000000000000000
|
|
8273 0000000000000000000000000000000000000011000000000000000000000000000000
|
|
8274 0000000000000000000000000000000000000000
|
|
8275
|
|
8276 FingerprintsBitVector;MACCSKeyBits;322;HexadecimalString;Ascending;7d7
|
|
8277 e7af3edc000c1100000000000000500000000000000000000000000000000300000000
|
|
8278 000000000
|
|
8279
|
|
8280 FingerprintsVector;MACCSKeyCount;166;OrderedNumericalValues;ValuesStri
|
|
8281 ng;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
8282 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 4 0 0 2 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0
|
|
8283 0 0 0 0 1 1 8 0 0 0 1 0 0 1 0 1 0 1 0 3 1 3 1 0 0 0 1 2 0 11 1 0 0 0
|
|
8284 5 0 0 1 2 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 4 0 0 1 1 0 4 6 1 1 1 2 1 1
|
|
8285 3 5 2 2 0 5 3 5 1 1 2 5 1 2 1 2 4 8 3 5 5 2 2 0 3 5 4 1
|
|
8286
|
|
8287 FingerprintsVector;MACCSKeyCount;322;OrderedNumericalValues;ValuesStri
|
|
8288 ng;14 8 2 0 2 0 4 4 2 1 4 0 0 2 5 10 5 2 1 0 0 2 0 5 13 3 28 5 5 3 0 0
|
|
8289 0 4 2 1 1 0 1 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 5 3 0 0 0 1 0
|
|
8290 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
|
8291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 2 0 0 0 0 0 0 0 0 0
|
|
8292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
|
|
8293
|
|
8294 =head2 METHODS
|
|
8295
|
|
8296 =over 4
|
|
8297
|
|
8298 =item B<new>
|
|
8299
|
|
8300 $NewMACCSKeys = new MACCSKeys(%NamesAndValues);
|
|
8301
|
|
8302 Using specified I<MACCSKeys> property names and values hash, B<new> method creates a new object
|
|
8303 and returns a reference to newly created B<PathLengthFingerprints> object. By default, the
|
|
8304 following properties are initialized:
|
|
8305
|
|
8306 Molecule = '';
|
|
8307 Type = ''
|
|
8308 Size = ''
|
|
8309
|
|
8310 Examples:
|
|
8311
|
|
8312 $MACCSKeys = new MACCSKeys('Molecule' => $Molecule,
|
|
8313 'Type' => 'MACCSKeyBits',
|
|
8314 'Size' => 166);
|
|
8315
|
|
8316 $MACCSKeys = new MACCSKeys('Molecule' => $Molecule,
|
|
8317 'Type' => 'MACCSKeyCount',
|
|
8318 'Size' => 166);
|
|
8319
|
|
8320 $MACCSKeys = new MACCSKeys('Molecule' => $Molecule,
|
|
8321 'Type' => 'MACCSKeyBit',
|
|
8322 'Size' => 322);
|
|
8323
|
|
8324 $MACCSKeys = new MACCSKeys('Molecule' => $Molecule,
|
|
8325 'Type' => 'MACCSKeyCount',
|
|
8326 'Size' => 322);
|
|
8327
|
|
8328 $MACCSKeys->GenerateMACCSKeys();
|
|
8329 print "$MACCSKeys\n";
|
|
8330
|
|
8331 =item B<GetDescription>
|
|
8332
|
|
8333 $Description = $MACCSKeys->GetDescription();
|
|
8334
|
|
8335 Returns a string containing description of MACCS keys fingerprints.
|
|
8336
|
|
8337 =item B<GenerateMACCSKeys or GenerateFingerprints>
|
|
8338
|
|
8339 $MACCSKeys = $MACCSKeys->GenerateMACCSKeys();
|
|
8340
|
|
8341 Generates MACCS keys fingerprints and returns I<MACCSKeys>.
|
|
8342
|
|
8343 For I<MACCSKeyBits> value of B<Type>, a fingerprint bit-vector string containing
|
|
8344 zeros and ones is generated and for I<MACCSKeyCount> value, a fingerprint vector string
|
|
8345 corresponding to number of MACCS keys is generated.
|
|
8346
|
|
8347 I<MACCSKeyBits or MACCSKeyCount> values for B<Type> option along with two possible
|
|
8348 I<166 | 322> values of B<Size> supports generation of four different types of MACCS
|
|
8349 keys fingerprint: I<MACCS166KeyBits, MACCS166KeyCount, MACCS322KeyBits, MACCS322KeyCount>.
|
|
8350
|
|
8351 Definition of MACCS keys uses the following atom and bond symbols to define atom and
|
|
8352 bond environments:
|
|
8353
|
|
8354 Atom symbols for 166 keys [ Ref 47 ]:
|
|
8355
|
|
8356 A : Any valid periodic table element symbol
|
|
8357 Q : Hetro atoms; any non-C or non-H atom
|
|
8358 X : Halogens; F, Cl, Br, I
|
|
8359 Z : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I
|
|
8360
|
|
8361 Atom symbols for 322 keys [ Ref 46 ]:
|
|
8362
|
|
8363 A : Any valid periodic table element symbol
|
|
8364 Q : Hetro atoms; any non-C or non-H atom
|
|
8365 X : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I
|
|
8366 Z is neither defined nor used
|
|
8367
|
|
8368 Bond types:
|
|
8369
|
|
8370 - : Single
|
|
8371 = : Double
|
|
8372 T : Triple
|
|
8373 # : Triple
|
|
8374 ~ : Single or double query bond
|
|
8375 % : An aromatic query bond
|
|
8376
|
|
8377 None : Any bond type; no explicit bond specified
|
|
8378
|
|
8379 $ : Ring bond; $ before a bond type specifies ring bond
|
|
8380 ! : Chain or non-ring bond; ! before a bond type specifies chain bond
|
|
8381
|
|
8382 @ : A ring linkage and the number following it specifies the
|
|
8383 atoms position in the line, thus @1 means linked back to the first
|
|
8384 atom in the list.
|
|
8385
|
|
8386 Aromatic: Kekule or Arom5
|
|
8387
|
|
8388 Kekule: Bonds in 6-membered rings with alternate single/double bonds
|
|
8389 or perimeter bonds
|
|
8390 Arom5: Bonds in 5-membered rings with two double bonds and a hetro
|
|
8391 atom at the apex of the ring.
|
|
8392
|
|
8393 MACCS 166 keys [ Ref 45-47 ] are defined as follows:
|
|
8394
|
|
8395 Key Description
|
|
8396
|
|
8397 1 ISOTOPE
|
|
8398 2 103 < ATOMIC NO. < 256
|
|
8399 3 GROUP IVA,VA,VIA PERIODS 4-6 (Ge...)
|
|
8400 4 ACTINIDE
|
|
8401 5 GROUP IIIB,IVB (Sc...)
|
|
8402 6 LANTHANIDE
|
|
8403 7 GROUP VB,VIB,VIIB (V...)
|
|
8404 8 QAAA@1
|
|
8405 9 GROUP VIII (Fe...)
|
|
8406 10 GROUP IIA (ALKALINE EARTH)
|
|
8407 11 4M RING
|
|
8408 12 GROUP IB,IIB (Cu...)
|
|
8409 13 ON(C)C
|
|
8410 14 S-S
|
|
8411 15 OC(O)O
|
|
8412 16 QAA@1
|
|
8413 17 CTC
|
|
8414 18 GROUP IIIA (B...)
|
|
8415 19 7M RING
|
|
8416 20 SI
|
|
8417 21 C=C(Q)Q
|
|
8418 22 3M RING
|
|
8419 23 NC(O)O
|
|
8420 24 N-O
|
|
8421 25 NC(N)N
|
|
8422 26 C$=C($A)$A
|
|
8423 27 I
|
|
8424 28 QCH2Q
|
|
8425 29 P
|
|
8426 30 CQ(C)(C)A
|
|
8427 31 QX
|
|
8428 32 CSN
|
|
8429 33 NS
|
|
8430 34 CH2=A
|
|
8431 35 GROUP IA (ALKALI METAL)
|
|
8432 36 S HETEROCYCLE
|
|
8433 37 NC(O)N
|
|
8434 38 NC(C)N
|
|
8435 39 OS(O)O
|
|
8436 40 S-O
|
|
8437 41 CTN
|
|
8438 42 F
|
|
8439 43 QHAQH
|
|
8440 44 OTHER
|
|
8441 45 C=CN
|
|
8442 46 BR
|
|
8443 47 SAN
|
|
8444 48 OQ(O)O
|
|
8445 49 CHARGE
|
|
8446 50 C=C(C)C
|
|
8447 51 CSO
|
|
8448 52 NN
|
|
8449 53 QHAAAQH
|
|
8450 54 QHAAQH
|
|
8451 55 OSO
|
|
8452 56 ON(O)C
|
|
8453 57 O HETEROCYCLE
|
|
8454 58 QSQ
|
|
8455 59 Snot%A%A
|
|
8456 60 S=O
|
|
8457 61 AS(A)A
|
|
8458 62 A$A!A$A
|
|
8459 63 N=O
|
|
8460 64 A$A!S
|
|
8461 65 C%N
|
|
8462 66 CC(C)(C)A
|
|
8463 67 QS
|
|
8464 68 QHQH (&...)
|
|
8465 69 QQH
|
|
8466 70 QNQ
|
|
8467 71 NO
|
|
8468 72 OAAO
|
|
8469 73 S=A
|
|
8470 74 CH3ACH3
|
|
8471 75 A!N$A
|
|
8472 76 C=C(A)A
|
|
8473 77 NAN
|
|
8474 78 C=N
|
|
8475 79 NAAN
|
|
8476 80 NAAAN
|
|
8477 81 SA(A)A
|
|
8478 82 ACH2QH
|
|
8479 83 QAAAA@1
|
|
8480 84 NH2
|
|
8481 85 CN(C)C
|
|
8482 86 CH2QCH2
|
|
8483 87 X!A$A
|
|
8484 88 S
|
|
8485 89 OAAAO
|
|
8486 90 QHAACH2A
|
|
8487 91 QHAAACH2A
|
|
8488 92 OC(N)C
|
|
8489 93 QCH3
|
|
8490 94 QN
|
|
8491 95 NAAO
|
|
8492 96 5M RING
|
|
8493 97 NAAAO
|
|
8494 98 QAAAAA@1
|
|
8495 99 C=C
|
|
8496 100 ACH2N
|
|
8497 101 8M RING
|
|
8498 102 QO
|
|
8499 103 CL
|
|
8500 104 QHACH2A
|
|
8501 105 A$A($A)$A
|
|
8502 106 QA(Q)Q
|
|
8503 107 XA(A)A
|
|
8504 108 CH3AAACH2A
|
|
8505 109 ACH2O
|
|
8506 110 NCO
|
|
8507 111 NACH2A
|
|
8508 112 AA(A)(A)A
|
|
8509 113 Onot%A%A
|
|
8510 114 CH3CH2A
|
|
8511 115 CH3ACH2A
|
|
8512 116 CH3AACH2A
|
|
8513 117 NAO
|
|
8514 118 ACH2CH2A > 1
|
|
8515 119 N=A
|
|
8516 120 HETEROCYCLIC ATOM > 1 (&...)
|
|
8517 121 N HETEROCYCLE
|
|
8518 122 AN(A)A
|
|
8519 123 OCO
|
|
8520 124 QQ
|
|
8521 125 AROMATIC RING > 1
|
|
8522 126 A!O!A
|
|
8523 127 A$A!O > 1 (&...)
|
|
8524 128 ACH2AAACH2A
|
|
8525 129 ACH2AACH2A
|
|
8526 130 QQ > 1 (&...)
|
|
8527 131 QH > 1
|
|
8528 132 OACH2A
|
|
8529 133 A$A!N
|
|
8530 134 X (HALOGEN)
|
|
8531 135 Nnot%A%A
|
|
8532 136 O=A > 1
|
|
8533 137 HETEROCYCLE
|
|
8534 138 QCH2A > 1 (&...)
|
|
8535 139 OH
|
|
8536 140 O > 3 (&...)
|
|
8537 141 CH3 > 2 (&...)
|
|
8538 142 N > 1
|
|
8539 143 A$A!O
|
|
8540 144 Anot%A%Anot%A
|
|
8541 145 6M RING > 1
|
|
8542 146 O > 2
|
|
8543 147 ACH2CH2A
|
|
8544 148 AQ(A)A
|
|
8545 149 CH3 > 1
|
|
8546 150 A!A$A!A
|
|
8547 151 NH
|
|
8548 152 OC(C)C
|
|
8549 153 QCH2A
|
|
8550 154 C=O
|
|
8551 155 A!CH2!A
|
|
8552 156 NA(A)A
|
|
8553 157 C-O
|
|
8554 158 C-N
|
|
8555 159 O > 1
|
|
8556 160 CH3
|
|
8557 161 N
|
|
8558 162 AROMATIC
|
|
8559 163 6M RING
|
|
8560 164 O
|
|
8561 165 RING
|
|
8562 166 FRAGMENTS
|
|
8563
|
|
8564 MACCS 322 keys set as defined in tables 1, 2 and 3 [ Ref 46 ] include:
|
|
8565
|
|
8566 o 26 atom properties of type P, as listed in Table 1
|
|
8567 o 32 one-atom environments, as listed in Table 3
|
|
8568 o 264 atom-bond-atom combinations listed in Table 4
|
|
8569
|
|
8570 Total number of keys in three tables is : 322
|
|
8571
|
|
8572 Atom symbol, X, used for 322 keys [ Ref 46 ] doesn't refer to Halogens as it does for 166 keys. In
|
|
8573 order to keep the definition of 322 keys consistent with the published definitions, the symbol X is
|
|
8574 used to imply "others" atoms, but it's internally mapped to symbol X as defined for 166 keys
|
|
8575 during the generation of key values.
|
|
8576
|
|
8577 Atom properties-based keys (26):
|
|
8578
|
|
8579 Key Description
|
|
8580 1 A(AAA) or AA(A)A - atom with at least three neighbors
|
|
8581 2 Q - heteroatom
|
|
8582 3 Anot%not-A - atom involved in one or more multiple bonds, not aromatic
|
|
8583 4 A(AAAA) or AA(A)(A)A - atom with at least four neighbors
|
|
8584 5 A(QQ) or QA(Q) - atom with at least two heteroatom neighbors
|
|
8585 6 A(QQQ) or QA(Q)Q - atom with at least three heteroatom neighbors
|
|
8586 7 QH - heteroatom with at least one hydrogen attached
|
|
8587 8 CH2(AA) or ACH2A - carbon with at least two single bonds and at least
|
|
8588 two hydrogens attached
|
|
8589 9 CH3(A) or ACH3 - carbon with at least one single bond and at least three
|
|
8590 hydrogens attached
|
|
8591 10 Halogen
|
|
8592 11 A(-A-A-A) or A-A(-A)-A - atom has at least three single bonds
|
|
8593 12 AAAAAA@1 > 2 - atom is in at least two different six-membered rings
|
|
8594 13 A($A$A$A) or A$A($A)$A - atom has more than two ring bonds
|
|
8595 14 A$A!A$A - atom is at a ring/chain boundary. When a comparison is done
|
|
8596 with another atom the path passes through the chain bond.
|
|
8597 15 Anot%A%Anot%A - atom is at an aromatic/nonaromatic boundary. When a
|
|
8598 comparison is done with another atom the path
|
|
8599 passes through the aromatic bond.
|
|
8600 16 A!A!A - atom with more than one chain bond
|
|
8601 17 A!A$A!A - atom is at a ring/chain boundary. When a comparison is done
|
|
8602 with another atom the path passes through the ring bond.
|
|
8603 18 A%Anot%A%A - atom is at an aromatic/nonaromatic boundary. When a
|
|
8604 comparison is done with another atom the
|
|
8605 path passes through the nonaromatic bond.
|
|
8606 19 HETEROCYCLE - atom is a heteroatom in a ring.
|
|
8607 20 rare properties: atom with five or more neighbors, atom in
|
|
8608 four or more rings, or atom types other than
|
|
8609 H, C, N, O, S, F, Cl, Br, or I
|
|
8610 21 rare properties: atom has a charge, is an isotope, has two or
|
|
8611 more multiple bonds, or has a triple bond.
|
|
8612 22 N - nitrogen
|
|
8613 23 S - sulfur
|
|
8614 24 O - oxygen
|
|
8615 25 A(AA)A(A)A(AA) - atom has two neighbors, each with three or
|
|
8616 more neighbors (including the central atom).
|
|
8617 26 CHACH2 - atom has two hydrocarbon (CH2) neighbors
|
|
8618
|
|
8619 Atomic environments properties-based keys (32):
|
|
8620
|
|
8621 Key Description
|
|
8622 27 C(CC)
|
|
8623 28 C(CCC)
|
|
8624 29 C(CN)
|
|
8625 30 C(CCN)
|
|
8626 31 C(NN)
|
|
8627 32 C(NNC)
|
|
8628 33 C(NNN)
|
|
8629 34 C(CO)
|
|
8630 35 C(CCO)
|
|
8631 36 C(NO)
|
|
8632 37 C(NCO)
|
|
8633 38 C(NNO)
|
|
8634 39 C(OO)
|
|
8635 40 C(COO)
|
|
8636 41 C(NOO)
|
|
8637 42 C(OOO)
|
|
8638 43 Q(CC)
|
|
8639 44 Q(CCC)
|
|
8640 45 Q(CN)
|
|
8641 46 Q(CCN)
|
|
8642 47 Q(NN)
|
|
8643 48 Q(CNN)
|
|
8644 49 Q(NNN)
|
|
8645 50 Q(CO)
|
|
8646 51 Q(CCO)
|
|
8647 52 Q(NO)
|
|
8648 53 Q(CNO)
|
|
8649 54 Q(NNO)
|
|
8650 55 Q(OO)
|
|
8651 56 Q(COO)
|
|
8652 57 Q(NOO)
|
|
8653 58 Q(OOO)
|
|
8654
|
|
8655 Note: The first symbol is the central atom, with atoms bonded to the central atom listed in
|
|
8656 parentheses. Q is any non-C, non-H atom. If only two atoms are in parentheses, there is
|
|
8657 no implication concerning the other atoms bonded to the central atom.
|
|
8658
|
|
8659 Atom-Bond-Atom properties-based keys: (264)
|
|
8660
|
|
8661 Key Description
|
|
8662 59 C-C
|
|
8663 60 C-N
|
|
8664 61 C-O
|
|
8665 62 C-S
|
|
8666 63 C-Cl
|
|
8667 64 C-P
|
|
8668 65 C-F
|
|
8669 66 C-Br
|
|
8670 67 C-Si
|
|
8671 68 C-I
|
|
8672 69 C-X
|
|
8673 70 N-N
|
|
8674 71 N-O
|
|
8675 72 N-S
|
|
8676 73 N-Cl
|
|
8677 74 N-P
|
|
8678 75 N-F
|
|
8679 76 N-Br
|
|
8680 77 N-Si
|
|
8681 78 N-I
|
|
8682 79 N-X
|
|
8683 80 O-O
|
|
8684 81 O-S
|
|
8685 82 O-Cl
|
|
8686 83 O-P
|
|
8687 84 O-F
|
|
8688 85 O-Br
|
|
8689 86 O-Si
|
|
8690 87 O-I
|
|
8691 88 O-X
|
|
8692 89 S-S
|
|
8693 90 S-Cl
|
|
8694 91 S-P
|
|
8695 92 S-F
|
|
8696 93 S-Br
|
|
8697 94 S-Si
|
|
8698 95 S-I
|
|
8699 96 S-X
|
|
8700 97 Cl-Cl
|
|
8701 98 Cl-P
|
|
8702 99 Cl-F
|
|
8703 100 Cl-Br
|
|
8704 101 Cl-Si
|
|
8705 102 Cl-I
|
|
8706 103 Cl-X
|
|
8707 104 P-P
|
|
8708 105 P-F
|
|
8709 106 P-Br
|
|
8710 107 P-Si
|
|
8711 108 P-I
|
|
8712 109 P-X
|
|
8713 110 F-F
|
|
8714 111 F-Br
|
|
8715 112 F-Si
|
|
8716 113 F-I
|
|
8717 114 F-X
|
|
8718 115 Br-Br
|
|
8719 116 Br-Si
|
|
8720 117 Br-I
|
|
8721 118 Br-X
|
|
8722 119 Si-Si
|
|
8723 120 Si-I
|
|
8724 121 Si-X
|
|
8725 122 I-I
|
|
8726 123 I-X
|
|
8727 124 X-X
|
|
8728 125 C=C
|
|
8729 126 C=N
|
|
8730 127 C=O
|
|
8731 128 C=S
|
|
8732 129 C=Cl
|
|
8733 130 C=P
|
|
8734 131 C=F
|
|
8735 132 C=Br
|
|
8736 133 C=Si
|
|
8737 134 C=I
|
|
8738 135 C=X
|
|
8739 136 N=N
|
|
8740 137 N=O
|
|
8741 138 N=S
|
|
8742 139 N=Cl
|
|
8743 140 N=P
|
|
8744 141 N=F
|
|
8745 142 N=Br
|
|
8746 143 N=Si
|
|
8747 144 N=I
|
|
8748 145 N=X
|
|
8749 146 O=O
|
|
8750 147 O=S
|
|
8751 148 O=Cl
|
|
8752 149 O=P
|
|
8753 150 O=F
|
|
8754 151 O=Br
|
|
8755 152 O=Si
|
|
8756 153 O=I
|
|
8757 154 O=X
|
|
8758 155 S=S
|
|
8759 156 S=Cl
|
|
8760 157 S=P
|
|
8761 158 S=F
|
|
8762 159 S=Br
|
|
8763 160 S=Si
|
|
8764 161 S=I
|
|
8765 162 S=X
|
|
8766 163 Cl=Cl
|
|
8767 164 Cl=P
|
|
8768 165 Cl=F
|
|
8769 166 Cl=Br
|
|
8770 167 Cl=Si
|
|
8771 168 Cl=I
|
|
8772 169 Cl=X
|
|
8773 170 P=P
|
|
8774 171 P=F
|
|
8775 172 P=Br
|
|
8776 173 P=Si
|
|
8777 174 P=I
|
|
8778 175 P=X
|
|
8779 176 F=F
|
|
8780 177 F=Br
|
|
8781 178 F=Si
|
|
8782 179 F=I
|
|
8783 180 F=X
|
|
8784 181 Br=Br
|
|
8785 182 Br=Si
|
|
8786 183 Br=I
|
|
8787 184 Br=X
|
|
8788 185 Si=Si
|
|
8789 186 Si=I
|
|
8790 187 Si=X
|
|
8791 188 I=I
|
|
8792 189 I=X
|
|
8793 190 X=X
|
|
8794 191 C#C
|
|
8795 192 C#N
|
|
8796 193 C#O
|
|
8797 194 C#S
|
|
8798 195 C#Cl
|
|
8799 196 C#P
|
|
8800 197 C#F
|
|
8801 198 C#Br
|
|
8802 199 C#Si
|
|
8803 200 C#I
|
|
8804 201 C#X
|
|
8805 202 N#N
|
|
8806 203 N#O
|
|
8807 204 N#S
|
|
8808 205 N#Cl
|
|
8809 206 N#P
|
|
8810 207 N#F
|
|
8811 208 N#Br
|
|
8812 209 N#Si
|
|
8813 210 N#I
|
|
8814 211 N#X
|
|
8815 212 O#O
|
|
8816 213 O#S
|
|
8817 214 O#Cl
|
|
8818 215 O#P
|
|
8819 216 O#F
|
|
8820 217 O#Br
|
|
8821 218 O#Si
|
|
8822 219 O#I
|
|
8823 220 O#X
|
|
8824 221 S#S
|
|
8825 222 S#Cl
|
|
8826 223 S#P
|
|
8827 224 S#F
|
|
8828 225 S#Br
|
|
8829 226 S#Si
|
|
8830 227 S#I
|
|
8831 228 S#X
|
|
8832 229 Cl#Cl
|
|
8833 230 Cl#P
|
|
8834 231 Cl#F
|
|
8835 232 Cl#Br
|
|
8836 233 Cl#Si
|
|
8837 234 Cl#I
|
|
8838 235 Cl#X
|
|
8839 236 P#P
|
|
8840 237 P#F
|
|
8841 238 P#Br
|
|
8842 239 P#Si
|
|
8843 240 P#I
|
|
8844 241 P#X
|
|
8845 242 F#F
|
|
8846 243 F#Br
|
|
8847 244 F#Si
|
|
8848 245 F#I
|
|
8849 246 F#X
|
|
8850 247 Br#Br
|
|
8851 248 Br#Si
|
|
8852 249 Br#I
|
|
8853 250 Br#X
|
|
8854 251 Si#Si
|
|
8855 252 Si#I
|
|
8856 253 Si#X
|
|
8857 254 I#I
|
|
8858 255 I#X
|
|
8859 256 X#X
|
|
8860 257 C$C
|
|
8861 258 C$N
|
|
8862 259 C$O
|
|
8863 260 C$S
|
|
8864 261 C$Cl
|
|
8865 262 C$P
|
|
8866 263 C$F
|
|
8867 264 C$Br
|
|
8868 265 C$Si
|
|
8869 266 C$I
|
|
8870 267 C$X
|
|
8871 268 N$N
|
|
8872 269 N$O
|
|
8873 270 N$S
|
|
8874 271 N$Cl
|
|
8875 272 N$P
|
|
8876 273 N$F
|
|
8877 274 N$Br
|
|
8878 275 N$Si
|
|
8879 276 N$I
|
|
8880 277 N$X
|
|
8881 278 O$O
|
|
8882 279 O$S
|
|
8883 280 O$Cl
|
|
8884 281 O$P
|
|
8885 282 O$F
|
|
8886 283 O$Br
|
|
8887 284 O$Si
|
|
8888 285 O$I
|
|
8889 286 O$X
|
|
8890 287 S$S
|
|
8891 288 S$Cl
|
|
8892 289 S$P
|
|
8893 290 S$F
|
|
8894 291 S$Br
|
|
8895 292 S$Si
|
|
8896 293 S$I
|
|
8897 294 S$X
|
|
8898 295 Cl$Cl
|
|
8899 296 Cl$P
|
|
8900 297 Cl$F
|
|
8901 298 Cl$Br
|
|
8902 299 Cl$Si
|
|
8903 300 Cl$I
|
|
8904 301 Cl$X
|
|
8905 302 P$P
|
|
8906 303 P$F
|
|
8907 304 P$Br
|
|
8908 305 P$Si
|
|
8909 306 P$I
|
|
8910 307 P$X
|
|
8911 308 F$F
|
|
8912 309 F$Br
|
|
8913 310 F$Si
|
|
8914 311 F$I
|
|
8915 312 F$X
|
|
8916 313 Br$Br
|
|
8917 314 Br$Si
|
|
8918 315 Br$I
|
|
8919 316 Br$X
|
|
8920 317 Si$Si
|
|
8921 318 Si$I
|
|
8922 319 Si$X
|
|
8923 320 I$I
|
|
8924 321 I$X
|
|
8925 322 X$X
|
|
8926
|
|
8927 =item B<SetSize>
|
|
8928
|
|
8929 $MACCSKeys->SetSize($Size);
|
|
8930
|
|
8931 Sets size of MACCS keys and returns I<MACCSKeys>. Possible values: I<166 or 322>.
|
|
8932
|
|
8933 =item B<SetType>
|
|
8934
|
|
8935 $MACCSKeys->SetType($Type);
|
|
8936
|
|
8937 Sets type of MACCS keys and returns I<MACCSKeys>. Possible values: I<MACCSKeysBits or
|
|
8938 MACCSKeysCount>.
|
|
8939
|
|
8940 =item B<StringifyMACCSKeys>
|
|
8941
|
|
8942 $String = $MACCSKeys->StringifyMACCSKeys();
|
|
8943
|
|
8944 Returns a string containing information about I<MACCSKeys> object.
|
|
8945
|
|
8946 =back
|
|
8947
|
|
8948 =head1 AUTHOR
|
|
8949
|
|
8950 Manish Sud <msud@san.rr.com>
|
|
8951
|
|
8952 =head1 SEE ALSO
|
|
8953
|
|
8954 Fingerprints.pm, FingerprintsStringUtil.pm, AtomNeighborhoodsFingerprints.pm,
|
|
8955 AtomTypesFingerprints.pm, EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm,
|
|
8956 PathLengthFingerprints.pm, TopologicalAtomPairsFingerprints.pm, TopologicalAtomTripletsFingerprints.pm,
|
|
8957 TopologicalAtomTorsionsFingerprints.pm, TopologicalPharmacophoreAtomPairsFingerprints.pm,
|
|
8958 TopologicalPharmacophoreAtomTripletsFingerprints.pm
|
|
8959
|
|
8960 =head1 COPYRIGHT
|
|
8961
|
|
8962 Copyright (C) 2015 Manish Sud. All rights reserved.
|
|
8963
|
|
8964 This file is part of MayaChemTools.
|
|
8965
|
|
8966 MayaChemTools is free software; you can redistribute it and/or modify it under
|
|
8967 the terms of the GNU Lesser General Public License as published by the Free
|
|
8968 Software Foundation; either version 3 of the License, or (at your option)
|
|
8969 any later version.
|
|
8970
|
|
8971 =cut
|