Mercurial > repos > deepakjadmin > mayatool3_test3
view mayachemtools/docs/modules/html/code/MACCSKeys.html @ 9:ab29fa5c8c1f draft default tip
Uploaded
author | deepakjadmin |
---|---|
date | Thu, 15 Dec 2016 14:18:03 -0500 |
parents | 73ae111cf86f |
children |
line wrap: on
line source
<html> <head> <title>MayaChemTools:Code:Fingerprints::MACCSKeys.pm</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <link rel="stylesheet" type="text/css" href="../../../css/MayaChemToolsCode.css"> </head> <body leftmargin="20" rightmargin="20" topmargin="10" bottommargin="10"> <br/> <center> <a href="http://www.mayachemtools.org" title="MayaChemTools Home"><img src="../../../images/MayaChemToolsLogo.gif" border="0" alt="MayaChemTools"></a> </center> <br/> <pre> <a name="package-Fingerprints::MACCSKeys-"></a> 1 <span class="k">package </span><span class="i">Fingerprints::MACCSKeys</span><span class="sc">;</span> 2 <span class="c">#</span> 3 <span class="c"># $RCSfile: MACCSKeys.pm,v $</span> 4 <span class="c"># $Date: 2015/02/28 20:48:54 $</span> 5 <span class="c"># $Revision: 1.33 $</span> 6 <span class="c">#</span> 7 <span class="c"># Author: Manish Sud <msud@san.rr.com></span> 8 <span class="c">#</span> 9 <span class="c"># Copyright (C) 2015 Manish Sud. All rights reserved.</span> 10 <span class="c">#</span> 11 <span class="c"># This file is part of MayaChemTools.</span> 12 <span class="c">#</span> 13 <span class="c"># MayaChemTools is free software; you can redistribute it and/or modify it under</span> 14 <span class="c"># the terms of the GNU Lesser General Public License as published by the Free</span> 15 <span class="c"># Software Foundation; either version 3 of the License, or (at your option) any</span> 16 <span class="c"># later version.</span> 17 <span class="c">#</span> 18 <span class="c"># MayaChemTools is distributed in the hope that it will be useful, but without</span> 19 <span class="c"># any warranty; without even the implied warranty of merchantability of fitness</span> 20 <span class="c"># for a particular purpose. See the GNU Lesser General Public License for more</span> 21 <span class="c"># details.</span> 22 <span class="c">#</span> 23 <span class="c"># You should have received a copy of the GNU Lesser General Public License</span> 24 <span class="c"># along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or</span> 25 <span class="c"># write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,</span> 26 <span class="c"># Boston, MA, 02111-1307, USA.</span> 27 <span class="c">#</span> 28 29 <span class="k">use</span> <span class="w">strict</span><span class="sc">;</span> 30 <span class="k">use</span> <span class="w">Carp</span><span class="sc">;</span> 31 <span class="k">use</span> <span class="w">Exporter</span><span class="sc">;</span> 32 <span class="k">use</span> <span class="w">Fingerprints::Fingerprints</span><span class="sc">;</span> 33 <span class="k">use</span> <span class="w">TextUtil</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 34 <span class="k">use</span> <span class="w">Molecule</span><span class="sc">;</span> 35 <span class="k">use</span> <span class="w">PeriodicTable</span><span class="sc">;</span> 36 37 <span class="k">use</span> <span class="w">vars</span> <span class="q">qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS)</span><span class="sc">;</span> 38 39 <span class="i">@ISA</span> = <span class="q">qw(Fingerprints::Fingerprints Exporter)</span><span class="sc">;</span> 40 <span class="i">@EXPORT</span> = <span class="q">qw()</span><span class="sc">;</span> 41 <span class="i">@EXPORT_OK</span> = <span class="q">qw()</span><span class="sc">;</span> 42 43 <span class="i">%EXPORT_TAGS</span> = <span class="s">(</span><span class="w">all</span> <span class="cm">=></span> <span class="s">[</span><span class="i">@EXPORT</span><span class="cm">,</span> <span class="i">@EXPORT_OK</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 44 45 <span class="c"># Setup class variables...</span> 46 <span class="k">my</span><span class="s">(</span><span class="i">$ClassName</span><span class="s">)</span><span class="sc">;</span> 47 <span class="i">_InitializeClass</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 48 49 <span class="c"># Overload Perl functions...</span> 50 <span class="k">use</span> <span class="w">overload</span> <span class="q">'""'</span> <span class="cm">=></span> <span class="q">'StringifyMACCSKeys'</span><span class="sc">;</span> 51 52 <span class="c"># Class constructor...</span> <a name="new-"></a> 53 <span class="k">sub </span><span class="m">new</span> <span class="s">{</span> 54 <span class="k">my</span><span class="s">(</span><span class="i">$Class</span><span class="cm">,</span> <span class="i">%NamesAndValues</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 55 56 <span class="c"># Initialize object...</span> 57 <span class="k">my</span> <span class="i">$This</span> = <span class="i">$Class</span><span class="i">->SUPER::new</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 58 <span class="k">bless</span> <span class="i">$This</span><span class="cm">,</span> <span class="k">ref</span><span class="s">(</span><span class="i">$Class</span><span class="s">)</span> || <span class="i">$Class</span><span class="sc">;</span> 59 <span class="i">$This</span><span class="i">->_InitializeMACCSKeys</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 60 61 <span class="i">$This</span><span class="i">->_InitializeMACCSKeysProperties</span><span class="s">(</span><span class="i">%NamesAndValues</span><span class="s">)</span><span class="sc">;</span> 62 63 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 64 <span class="s">}</span> 65 66 <span class="c"># Initialize object data...</span> 67 <span class="c">#</span> <a name="_InitializeMACCSKeys-"></a> 68 <span class="k">sub </span><span class="m">_InitializeMACCSKeys</span> <span class="s">{</span> 69 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 70 71 <span class="c"># Type of fingerprint to generate:</span> 72 <span class="c">#</span> 73 <span class="c"># MACCSKeyBits - A bit vector indicating presence/absence of keys</span> 74 <span class="c"># MACCSKeyCount - A vector containing count of keys</span> 75 <span class="c">#</span> 76 <span class="i">$This</span>->{<span class="w">Type</span>} = <span class="q">''</span><span class="sc">;</span> 77 <span class="i">$This</span>->{<span class="w">KeyBits</span>} = <span class="q">''</span><span class="sc">;</span> 78 79 <span class="c"># Size of key set: 166 or 322...</span> 80 <span class="i">$This</span>->{<span class="w">Size</span>} = <span class="q">''</span><span class="sc">;</span> 81 <span class="s">}</span> 82 83 <span class="c"># Initialize class ...</span> <a name="_InitializeClass-"></a> 84 <span class="k">sub </span><span class="m">_InitializeClass</span> <span class="s">{</span> 85 <span class="c">#Class name...</span> 86 <span class="i">$ClassName</span> = <span class="w">__PACKAGE__</span><span class="sc">;</span> 87 <span class="s">}</span> 88 89 <span class="c"># Initialize object properties....</span> <a name="_InitializeMACCSKeysProperties-"></a> 90 <span class="k">sub </span><span class="m">_InitializeMACCSKeysProperties</span> <span class="s">{</span> 91 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">%NamesAndValues</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 92 93 <span class="k">my</span><span class="s">(</span><span class="i">$Name</span><span class="cm">,</span> <span class="i">$Value</span><span class="cm">,</span> <span class="i">$MethodName</span><span class="s">)</span><span class="sc">;</span> 94 <span class="k">while</span> <span class="s">(</span><span class="s">(</span><span class="i">$Name</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span> = <span class="k">each</span> <span class="i">%NamesAndValues</span><span class="s">)</span> <span class="s">{</span> 95 <span class="i">$MethodName</span> = <span class="q">"Set${Name}"</span><span class="sc">;</span> 96 <span class="i">$This</span><span class="i">->$MethodName</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="sc">;</span> 97 <span class="s">}</span> 98 99 <span class="c"># Make sure molecule object was specified...</span> 100 <span class="k">if</span> <span class="s">(</span>!<span class="k">exists</span> <span class="i">$NamesAndValues</span>{<span class="w">Molecule</span>}<span class="s">)</span> <span class="s">{</span> 101 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->New: Object can't be instantiated without specifying molecule..."</span><span class="sc">;</span> 102 <span class="s">}</span> 103 104 <span class="c"># Make sure type and size were specified...</span> 105 <span class="k">if</span> <span class="s">(</span>!<span class="k">exists</span> <span class="i">$NamesAndValues</span>{<span class="w">Type</span>}<span class="s">)</span> <span class="s">{</span> 106 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->New: Object can't be instantiated without specifying type..."</span><span class="sc">;</span> 107 <span class="s">}</span> 108 <span class="k">if</span> <span class="s">(</span>!<span class="k">exists</span> <span class="i">$NamesAndValues</span>{<span class="w">Size</span>}<span class="s">)</span> <span class="s">{</span> 109 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->New: Object can't be instantiated without specifying size..."</span><span class="sc">;</span> 110 <span class="s">}</span> 111 112 <span class="c"># Make sure approriate size is specified...</span> 113 <span class="k">if</span> <span class="s">(</span><span class="i">$NamesAndValues</span>{<span class="w">Size</span>} !~ <span class="q">/^(166|322)$/</span><span class="s">)</span> <span class="s">{</span> 114 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->New: The current release of MayaChemTools doesn't support MDL MACCS $NamesAndValues{Size} keys..."</span><span class="sc">;</span> 115 <span class="s">}</span> 116 117 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Type</span>} =~ <span class="q">/^MACCSKeyBits$/i</span><span class="s">)</span> <span class="s">{</span> 118 <span class="i">$This</span><span class="i">->_InitializeMACCSKeyBits</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 119 <span class="s">}</span> 120 <span class="k">elsif</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Type</span>} =~ <span class="q">/^MACCSKeyCount$/i</span><span class="s">)</span> <span class="s">{</span> 121 <span class="i">$This</span><span class="i">->_InitializeMACCSKeyCounts</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 122 <span class="s">}</span> 123 <span class="k">else</span> <span class="s">{</span> 124 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->_InitializeMACCSKeysProperties: Unknown MACCS keys type: $This->{Type}; Supported type keys: MACCSKeyBits or MACCSKeyCount......"</span><span class="sc">;</span> 125 <span class="s">}</span> 126 127 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 128 <span class="s">}</span> 129 130 <span class="c"># Initialize MACCS key bits...</span> 131 <span class="c">#</span> <a name="_InitializeMACCSKeyBits-"></a> 132 <span class="k">sub </span><span class="m">_InitializeMACCSKeyBits</span> <span class="s">{</span> 133 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 134 135 <span class="i">$This</span>->{<span class="w">KeyBits</span>} = <span class="n">1</span><span class="sc">;</span> 136 137 <span class="c"># Vector type...</span> 138 <span class="i">$This</span>->{<span class="w">VectorType</span>} = <span class="q">'FingerprintsBitVector'</span><span class="sc">;</span> 139 140 <span class="i">$This</span><span class="i">->_InitializeFingerprintsBitVector</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 141 142 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 143 <span class="s">}</span> 144 145 <span class="c"># Initialize MACCS key counts...</span> 146 <span class="c">#</span> <a name="_InitializeMACCSKeyCounts-"></a> 147 <span class="k">sub </span><span class="m">_InitializeMACCSKeyCounts</span> <span class="s">{</span> 148 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 149 150 <span class="i">$This</span>->{<span class="w">KeyBits</span>} = <span class="n">0</span><span class="sc">;</span> 151 152 <span class="c"># Vector type and type of values...</span> 153 <span class="i">$This</span>->{<span class="w">VectorType</span>} = <span class="q">'FingerprintsVector'</span><span class="sc">;</span> 154 <span class="i">$This</span>->{<span class="w">FingerprintsVectorType</span>} = <span class="q">'OrderedNumericalValues'</span><span class="sc">;</span> 155 156 <span class="i">$This</span><span class="i">->_InitializeFingerprintsVector</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 157 158 <span class="c"># Initialize values to zero...</span> 159 <span class="k">my</span><span class="s">(</span><span class="i">@Values</span><span class="s">)</span><span class="sc">;</span> 160 <span class="i">@Values</span> = <span class="s">(</span><span class="n">0</span><span class="s">)</span> x <span class="i">$This</span>->{<span class="w">Size</span>}<span class="sc">;</span> 161 <span class="i">$This</span>->{<span class="w">FingerprintsVector</span>}<span class="i">->AddValues</span><span class="s">(</span>\<span class="i">@Values</span><span class="s">)</span><span class="sc">;</span> 162 163 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 164 <span class="s">}</span> 165 166 <span class="c"># Set type...</span> 167 <span class="c">#</span> <a name="SetType-"></a> 168 <span class="k">sub </span><span class="m">SetType</span> <span class="s">{</span> 169 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Type</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 170 171 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Type</span>}<span class="s">)</span> <span class="s">{</span> 172 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->SetType: Can't change type: It's already set..."</span><span class="sc">;</span> 173 <span class="s">}</span> 174 175 <span class="k">if</span> <span class="s">(</span><span class="i">$Type</span> =~ <span class="q">/^MACCSKeyBits$/i</span><span class="s">)</span> <span class="s">{</span> 176 <span class="i">$This</span>->{<span class="w">Type</span>} = <span class="q">'MACCSKeyBits'</span><span class="sc">;</span><span class="sc">;</span> 177 <span class="i">$This</span>->{<span class="w">KeyBits</span>} = <span class="n">1</span><span class="sc">;</span> 178 <span class="s">}</span> 179 <span class="k">elsif</span> <span class="s">(</span><span class="i">$Type</span> =~ <span class="q">/^MACCSKeyCount$/i</span><span class="s">)</span> <span class="s">{</span> 180 <span class="i">$This</span>->{<span class="w">Type</span>} = <span class="q">'MACCSKeyCount'</span><span class="sc">;</span><span class="sc">;</span> 181 <span class="i">$This</span>->{<span class="w">KeyBits</span>} = <span class="n">0</span><span class="sc">;</span> 182 <span class="s">}</span> 183 <span class="k">else</span> <span class="s">{</span> 184 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->SetType: Unknown type MACCS keys: $Type; Supported type keys: MACCSKeyBits or MACCSKeyCount..."</span><span class="sc">;</span> 185 <span class="s">}</span> 186 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 187 <span class="s">}</span> 188 189 <span class="c"># Set size...</span> 190 <span class="c">#</span> <a name="SetSize-"></a> 191 <span class="k">sub </span><span class="m">SetSize</span> <span class="s">{</span> 192 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Value</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 193 194 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Size</span>}<span class="s">)</span> <span class="s">{</span> 195 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->SetSize: Can't change size: It's already set..."</span><span class="sc">;</span> 196 <span class="s">}</span> 197 <span class="k">if</span> <span class="s">(</span>!<span class="i">TextUtil::IsPositiveInteger</span><span class="s">(</span><span class="i">$Value</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 198 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->SetSize: Size value, $Value, is not valid: It must be a positive integer..."</span><span class="sc">;</span> 199 <span class="s">}</span> 200 <span class="k">if</span> <span class="s">(</span><span class="i">$Value</span> !~ <span class="q">/^(166|322)/i</span><span class="s">)</span> <span class="s">{</span> 201 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->Size: The current release of MayaChemTools doesn't support MDL MACCS $Value keys..."</span><span class="sc">;</span> 202 <span class="s">}</span> 203 <span class="i">$This</span>->{<span class="w">Size</span>} = <span class="i">$Value</span><span class="sc">;</span> 204 205 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 206 <span class="s">}</span> 207 208 <span class="c"># Generate description...</span> 209 <span class="c">#</span> <a name="GetDescription-"></a> 210 <span class="k">sub </span><span class="m">GetDescription</span> <span class="s">{</span> 211 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 212 213 <span class="c"># Is description explicity set?</span> 214 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$This</span>->{<span class="w">Description</span>}<span class="s">)</span> <span class="s">{</span> 215 <span class="k">return</span> <span class="i">$This</span>->{<span class="w">Description</span>}<span class="sc">;</span> 216 <span class="s">}</span> 217 218 <span class="k">return</span> <span class="q">"$This->{Type}"</span><span class="sc">;</span> 219 <span class="s">}</span> 220 221 <span class="c"># Generate MDL MACCS keys..</span> 222 <span class="c">#</span> <a name="GenerateMACCSKeys-"></a> 223 <span class="k">sub </span><span class="m">GenerateMACCSKeys</span> <span class="s">{</span> 224 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 225 226 <span class="c"># Cache appropriate molecule data...</span> 227 <span class="i">$This</span><span class="i">->_SetupMoleculeDataCache</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 228 229 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Size</span>} == <span class="n">166</span><span class="s">)</span> <span class="s">{</span> 230 <span class="i">$This</span><span class="i">->_GenerateMACCS166Keys</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 231 <span class="s">}</span> 232 <span class="k">elsif</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Size</span>} == <span class="n">322</span><span class="s">)</span> <span class="s">{</span> 233 <span class="i">$This</span><span class="i">->_GenerateMACCS322Keys</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 234 <span class="s">}</span> 235 <span class="k">else</span> <span class="s">{</span> 236 <span class="w">croak</span> <span class="q">"Error: ${ClassName}->GenerateMACCSKeys: The current release of MayaChemTools doesn't support MDL MACCS $This->{Size} keys..."</span><span class="sc">;</span> 237 <span class="s">}</span> 238 239 <span class="i">$This</span>->{<span class="w">FingerprintsGenerated</span>} = <span class="n">1</span><span class="sc">;</span> 240 241 <span class="c"># Clear cached molecule data...</span> 242 <span class="i">$This</span><span class="i">->_ClearMoleculeDataCache</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 243 244 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 245 <span class="s">}</span> 246 247 <span class="c"># Setup GenerateFingerprints method in order to be consistent with all other</span> 248 <span class="c"># fingerprints classes implemented in the current release of MayaChemTools...</span> 249 <span class="c">#</span> <a name="GenerateFingerprints-"></a> 250 <span class="k">sub </span><span class="m">GenerateFingerprints</span> <span class="s">{</span> 251 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 252 253 <span class="k">return</span> <span class="i">$This</span><span class="i">->GenerateMACCSKeys</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 254 <span class="s">}</span> 255 256 <span class="c"># Generate MDL MACCS 166 keys...</span> 257 <span class="c">#</span> 258 <span class="c"># Information on the 166 keys [ Ref. 45-47 ]:</span> 259 <span class="c">#</span> 260 <span class="c"># Atom symbols:</span> 261 <span class="c">#</span> 262 <span class="c"># A : Any valid perodic table element symbol</span> 263 <span class="c"># Q : Hetro atoms; any non-C or non-H atom</span> 264 <span class="c"># X : Halogens; F, Cl, Br, I</span> 265 <span class="c"># Z : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I</span> 266 <span class="c">#</span> 267 <span class="c"># Bond types:</span> 268 <span class="c">#</span> 269 <span class="c"># - : Single</span> 270 <span class="c"># = : Double</span> 271 <span class="c"># T : Triple</span> 272 <span class="c"># # : Triple</span> 273 <span class="c"># ~ : Single or double query bond</span> 274 <span class="c"># % : An aromatic query bond</span> 275 <span class="c">#</span> 276 <span class="c"># None : Any bond type; no explict bond specified</span> 277 <span class="c">#</span> 278 <span class="c"># $ : Ring bond; $ before a bond type specifies ring bond</span> 279 <span class="c"># ! : Chain or non-ring bond; ! before a bond type specifies chain bond</span> 280 <span class="c">#</span> 281 <span class="c"># @ : A ring linkage and the number following it specifies the</span> 282 <span class="c"># atoms position in the line, thus @1 means linked back to the first atom in</span> 283 <span class="c"># the list.</span> 284 <span class="c">#</span> 285 <span class="c"># Aromatic: Kekule or Arom5</span> 286 <span class="c">#</span> 287 <span class="c"># Kekule: Bonds in 6-membered rings with alternalte single/double bonds or perimeter</span> 288 <span class="c"># bonds</span> 289 <span class="c">#</span> 290 <span class="c"># Arom5: Bonds in 5-membered rings with two double bonds and a hetro atom at</span> 291 <span class="c"># the apex of the ring.</span> 292 <span class="c">#</span> 293 <span class="c"># Index Key Description</span> 294 <span class="c"># 1 ISOTOPE</span> 295 <span class="c"># 2 103 < ATOMIC NO. < 256</span> 296 <span class="c"># 3 GROUP IVA,VA,VIA PERIODS 4-6 (Ge...)</span> 297 <span class="c"># 4 ACTINIDE</span> 298 <span class="c"># 5 GROUP IIIB,IVB (Sc...)</span> 299 <span class="c"># 6 LANTHANIDE</span> 300 <span class="c"># 7 GROUP VB,VIB,VIIB (V...)</span> 301 <span class="c"># 8 QAAA@1</span> 302 <span class="c"># 9 GROUP VIII (Fe...)</span> 303 <span class="c"># 10 GROUP IIA (ALKALINE EARTH)</span> 304 <span class="c"># 11 4M RING</span> 305 <span class="c"># 12 GROUP IB,IIB (Cu...)</span> 306 <span class="c"># 13 ON(C)C</span> 307 <span class="c"># 14 S-S</span> 308 <span class="c"># 15 OC(O)O</span> 309 <span class="c"># 16 QAA@1</span> 310 <span class="c"># 17 CTC</span> 311 <span class="c"># 18 GROUP IIIA (B...)</span> 312 <span class="c"># 19 7M RING</span> 313 <span class="c"># 20 SI</span> 314 <span class="c"># 21 C=C(Q)Q</span> 315 <span class="c"># 22 3M RING</span> 316 <span class="c"># 23 NC(O)O</span> 317 <span class="c"># 24 N-O</span> 318 <span class="c"># 25 NC(N)N</span> 319 <span class="c"># 26 C$=C($A)$A</span> 320 <span class="c"># 27 I</span> 321 <span class="c"># 28 QCH2Q</span> 322 <span class="c"># 29 P</span> 323 <span class="c"># 30 CQ(C)(C)A</span> 324 <span class="c"># 31 QX</span> 325 <span class="c"># 32 CSN</span> 326 <span class="c"># 33 NS</span> 327 <span class="c"># 34 CH2=A</span> 328 <span class="c"># 35 GROUP IA (ALKALI METAL)</span> 329 <span class="c"># 36 S HETEROCYCLE</span> 330 <span class="c"># 37 NC(O)N</span> 331 <span class="c"># 38 NC(C)N</span> 332 <span class="c"># 39 OS(O)O</span> 333 <span class="c"># 40 S-O</span> 334 <span class="c"># 41 CTN</span> 335 <span class="c"># 42 F</span> 336 <span class="c"># 43 QHAQH</span> 337 <span class="c"># 44 OTHER</span> 338 <span class="c"># 45 C=CN</span> 339 <span class="c"># 46 BR</span> 340 <span class="c"># 47 SAN</span> 341 <span class="c"># 48 OQ(O)O</span> 342 <span class="c"># 49 CHARGE</span> 343 <span class="c"># 50 C=C(C)C</span> 344 <span class="c"># 51 CSO</span> 345 <span class="c"># 52 NN</span> 346 <span class="c"># 53 QHAAAQH</span> 347 <span class="c"># 54 QHAAQH</span> 348 <span class="c"># 55 OSO</span> 349 <span class="c"># 56 ON(O)C</span> 350 <span class="c"># 57 O HETEROCYCLE</span> 351 <span class="c"># 58 QSQ</span> 352 <span class="c"># 59 Snot%A%A</span> 353 <span class="c"># 60 S=O</span> 354 <span class="c"># 61 AS(A)A</span> 355 <span class="c"># 62 A$A!A$A</span> 356 <span class="c"># 63 N=O</span> 357 <span class="c"># 64 A$A!S</span> 358 <span class="c"># 65 C%N</span> 359 <span class="c"># 66 CC(C)(C)A</span> 360 <span class="c"># 67 QS</span> 361 <span class="c"># 68 QHQH (&...)</span> 362 <span class="c"># 69 QQH</span> 363 <span class="c"># 70 QNQ</span> 364 <span class="c"># 71 NO</span> 365 <span class="c"># 72 OAAO</span> 366 <span class="c"># 73 S=A</span> 367 <span class="c"># 74 CH3ACH3</span> 368 <span class="c"># 75 A!N$A</span> 369 <span class="c"># 76 C=C(A)A</span> 370 <span class="c"># 77 NAN</span> 371 <span class="c"># 78 C=N</span> 372 <span class="c"># 79 NAAN</span> 373 <span class="c"># 80 NAAAN</span> 374 <span class="c"># 81 SA(A)A</span> 375 <span class="c"># 82 ACH2QH</span> 376 <span class="c"># 83 QAAAA@1</span> 377 <span class="c"># 84 NH2</span> 378 <span class="c"># 85 CN(C)C</span> 379 <span class="c"># 86 CH2QCH2</span> 380 <span class="c"># 87 X!A$A</span> 381 <span class="c"># 88 S</span> 382 <span class="c"># 89 OAAAO</span> 383 <span class="c"># 90 QHAACH2A</span> 384 <span class="c"># 91 QHAAACH2A</span> 385 <span class="c"># 92 OC(N)C</span> 386 <span class="c"># 93 QCH3</span> 387 <span class="c"># 94 QN</span> 388 <span class="c"># 95 NAAO</span> 389 <span class="c"># 96 5M RING</span> 390 <span class="c"># 97 NAAAO</span> 391 <span class="c"># 98 QAAAAA@1</span> 392 <span class="c"># 99 C=C</span> 393 <span class="c"># 100 ACH2N</span> 394 <span class="c"># 101 8M RING</span> 395 <span class="c"># 102 QO</span> 396 <span class="c"># 103 CL</span> 397 <span class="c"># 104 QHACH2A</span> 398 <span class="c"># 105 A$A($A)$A</span> 399 <span class="c"># 106 QA(Q)Q</span> 400 <span class="c"># 107 XA(A)A</span> 401 <span class="c"># 108 CH3AAACH2A</span> 402 <span class="c"># 109 ACH2O</span> 403 <span class="c"># 110 NCO</span> 404 <span class="c"># 111 NACH2A</span> 405 <span class="c"># 112 AA(A)(A)A</span> 406 <span class="c"># 113 Onot%A%A</span> 407 <span class="c"># 114 CH3CH2A</span> 408 <span class="c"># 115 CH3ACH2A</span> 409 <span class="c"># 116 CH3AACH2A</span> 410 <span class="c"># 117 NAO</span> 411 <span class="c"># 118 ACH2CH2A > 1</span> 412 <span class="c"># 119 N=A</span> 413 <span class="c"># 120 HETEROCYCLIC ATOM > 1 (&...)</span> 414 <span class="c"># 121 N HETEROCYCLE</span> 415 <span class="c"># 122 AN(A)A</span> 416 <span class="c"># 123 OCO</span> 417 <span class="c"># 124 QQ</span> 418 <span class="c"># 125 AROMATIC RING > 1</span> 419 <span class="c"># 126 A!O!A</span> 420 <span class="c"># 127 A$A!O > 1 (&...)</span> 421 <span class="c"># 128 ACH2AAACH2A</span> 422 <span class="c"># 129 ACH2AACH2A</span> 423 <span class="c"># 130 QQ > 1 (&...)</span> 424 <span class="c"># 131 QH > 1</span> 425 <span class="c"># 132 OACH2A</span> 426 <span class="c"># 133 A$A!N</span> 427 <span class="c"># 134 X (HALOGEN)</span> 428 <span class="c"># 135 Nnot%A%A</span> 429 <span class="c"># 136 O=A > 1</span> 430 <span class="c"># 137 HETEROCYCLE</span> 431 <span class="c"># 138 QCH2A > 1 (&...)</span> 432 <span class="c"># 139 OH</span> 433 <span class="c"># 140 O > 3 (&...)</span> 434 <span class="c"># 141 CH3 > 2 (&...)</span> 435 <span class="c"># 142 N > 1</span> 436 <span class="c"># 143 A$A!O</span> 437 <span class="c"># 144 Anot%A%Anot%A</span> 438 <span class="c"># 145 6M RING > 1</span> 439 <span class="c"># 146 O > 2</span> 440 <span class="c"># 147 ACH2CH2A</span> 441 <span class="c"># 148 AQ(A)A</span> 442 <span class="c"># 149 CH3 > 1</span> 443 <span class="c"># 150 A!A$A!A</span> 444 <span class="c"># 151 NH</span> 445 <span class="c"># 152 OC(C)C</span> 446 <span class="c"># 153 QCH2A</span> 447 <span class="c"># 154 C=O</span> 448 <span class="c"># 155 A!CH2!A</span> 449 <span class="c"># 156 NA(A)A</span> 450 <span class="c"># 157 C-O</span> 451 <span class="c"># 158 C-N</span> 452 <span class="c"># 159 O > 1</span> 453 <span class="c"># 160 CH3</span> 454 <span class="c"># 161 N</span> 455 <span class="c"># 162 AROMATIC</span> 456 <span class="c"># 163 6M RING</span> 457 <span class="c"># 164 O</span> 458 <span class="c"># 165 RING</span> 459 <span class="c"># 166 FRAGMENTS</span> 460 <span class="c">#</span> <a name="_GenerateMACCS166Keys-"></a> 461 <span class="k">sub </span><span class="m">_GenerateMACCS166Keys</span> <span class="s">{</span> 462 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 463 <span class="k">my</span><span class="s">(</span><span class="i">$KeyNum</span><span class="cm">,</span> <span class="i">$KeyIndex</span><span class="cm">,</span> <span class="i">$MethodName</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$SkipPosCheck</span><span class="s">)</span><span class="sc">;</span> 464 465 <span class="i">$SkipPosCheck</span> = <span class="n">1</span><span class="sc">;</span> 466 467 <span class="c"># Generate and set key values...</span> 468 <span class="j">KEYNUM:</span> <span class="k">for</span> <span class="i">$KeyNum</span> <span class="s">(</span><span class="n">1</span> .. <span class="n">166</span><span class="s">)</span> <span class="s">{</span> 469 <span class="i">$MethodName</span> = <span class="q">"_Generate166KeySetKey${KeyNum}"</span><span class="sc">;</span> 470 <span class="i">$KeyValue</span> = <span class="i">$This</span><span class="i">->$MethodName</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 471 472 <span class="k">if</span> <span class="s">(</span>!<span class="i">$KeyValue</span><span class="s">)</span> <span class="s">{</span> 473 <span class="k">next</span> <span class="j">KEYNUM</span><span class="sc">;</span> 474 <span class="s">}</span> 475 <span class="i">$KeyIndex</span> = <span class="i">$KeyNum</span> - <span class="n">1</span><span class="sc">;</span> 476 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 477 <span class="i">$This</span>->{<span class="w">FingerprintsBitVector</span>}<span class="i">->SetBit</span><span class="s">(</span><span class="i">$KeyIndex</span><span class="cm">,</span> <span class="i">$SkipPosCheck</span><span class="s">)</span><span class="sc">;</span> 478 <span class="s">}</span> 479 <span class="k">else</span> <span class="s">{</span> 480 <span class="i">$This</span>->{<span class="w">FingerprintsVector</span>}<span class="i">->SetValue</span><span class="s">(</span><span class="i">$KeyIndex</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$SkipPosCheck</span><span class="s">)</span><span class="sc">;</span> 481 <span class="s">}</span> 482 <span class="s">}</span> 483 484 <span class="c"># Add key labels for MACCSKeyCount...</span> 485 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 486 <span class="i">$This</span><span class="i">->_SetMACCSKeyCountValueIDs</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 487 <span class="s">}</span> 488 489 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 490 <span class="s">}</span> 491 492 <span class="c"># Generate MDL MACCS 322 keys...</span> 493 <span class="c">#</span> 494 <span class="c"># MDL MACCS 322 key set is defined in tables 1, 2 and 3 by: Joseph L. Durant; Burton A. Leland;</span> 495 <span class="c"># Douglas R. Henry; James G. Nourse. Reoptimization of MDL Keys for Use in Drug Discovery [ Ref. 46 ].</span> 496 <span class="c">#</span> 497 <span class="c"># Atom symbols:</span> 498 <span class="c">#</span> 499 <span class="c"># A : Any valid perodic table element symbol</span> 500 <span class="c"># Q : Hetro atoms; any non-C or non-H atom</span> 501 <span class="c"># X : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I</span> 502 <span class="c"># Z is neither defined nor used</span> 503 <span class="c">#</span> 504 <span class="c"># Atom symbol, X, used for 322 keys [ Ref 46 ] doesn't refer to Halogens as it does for 166 keys. In</span> 505 <span class="c"># order to keep the definition of 322 keys consistent with the published definitions, the symbol X is</span> 506 <span class="c"># used to imply "others" atoms, but it's internally mapped to symbol X as defined for 166 keys</span> 507 <span class="c"># during the generation of key values.</span> 508 <span class="c">#</span> 509 <span class="c"># The keys include:</span> 510 <span class="c">#</span> 511 <span class="c"># o 26 atom properties of type P, as listed in Table 1</span> 512 <span class="c"># o 32 one-atom environments, as listed in Table 3</span> 513 <span class="c"># o 264 atom-bond-atom combinations listed in Table 4</span> 514 <span class="c">#</span> 515 <span class="c"># Total number of keys in three tables: 322</span> 516 <span class="c">#</span> 517 <span class="c"># Removal of two rare properties in Table 1 number 21 and 22 results in a 320 keyset.</span> 518 <span class="c">#</span> 519 <span class="c"># Atom properties-based keys (26):</span> 520 <span class="c">#</span> 521 <span class="c"># Index Description</span> 522 <span class="c"># 1 A(AAA) or AA(A)A - atom with at least three neighbors</span> 523 <span class="c"># 2 Q - heteroatom</span> 524 <span class="c"># 3 Anot%not-A - atom involved in one or more multiple bonds, not aromatic</span> 525 <span class="c"># 4 A(AAAA) or AA(A)(A)A - atom with at least four neighbors</span> 526 <span class="c"># 5 A(QQ) or QA(Q) - atom with at least two heteroatom neighbors</span> 527 <span class="c"># 6 A(QQQ) or QA(Q)Q - atom with at least three heteroatom neighbors</span> 528 <span class="c"># 7 QH - heteroatom with at least one hydrogen attached</span> 529 <span class="c"># 8 CH2(AA) or ACH2A - carbon with at least two single bonds and at least two hydrogens attached</span> 530 <span class="c"># 9 CH3(A) or ACH3 - carbon with at least one single bond and at least three hydrogens attached</span> 531 <span class="c"># 10 Halogen</span> 532 <span class="c"># 11 A(-A-A-A) or A-A(-A)-A - atom has at least three single bonds</span> 533 <span class="c"># 12 AAAAAA@1 > 2 - atom is in at least two different six-membered rings</span> 534 <span class="c"># 13 A($A$A$A) or A$A($A)$A - atom has more than two ring bonds</span> 535 <span class="c"># 14 A$A!A$A - atom is at a ring/chain boundary. When a comparison is done</span> 536 <span class="c"># with another atom the path passes through the chain bond.</span> 537 <span class="c"># 15 Anot%A%Anot%A - atom is at an aromatic/nonaromatic boundary. When a</span> 538 <span class="c"># comparison is done with another atom the path</span> 539 <span class="c"># passes through the aromatic bond.</span> 540 <span class="c"># 16 A!A!A - atom with more than one chain bond</span> 541 <span class="c"># 17 A!A$A!A - atom is at a ring/chain boundary. When a comparison is done</span> 542 <span class="c"># with another atom the path passes through the ring bond.</span> 543 <span class="c"># 18 A%Anot%A%A - atom is at an aromatic/nonaromatic boundary. When a</span> 544 <span class="c"># comparison is done with another atom the</span> 545 <span class="c"># path passes through the nonaromatic bond.</span> 546 <span class="c"># 19 HETEROCYCLE - atom is a heteroatom in a ring.</span> 547 <span class="c"># 20 rare properties: atom with five or more neighbors, atom in</span> 548 <span class="c"># four or more rings, or atom types other than</span> 549 <span class="c"># H, C, N, O, S, F, Cl, Br, or I</span> 550 <span class="c"># 21 rare properties: atom has a charge, is an isotope, has two or</span> 551 <span class="c"># more multiple bonds, or has a triple bond.</span> 552 <span class="c"># 22 N - nitrogen</span> 553 <span class="c"># 23 S - sulfur</span> 554 <span class="c"># 24 O - oxygen</span> 555 <span class="c"># 25 A(AA)A(A)A(AA) - atom has two neighbors, each with three or more neighbors</span> 556 <span class="c"># (including the central atom).</span> 557 <span class="c"># 26 CHACH2 - atom has two hydrocarbon (CH2) neighbors</span> 558 <span class="c">#</span> 559 <span class="c">#</span> 560 <span class="c"># Atomic environments properties-based keys (32):</span> 561 <span class="c">#</span> 562 <span class="c"># Index Key Description</span> 563 <span class="c"># 27 C(CC)</span> 564 <span class="c"># 28 C(CCC)</span> 565 <span class="c"># 29 C(CN)</span> 566 <span class="c"># 30 C(CCN)</span> 567 <span class="c"># 31 C(NN)</span> 568 <span class="c"># 32 C(NNC)</span> 569 <span class="c"># 33 C(NNN)</span> 570 <span class="c"># 34 C(CO)</span> 571 <span class="c"># 35 C(CCO)</span> 572 <span class="c"># 36 C(NO)</span> 573 <span class="c"># 37 C(NCO)</span> 574 <span class="c"># 38 C(NNO)</span> 575 <span class="c"># 39 C(OO)</span> 576 <span class="c"># 40 C(COO)</span> 577 <span class="c"># 41 C(NOO)</span> 578 <span class="c"># 42 C(OOO)</span> 579 <span class="c"># 43 Q(CC)</span> 580 <span class="c"># 44 Q(CCC)</span> 581 <span class="c"># 45 Q(CN)</span> 582 <span class="c"># 46 Q(CCN)</span> 583 <span class="c"># 47 Q(NN)</span> 584 <span class="c"># 48 Q(CNN)</span> 585 <span class="c"># 49 Q(NNN)</span> 586 <span class="c"># 50 Q(CO)</span> 587 <span class="c"># 51 Q(CCO)</span> 588 <span class="c"># 52 Q(NO)</span> 589 <span class="c"># 53 Q(CNO)</span> 590 <span class="c"># 54 Q(NNO)</span> 591 <span class="c"># 55 Q(OO)</span> 592 <span class="c"># 56 Q(COO)</span> 593 <span class="c"># 57 Q(NOO)</span> 594 <span class="c"># 58 Q(OOO)</span> 595 <span class="c">#</span> 596 <span class="c"># Note: The first symbol is the central atom, with atoms bonded to the</span> 597 <span class="c"># central atom listed in parentheses. Q is any non-C, non-H atom. If</span> 598 <span class="c"># only two atoms are in parentheses, there is no implication concerning</span> 599 <span class="c"># the other atoms bonded to the central atom.</span> 600 <span class="c">#</span> 601 <span class="c"># Atom-Bond-Atom properties-based keys: (264)</span> 602 <span class="c">#</span> 603 <span class="c"># Index Key Description</span> 604 <span class="c"># 59 C-C</span> 605 <span class="c"># 60 C-N</span> 606 <span class="c"># 61 C-O</span> 607 <span class="c"># 62 C-S</span> 608 <span class="c"># 63 C-Cl</span> 609 <span class="c"># 64 C-P</span> 610 <span class="c"># 65 C-F</span> 611 <span class="c"># 66 C-Br</span> 612 <span class="c"># 67 C-Si</span> 613 <span class="c"># 68 C-I</span> 614 <span class="c"># 69 C-X</span> 615 <span class="c"># 70 N-N</span> 616 <span class="c"># 71 N-O</span> 617 <span class="c"># 72 N-S</span> 618 <span class="c"># 73 N-Cl</span> 619 <span class="c"># 74 N-P</span> 620 <span class="c"># 75 N-F</span> 621 <span class="c"># 76 N-Br</span> 622 <span class="c"># 77 N-Si</span> 623 <span class="c"># 78 N-I</span> 624 <span class="c"># 79 N-X</span> 625 <span class="c"># 80 O-O</span> 626 <span class="c"># 81 O-S</span> 627 <span class="c"># 82 O-Cl</span> 628 <span class="c"># 83 O-P</span> 629 <span class="c"># 84 O-F</span> 630 <span class="c"># 85 O-Br</span> 631 <span class="c"># 86 O-Si</span> 632 <span class="c"># 87 O-I</span> 633 <span class="c"># 88 O-X</span> 634 <span class="c"># 89 S-S</span> 635 <span class="c"># 90 S-Cl</span> 636 <span class="c"># 91 S-P</span> 637 <span class="c"># 92 S-F</span> 638 <span class="c"># 93 S-Br</span> 639 <span class="c"># 94 S-Si</span> 640 <span class="c"># 95 S-I</span> 641 <span class="c"># 96 S-X</span> 642 <span class="c"># 97 Cl-Cl</span> 643 <span class="c"># 98 Cl-P</span> 644 <span class="c"># 99 Cl-F</span> 645 <span class="c"># 100 Cl-Br</span> 646 <span class="c"># 101 Cl-Si</span> 647 <span class="c"># 102 Cl-I</span> 648 <span class="c"># 103 Cl-X</span> 649 <span class="c"># 104 P-P</span> 650 <span class="c"># 105 P-F</span> 651 <span class="c"># 106 P-Br</span> 652 <span class="c"># 107 P-Si</span> 653 <span class="c"># 108 P-I</span> 654 <span class="c"># 109 P-X</span> 655 <span class="c"># 110 F-F</span> 656 <span class="c"># 111 F-Br</span> 657 <span class="c"># 112 F-Si</span> 658 <span class="c"># 113 F-I</span> 659 <span class="c"># 114 F-X</span> 660 <span class="c"># 115 Br-Br</span> 661 <span class="c"># 116 Br-Si</span> 662 <span class="c"># 117 Br-I</span> 663 <span class="c"># 118 Br-X</span> 664 <span class="c"># 119 Si-Si</span> 665 <span class="c"># 120 Si-I</span> 666 <span class="c"># 121 Si-X</span> 667 <span class="c"># 122 I-I</span> 668 <span class="c"># 123 I-X</span> 669 <span class="c"># 124 X-X</span> 670 <span class="c"># 125 C=C</span> 671 <span class="c"># 126 C=N</span> 672 <span class="c"># 127 C=O</span> 673 <span class="c"># 128 C=S</span> 674 <span class="c"># 129 C=Cl</span> 675 <span class="c"># 130 C=P</span> 676 <span class="c"># 131 C=F</span> 677 <span class="c"># 132 C=Br</span> 678 <span class="c"># 133 C=Si</span> 679 <span class="c"># 134 C=I</span> 680 <span class="c"># 135 C=X</span> 681 <span class="c"># 136 N=N</span> 682 <span class="c"># 137 N=O</span> 683 <span class="c"># 138 N=S</span> 684 <span class="c"># 139 N=Cl</span> 685 <span class="c"># 140 N=P</span> 686 <span class="c"># 141 N=F</span> 687 <span class="c"># 142 N=Br</span> 688 <span class="c"># 143 N=Si</span> 689 <span class="c"># 144 N=I</span> 690 <span class="c"># 145 N=X</span> 691 <span class="c"># 146 O=O</span> 692 <span class="c"># 147 O=S</span> 693 <span class="c"># 148 O=Cl</span> 694 <span class="c"># 149 O=P</span> 695 <span class="c"># 150 O=F</span> 696 <span class="c"># 151 O=Br</span> 697 <span class="c"># 152 O=Si</span> 698 <span class="c"># 153 O=I</span> 699 <span class="c"># 154 O=X</span> 700 <span class="c"># 155 S=S</span> 701 <span class="c"># 156 S=Cl</span> 702 <span class="c"># 157 S=P</span> 703 <span class="c"># 158 S=F</span> 704 <span class="c"># 159 S=Br</span> 705 <span class="c"># 160 S=Si</span> 706 <span class="c"># 161 S=I</span> 707 <span class="c"># 162 S=X</span> 708 <span class="c"># 163 Cl=Cl</span> 709 <span class="c"># 164 Cl=P</span> 710 <span class="c"># 165 Cl=F</span> 711 <span class="c"># 166 Cl=Br</span> 712 <span class="c"># 167 Cl=Si</span> 713 <span class="c"># 168 Cl=I</span> 714 <span class="c"># 169 Cl=X</span> 715 <span class="c"># 170 P=P</span> 716 <span class="c"># 171 P=F</span> 717 <span class="c"># 172 P=Br</span> 718 <span class="c"># 173 P=Si</span> 719 <span class="c"># 174 P=I</span> 720 <span class="c"># 175 P=X</span> 721 <span class="c"># 176 F=F</span> 722 <span class="c"># 177 F=Br</span> 723 <span class="c"># 178 F=Si</span> 724 <span class="c"># 179 F=I</span> 725 <span class="c"># 180 F=X</span> 726 <span class="c"># 181 Br=Br</span> 727 <span class="c"># 182 Br=Si</span> 728 <span class="c"># 183 Br=I</span> 729 <span class="c"># 184 Br=X</span> 730 <span class="c"># 185 Si=Si</span> 731 <span class="c"># 186 Si=I</span> 732 <span class="c"># 187 Si=X</span> 733 <span class="c"># 188 I=I</span> 734 <span class="c"># 189 I=X</span> 735 <span class="c"># 190 X=X</span> 736 <span class="c"># 191 C#C</span> 737 <span class="c"># 192 C#N</span> 738 <span class="c"># 193 C#O</span> 739 <span class="c"># 194 C#S</span> 740 <span class="c"># 195 C#Cl</span> 741 <span class="c"># 196 C#P</span> 742 <span class="c"># 197 C#F</span> 743 <span class="c"># 198 C#Br</span> 744 <span class="c"># 199 C#Si</span> 745 <span class="c"># 200 C#I</span> 746 <span class="c"># 201 C#X</span> 747 <span class="c"># 202 N#N</span> 748 <span class="c"># 203 N#O</span> 749 <span class="c"># 204 N#S</span> 750 <span class="c"># 205 N#Cl</span> 751 <span class="c"># 206 N#P</span> 752 <span class="c"># 207 N#F</span> 753 <span class="c"># 208 N#Br</span> 754 <span class="c"># 209 N#Si</span> 755 <span class="c"># 210 N#I</span> 756 <span class="c"># 211 N#X</span> 757 <span class="c"># 212 O#O</span> 758 <span class="c"># 213 O#S</span> 759 <span class="c"># 214 O#Cl</span> 760 <span class="c"># 215 O#P</span> 761 <span class="c"># 216 O#F</span> 762 <span class="c"># 217 O#Br</span> 763 <span class="c"># 218 O#Si</span> 764 <span class="c"># 219 O#I</span> 765 <span class="c"># 220 O#X</span> 766 <span class="c"># 221 S#S</span> 767 <span class="c"># 222 S#Cl</span> 768 <span class="c"># 223 S#P</span> 769 <span class="c"># 224 S#F</span> 770 <span class="c"># 225 S#Br</span> 771 <span class="c"># 226 S#Si</span> 772 <span class="c"># 227 S#I</span> 773 <span class="c"># 228 S#X</span> 774 <span class="c"># 229 Cl#Cl</span> 775 <span class="c"># 230 Cl#P</span> 776 <span class="c"># 231 Cl#F</span> 777 <span class="c"># 232 Cl#Br</span> 778 <span class="c"># 233 Cl#Si</span> 779 <span class="c"># 234 Cl#I</span> 780 <span class="c"># 235 Cl#X</span> 781 <span class="c"># 236 P#P</span> 782 <span class="c"># 237 P#F</span> 783 <span class="c"># 238 P#Br</span> 784 <span class="c"># 239 P#Si</span> 785 <span class="c"># 240 P#I</span> 786 <span class="c"># 241 P#X</span> 787 <span class="c"># 242 F#F</span> 788 <span class="c"># 243 F#Br</span> 789 <span class="c"># 244 F#Si</span> 790 <span class="c"># 245 F#I</span> 791 <span class="c"># 246 F#X</span> 792 <span class="c"># 247 Br#Br</span> 793 <span class="c"># 248 Br#Si</span> 794 <span class="c"># 249 Br#I</span> 795 <span class="c"># 250 Br#X</span> 796 <span class="c"># 251 Si#Si</span> 797 <span class="c"># 252 Si#I</span> 798 <span class="c"># 253 Si#X</span> 799 <span class="c"># 254 I#I</span> 800 <span class="c"># 255 I#X</span> 801 <span class="c"># 256 X#X</span> 802 <span class="c"># 257 C$C</span> 803 <span class="c"># 258 C$N</span> 804 <span class="c"># 259 C$O</span> 805 <span class="c"># 260 C$S</span> 806 <span class="c"># 261 C$Cl</span> 807 <span class="c"># 262 C$P</span> 808 <span class="c"># 263 C$F</span> 809 <span class="c"># 264 C$Br</span> 810 <span class="c"># 265 C$Si</span> 811 <span class="c"># 266 C$I</span> 812 <span class="c"># 267 C$X</span> 813 <span class="c"># 268 N$N</span> 814 <span class="c"># 269 N$O</span> 815 <span class="c"># 270 N$S</span> 816 <span class="c"># 271 N$Cl</span> 817 <span class="c"># 272 N$P</span> 818 <span class="c"># 273 N$F</span> 819 <span class="c"># 274 N$Br</span> 820 <span class="c"># 275 N$Si</span> 821 <span class="c"># 276 N$I</span> 822 <span class="c"># 277 N$X</span> 823 <span class="c"># 278 O$O</span> 824 <span class="c"># 279 O$S</span> 825 <span class="c"># 280 O$Cl</span> 826 <span class="c"># 281 O$P</span> 827 <span class="c"># 282 O$F</span> 828 <span class="c"># 283 O$Br</span> 829 <span class="c"># 284 O$Si</span> 830 <span class="c"># 285 O$I</span> 831 <span class="c"># 286 O$X</span> 832 <span class="c"># 287 S$S</span> 833 <span class="c"># 288 S$Cl</span> 834 <span class="c"># 289 S$P</span> 835 <span class="c"># 290 S$F</span> 836 <span class="c"># 291 S$Br</span> 837 <span class="c"># 292 S$Si</span> 838 <span class="c"># 293 S$I</span> 839 <span class="c"># 294 S$X</span> 840 <span class="c"># 295 Cl$Cl</span> 841 <span class="c"># 296 Cl$P</span> 842 <span class="c"># 297 Cl$F</span> 843 <span class="c"># 298 Cl$Br</span> 844 <span class="c"># 299 Cl$Si</span> 845 <span class="c"># 300 Cl$I</span> 846 <span class="c"># 301 Cl$X</span> 847 <span class="c"># 302 P$P</span> 848 <span class="c"># 303 P$F</span> 849 <span class="c"># 304 P$Br</span> 850 <span class="c"># 305 P$Si</span> 851 <span class="c"># 306 P$I</span> 852 <span class="c"># 307 P$X</span> 853 <span class="c"># 308 F$F</span> 854 <span class="c"># 309 F$Br</span> 855 <span class="c"># 310 F$Si</span> 856 <span class="c"># 311 F$I</span> 857 <span class="c"># 312 F$X</span> 858 <span class="c"># 313 Br$Br</span> 859 <span class="c"># 314 Br$Si</span> 860 <span class="c"># 315 Br$I</span> 861 <span class="c"># 316 Br$X</span> 862 <span class="c"># 317 Si$Si</span> 863 <span class="c"># 318 Si$I</span> 864 <span class="c"># 319 Si$X</span> 865 <span class="c"># 320 I$I</span> 866 <span class="c"># 321 I$X</span> 867 <span class="c"># 322 X$X</span> 868 <span class="c">#</span> 869 <span class="c"># Note: Instead of using '%' as rind bond as mentioned in the article [ Ref. 46 ], MayaChemTools</span> 870 <span class="c"># used '$' as a symbol for ring bond to follow conventions used for MACCS 166 keys; the symbol '%'</span> 871 <span class="c"># is used to indicate an aromatic query bond.</span> 872 <span class="c">#</span> <a name="_GenerateMACCS322Keys-"></a> 873 <span class="k">sub </span><span class="m">_GenerateMACCS322Keys</span> <span class="s">{</span> 874 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 875 <span class="k">my</span><span class="s">(</span><span class="i">$KeyNum</span><span class="cm">,</span> <span class="i">$KeyIndex</span><span class="cm">,</span> <span class="i">$MethodName</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$SkipPosCheck</span><span class="s">)</span><span class="sc">;</span> 876 877 <span class="i">$SkipPosCheck</span> = <span class="n">1</span><span class="sc">;</span> 878 879 <span class="c"># Generate and set key values...</span> 880 <span class="j">KEYNUM:</span> <span class="k">for</span> <span class="i">$KeyNum</span> <span class="s">(</span><span class="n">1</span> .. <span class="n">322</span><span class="s">)</span> <span class="s">{</span> 881 <span class="i">$MethodName</span> = <span class="q">"_Generate322KeySetKey${KeyNum}"</span><span class="sc">;</span> 882 <span class="i">$KeyValue</span> = <span class="i">$This</span><span class="i">->$MethodName</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 883 884 <span class="k">if</span> <span class="s">(</span>!<span class="i">$KeyValue</span><span class="s">)</span> <span class="s">{</span> 885 <span class="k">next</span> <span class="j">KEYNUM</span><span class="sc">;</span> 886 <span class="s">}</span> 887 <span class="i">$KeyIndex</span> = <span class="i">$KeyNum</span> - <span class="n">1</span><span class="sc">;</span> 888 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 889 <span class="i">$This</span>->{<span class="w">FingerprintsBitVector</span>}<span class="i">->SetBit</span><span class="s">(</span><span class="i">$KeyIndex</span><span class="cm">,</span> <span class="i">$SkipPosCheck</span><span class="s">)</span><span class="sc">;</span> 890 <span class="s">}</span> 891 <span class="k">else</span> <span class="s">{</span> 892 <span class="i">$This</span>->{<span class="w">FingerprintsVector</span>}<span class="i">->SetValue</span><span class="s">(</span><span class="i">$KeyIndex</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$SkipPosCheck</span><span class="s">)</span><span class="sc">;</span> 893 <span class="s">}</span> 894 <span class="s">}</span> 895 896 <span class="c"># Add key labels for MACCSKeyCount...</span> 897 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 898 <span class="i">$This</span><span class="i">->_SetMACCSKeyCountValueIDs</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 899 <span class="s">}</span> 900 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 901 <span class="s">}</span> 902 903 <span class="c"># Set MACCS key count value IDs for fingerprint vector. The value IDs labels format</span> 904 <span class="c"># is: Key<KeyNum>.</span> 905 <span class="c">#</span> 906 <span class="c"># By default, no value IDs are set for fingerprint vector values.</span> 907 <span class="c">#</span> <a name="_SetMACCSKeyCountValueIDs-"></a> 908 <span class="k">sub </span><span class="m">_SetMACCSKeyCountValueIDs</span> <span class="s">{</span> 909 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 910 911 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span>->{<span class="w">FingerprintsVector</span>}<span class="s">)</span> <span class="s">{</span> 912 <span class="k">return</span><span class="sc">;</span> 913 <span class="s">}</span> 914 <span class="k">my</span><span class="s">(</span><span class="i">@ValueIDs</span><span class="s">)</span><span class="sc">;</span> 915 916 <span class="i">@ValueIDs</span> = <span class="k">map</span> <span class="s">{</span> <span class="q">"Key$_"</span><span class="sc">;</span> <span class="s">}</span> <span class="s">(</span><span class="n">1</span> .. <span class="i">$This</span>->{<span class="w">Size</span>}<span class="s">)</span><span class="sc">;</span> 917 <span class="i">$This</span>->{<span class="w">FingerprintsVector</span>}<span class="i">->AddValueIDs</span><span class="s">(</span>\<span class="i">@ValueIDs</span><span class="s">)</span><span class="sc">;</span> 918 919 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 920 <span class="s">}</span> 921 922 <span class="c">##################################</span> 923 <span class="c">#</span> 924 <span class="c"># Implementation of MDL MACCS 166 keys...</span> 925 <span class="c">#</span> 926 <span class="c">##################################</span> 927 928 <span class="c"># Generate key 1 value as 1/0 indicating its presence/absence or count of its</span> 929 <span class="c"># presence in a molecule.</span> 930 <span class="c">#</span> 931 <span class="c"># Key 1 description: ISOTOPE</span> 932 <span class="c">#</span> <a name="_Generate166KeySetKey1-"></a> 933 <span class="k">sub </span><span class="m">_Generate166KeySetKey1</span> <span class="s">{</span> 934 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 935 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 936 937 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 938 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 939 <span class="k">if</span> <span class="s">(</span><span class="i">$Atom</span><span class="i">->IsIsotope</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 940 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 941 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 942 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 943 <span class="s">}</span> 944 <span class="i">$KeyValue</span>++<span class="sc">;</span> 945 <span class="s">}</span> 946 <span class="s">}</span> 947 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 948 <span class="s">}</span> 949 950 <span class="c"># Generate key 2 value as 1/0 indicating its presence/absence or count of its</span> 951 <span class="c"># presence in a molecule.</span> 952 <span class="c">#</span> 953 <span class="c"># Key 2 description: 103 < ATOMIC NO. < 256</span> 954 <span class="c">#</span> <a name="_Generate166KeySetKey2-"></a> 955 <span class="k">sub </span><span class="m">_Generate166KeySetKey2</span> <span class="s">{</span> 956 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 957 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 958 959 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 960 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 961 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 962 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span> > <span class="n">103</span> && <span class="i">$AtomicNumber</span> < <span class="n">256</span><span class="s">)</span> <span class="s">{</span> 963 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 964 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 965 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 966 <span class="s">}</span> 967 <span class="i">$KeyValue</span>++<span class="sc">;</span> 968 <span class="s">}</span> 969 <span class="s">}</span> 970 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 971 <span class="s">}</span> 972 973 <span class="c"># Generate key 3 value as 1/0 indicating its presence/absence or count of its</span> 974 <span class="c"># presence in a molecule.</span> 975 <span class="c">#</span> 976 <span class="c"># Key 3 description: GROUP IVA,VA,VIA (GroupNumber: 14, 15, 16) PERIODS 4-6 (Ge...)</span> 977 <span class="c">#</span> <a name="_Generate166KeySetKey3-"></a> 978 <span class="k">sub </span><span class="m">_Generate166KeySetKey3</span> <span class="s">{</span> 979 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 980 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="cm">,</span> <span class="i">$PeriodNumber</span><span class="s">)</span><span class="sc">;</span> 981 982 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 983 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 984 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 985 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 986 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 987 <span class="i">$PeriodNumber</span> = <span class="i">PeriodicTable::GetElementPeriodNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 988 <span class="k">if</span> <span class="s">(</span><span class="i">$PeriodNumber</span> =~ <span class="q">/^(4|5|6)$/</span> && <span class="i">$GroupNumber</span> =~ <span class="q">/^(14|15|16)$/</span><span class="s">)</span> <span class="s">{</span> 989 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 990 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 991 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 992 <span class="s">}</span> 993 <span class="i">$KeyValue</span>++<span class="sc">;</span> 994 <span class="s">}</span> 995 <span class="s">}</span> 996 <span class="s">}</span> 997 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 998 <span class="s">}</span> 999 1000 <span class="c"># Generate key 4 value as 1/0 indicating its presence/absence or count of its</span> 1001 <span class="c"># presence in a molecule.</span> 1002 <span class="c">#</span> 1003 <span class="c"># Key 4 description: ACTINIDE</span> 1004 <span class="c">#</span> <a name="_Generate166KeySetKey4-"></a>1005 <span class="k">sub </span><span class="m">_Generate166KeySetKey4</span> <span class="s">{</span> 1006 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1007 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 1008 1009 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1010 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1011 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1012 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span> >= <span class="n">89</span> && <span class="i">$AtomicNumber</span> <= <span class="n">103</span><span class="s">)</span> <span class="s">{</span> 1013 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1014 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1015 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1016 <span class="s">}</span> 1017 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1018 <span class="s">}</span> 1019 <span class="s">}</span> 1020 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1021 <span class="s">}</span> 1022 1023 <span class="c"># Generate key 5 value as 1/0 indicating its presence/absence or count of its</span> 1024 <span class="c"># presence in a molecule.</span> 1025 <span class="c">#</span> 1026 <span class="c"># Key 5 description: GROUP IIIB,IVB (Sc...)</span> 1027 <span class="c">#</span> <a name="_Generate166KeySetKey5-"></a>1028 <span class="k">sub </span><span class="m">_Generate166KeySetKey5</span> <span class="s">{</span> 1029 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1030 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="s">)</span><span class="sc">;</span> 1031 1032 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1033 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1034 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1035 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 1036 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 1037 <span class="k">if</span> <span class="s">(</span><span class="i">$GroupNumber</span> =~ <span class="q">/^(3|4)$/</span><span class="s">)</span> <span class="s">{</span> 1038 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1039 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1040 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1041 <span class="s">}</span> 1042 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1043 <span class="s">}</span> 1044 <span class="s">}</span> 1045 <span class="s">}</span> 1046 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1047 <span class="s">}</span> 1048 1049 <span class="c"># Generate key 6 value as 1/0 indicating its presence/absence or count of its</span> 1050 <span class="c"># presence in a molecule.</span> 1051 <span class="c">#</span> 1052 <span class="c"># Key 6 description: LANTHANIDE</span> 1053 <span class="c">#</span> <a name="_Generate166KeySetKey6-"></a>1054 <span class="k">sub </span><span class="m">_Generate166KeySetKey6</span> <span class="s">{</span> 1055 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1056 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 1057 1058 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1059 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1060 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1061 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span> >= <span class="n">57</span> && <span class="i">$AtomicNumber</span> <= <span class="n">71</span><span class="s">)</span> <span class="s">{</span> 1062 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1063 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1064 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1065 <span class="s">}</span> 1066 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1067 <span class="s">}</span> 1068 <span class="s">}</span> 1069 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1070 <span class="s">}</span> 1071 1072 <span class="c"># Generate key 7 value as 1/0 indicating its presence/absence or count of its</span> 1073 <span class="c"># presence in a molecule.</span> 1074 <span class="c">#</span> 1075 <span class="c"># Key 7 description: GROUP VB,VIB,VIIB (V...)</span> 1076 <span class="c">#</span> <a name="_Generate166KeySetKey7-"></a>1077 <span class="k">sub </span><span class="m">_Generate166KeySetKey7</span> <span class="s">{</span> 1078 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1079 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="s">)</span><span class="sc">;</span> 1080 1081 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1082 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1083 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1084 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 1085 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 1086 <span class="k">if</span> <span class="s">(</span><span class="i">$GroupNumber</span> =~ <span class="q">/^(5|6|7)$/</span><span class="s">)</span> <span class="s">{</span> 1087 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1088 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1089 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1090 <span class="s">}</span> 1091 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1092 <span class="s">}</span> 1093 <span class="s">}</span> 1094 <span class="s">}</span> 1095 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1096 <span class="s">}</span> 1097 1098 <span class="c"># Generate key 8 value as 1/0 indicating its presence/absence or count of its</span> 1099 <span class="c"># presence in a molecule.</span> 1100 <span class="c">#</span> 1101 <span class="c"># Key 8 description: QAAA@1</span> 1102 <span class="c">#</span> <a name="_Generate166KeySetKey8-"></a>1103 <span class="k">sub </span><span class="m">_Generate166KeySetKey8</span> <span class="s">{</span> 1104 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1105 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 1106 1107 <span class="i">$RingSize</span> = <span class="n">4</span><span class="sc">;</span> 1108 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1109 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1110 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_IsHeteroAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> && <span class="i">$Atom</span><span class="i">->IsInRingOfSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 1111 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1112 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1113 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1114 <span class="s">}</span> 1115 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1116 <span class="s">}</span> 1117 <span class="s">}</span> 1118 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1119 <span class="s">}</span> 1120 1121 <span class="c"># Generate key 9 value as 1/0 indicating its presence/absence or count of its</span> 1122 <span class="c"># presence in a molecule.</span> 1123 <span class="c">#</span> 1124 <span class="c"># Key 9 description: GROUP VIII (Fe...)</span> 1125 <span class="c">#</span> <a name="_Generate166KeySetKey9-"></a>1126 <span class="k">sub </span><span class="m">_Generate166KeySetKey9</span> <span class="s">{</span> 1127 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1128 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="s">)</span><span class="sc">;</span> 1129 1130 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1131 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1132 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1133 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 1134 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 1135 <span class="k">if</span> <span class="s">(</span><span class="i">$GroupNumber</span> =~ <span class="q">/^(8|9|10)$/</span><span class="s">)</span> <span class="s">{</span> 1136 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1137 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1138 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1139 <span class="s">}</span> 1140 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1141 <span class="s">}</span> 1142 <span class="s">}</span> 1143 <span class="s">}</span> 1144 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1145 <span class="s">}</span> 1146 1147 <span class="c"># Generate key 10 value as 1/0 indicating its presence/absence or count of its</span> 1148 <span class="c"># presence in a molecule.</span> 1149 <span class="c">#</span> 1150 <span class="c"># Key 10 description: GROUP IIA (ALKALINE EARTH)</span> 1151 <span class="c">#</span> <a name="_Generate166KeySetKey10-"></a>1152 <span class="k">sub </span><span class="m">_Generate166KeySetKey10</span> <span class="s">{</span> 1153 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1154 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="s">)</span><span class="sc">;</span> 1155 1156 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1157 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1158 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1159 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 1160 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 1161 <span class="k">if</span> <span class="s">(</span><span class="i">$GroupNumber</span> =~ <span class="q">/^2$/</span><span class="s">)</span> <span class="s">{</span> 1162 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1163 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1164 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1165 <span class="s">}</span> 1166 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1167 <span class="s">}</span> 1168 <span class="s">}</span> 1169 <span class="s">}</span> 1170 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1171 <span class="s">}</span> 1172 1173 <span class="c"># Generate key 11 value as 1/0 indicating its presence/absence or count of its</span> 1174 <span class="c"># presence in a molecule.</span> 1175 <span class="c">#</span> 1176 <span class="c"># Key 11 description: 4M RING</span> 1177 <span class="c">#</span> <a name="_Generate166KeySetKey11-"></a>1178 <span class="k">sub </span><span class="m">_Generate166KeySetKey11</span> <span class="s">{</span> 1179 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1180 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 1181 1182 <span class="i">$RingSize</span> = <span class="n">4</span><span class="sc">;</span> 1183 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1184 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 1185 1186 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1187 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 1188 <span class="s">}</span> 1189 <span class="k">else</span> <span class="s">{</span> 1190 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span><span class="sc">;</span> 1191 <span class="s">}</span> 1192 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1193 <span class="s">}</span> 1194 1195 <span class="c"># Generate key 12 value as 1/0 indicating its presence/absence or count of its</span> 1196 <span class="c"># presence in a molecule.</span> 1197 <span class="c">#</span> 1198 <span class="c"># Key 12 description: GROUP IB,IIB (Cu...)</span> 1199 <span class="c">#</span> <a name="_Generate166KeySetKey12-"></a>1200 <span class="k">sub </span><span class="m">_Generate166KeySetKey12</span> <span class="s">{</span> 1201 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1202 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="s">)</span><span class="sc">;</span> 1203 1204 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1205 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1206 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1207 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 1208 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 1209 <span class="k">if</span> <span class="s">(</span><span class="i">$GroupNumber</span> =~ <span class="q">/^(11|12)$/</span><span class="s">)</span> <span class="s">{</span> 1210 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1211 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1212 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1213 <span class="s">}</span> 1214 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1215 <span class="s">}</span> 1216 <span class="s">}</span> 1217 <span class="s">}</span> 1218 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1219 <span class="s">}</span> 1220 1221 <span class="c"># Generate key 13 value as 1/0 indicating its presence/absence or count of its</span> 1222 <span class="c"># presence in a molecule.</span> 1223 <span class="c">#</span> 1224 <span class="c"># Key 13 description: ON(C)C</span> 1225 <span class="c">#</span> <a name="_Generate166KeySetKey13-"></a>1226 <span class="k">sub </span><span class="m">_Generate166KeySetKey13</span> <span class="s">{</span> 1227 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1228 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1229 1230 <span class="i">$CentralAtomSymbol</span> = <span class="q">'N'</span><span class="sc">;</span> 1231 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 1232 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1233 1234 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1235 <span class="s">}</span> 1236 1237 <span class="c"># Generate key 14 value as 1/0 indicating its presence/absence or count of its</span> 1238 <span class="c"># presence in a molecule.</span> 1239 <span class="c">#</span> 1240 <span class="c"># Key 14 description: S-S</span> 1241 <span class="c">#</span> <a name="_Generate166KeySetKey14-"></a>1242 <span class="k">sub </span><span class="m">_Generate166KeySetKey14</span> <span class="s">{</span> 1243 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1244 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">1</span><span class="sc">;</span> 1245 1246 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 1247 <span class="s">}</span> 1248 1249 <span class="c"># Generate key 15 value as 1/0 indicating its presence/absence or count of its</span> 1250 <span class="c"># presence in a molecule.</span> 1251 <span class="c">#</span> 1252 <span class="c"># Key 15 description: OC(O)O</span> 1253 <span class="c">#</span> <a name="_Generate166KeySetKey15-"></a>1254 <span class="k">sub </span><span class="m">_Generate166KeySetKey15</span> <span class="s">{</span> 1255 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1256 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1257 1258 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1259 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 1260 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1261 1262 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1263 <span class="s">}</span> 1264 1265 <span class="c"># Generate key 16 value as 1/0 indicating its presence/absence or count of its</span> 1266 <span class="c"># presence in a molecule.</span> 1267 <span class="c">#</span> 1268 <span class="c"># Key 16 description: QAA@1</span> 1269 <span class="c">#</span> <a name="_Generate166KeySetKey16-"></a>1270 <span class="k">sub </span><span class="m">_Generate166KeySetKey16</span> <span class="s">{</span> 1271 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1272 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 1273 1274 <span class="i">$RingSize</span> = <span class="n">3</span><span class="sc">;</span> 1275 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1276 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1277 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_IsHeteroAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> && <span class="i">$Atom</span><span class="i">->IsInRingOfSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 1278 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1279 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1280 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1281 <span class="s">}</span> 1282 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1283 <span class="s">}</span> 1284 <span class="s">}</span> 1285 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1286 <span class="s">}</span> 1287 1288 <span class="c"># Generate key 17 value as 1/0 indicating its presence/absence or count of its</span> 1289 <span class="c"># presence in a molecule.</span> 1290 <span class="c">#</span> 1291 <span class="c"># Key 17 description: CTC</span> 1292 <span class="c">#</span> <a name="_Generate166KeySetKey17-"></a>1293 <span class="k">sub </span><span class="m">_Generate166KeySetKey17</span> <span class="s">{</span> 1294 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1295 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">3</span><span class="sc">;</span> 1296 1297 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 1298 <span class="s">}</span> 1299 1300 <span class="c"># Generate key 18 value as 1/0 indicating its presence/absence or count of its</span> 1301 <span class="c"># presence in a molecule.</span> 1302 <span class="c">#</span> 1303 <span class="c"># Key 18 description: GROUP IIIA (B...)</span> 1304 <span class="c">#</span> <a name="_Generate166KeySetKey18-"></a>1305 <span class="k">sub </span><span class="m">_Generate166KeySetKey18</span> <span class="s">{</span> 1306 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1307 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="s">)</span><span class="sc">;</span> 1308 1309 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1310 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1311 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1312 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 1313 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 1314 <span class="k">if</span> <span class="s">(</span><span class="i">$GroupNumber</span> =~ <span class="q">/^13$/</span><span class="s">)</span> <span class="s">{</span> 1315 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1316 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1317 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1318 <span class="s">}</span> 1319 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1320 <span class="s">}</span> 1321 <span class="s">}</span> 1322 <span class="s">}</span> 1323 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1324 <span class="s">}</span> 1325 1326 <span class="c"># Generate key 19 value as 1/0 indicating its presence/absence or count of its</span> 1327 <span class="c"># presence in a molecule.</span> 1328 <span class="c">#</span> 1329 <span class="c"># Key 19 description: 7M RING</span> 1330 <span class="c">#</span> <a name="_Generate166KeySetKey19-"></a>1331 <span class="k">sub </span><span class="m">_Generate166KeySetKey19</span> <span class="s">{</span> 1332 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1333 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 1334 1335 <span class="i">$RingSize</span> = <span class="n">7</span><span class="sc">;</span> 1336 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1337 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 1338 1339 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1340 <span class="k">if</span> <span class="s">(</span><span class="i">$NumOfRings</span><span class="s">)</span> <span class="s">{</span> 1341 <span class="i">$KeyValue</span> = <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="i">$NumOfRings</span><span class="sc">;</span> 1342 <span class="s">}</span> 1343 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1344 <span class="s">}</span> 1345 1346 <span class="c"># Generate key 20 value as 1/0 indicating its presence/absence or count of its</span> 1347 <span class="c"># presence in a molecule.</span> 1348 <span class="c">#</span> 1349 <span class="c"># Key 20 description: SI</span> 1350 <span class="c">#</span> <a name="_Generate166KeySetKey20-"></a>1351 <span class="k">sub </span><span class="m">_Generate166KeySetKey20</span> <span class="s">{</span> 1352 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1353 1354 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="s">)</span><span class="sc">;</span> 1355 <span class="s">}</span> 1356 1357 <span class="c"># Generate key 21 value as 1/0 indicating its presence/absence or count of its</span> 1358 <span class="c"># presence in a molecule.</span> 1359 <span class="c">#</span> 1360 <span class="c"># Key 21 description: C=C(Q)Q</span> 1361 <span class="c">#</span> <a name="_Generate166KeySetKey21-"></a>1362 <span class="k">sub </span><span class="m">_Generate166KeySetKey21</span> <span class="s">{</span> 1363 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1364 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1365 1366 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1367 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 1368 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'='</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1369 1370 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1371 <span class="s">}</span> 1372 1373 <span class="c"># Generate key 22 value as 1/0 indicating its presence/absence or count of its</span> 1374 <span class="c"># presence in a molecule.</span> 1375 <span class="c">#</span> 1376 <span class="c"># Key 22 description: 3M RING</span> 1377 <span class="c">#</span> <a name="_Generate166KeySetKey22-"></a>1378 <span class="k">sub </span><span class="m">_Generate166KeySetKey22</span> <span class="s">{</span> 1379 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1380 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 1381 1382 <span class="i">$RingSize</span> = <span class="n">3</span><span class="sc">;</span> 1383 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1384 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 1385 1386 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1387 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 1388 <span class="s">}</span> 1389 <span class="k">else</span> <span class="s">{</span> 1390 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span><span class="sc">;</span> 1391 <span class="s">}</span> 1392 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1393 <span class="s">}</span> 1394 1395 <span class="c"># Generate key 23 value as 1/0 indicating its presence/absence or count of its</span> 1396 <span class="c"># presence in a molecule.</span> 1397 <span class="c">#</span> 1398 <span class="c"># Key 23 description: NC(O)O</span> 1399 <span class="c">#</span> <a name="_Generate166KeySetKey23-"></a>1400 <span class="k">sub </span><span class="m">_Generate166KeySetKey23</span> <span class="s">{</span> 1401 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1402 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1403 1404 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1405 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 1406 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1407 1408 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1409 <span class="s">}</span> 1410 1411 <span class="c"># Generate key 24 value as 1/0 indicating its presence/absence or count of its</span> 1412 <span class="c"># presence in a molecule.</span> 1413 <span class="c">#</span> 1414 <span class="c"># Key 24 description: N-O</span> 1415 <span class="c">#</span> <a name="_Generate166KeySetKey24-"></a>1416 <span class="k">sub </span><span class="m">_Generate166KeySetKey24</span> <span class="s">{</span> 1417 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1418 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">1</span><span class="sc">;</span> 1419 1420 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 1421 <span class="s">}</span> 1422 1423 <span class="c"># Generate key 25 value as 1/0 indicating its presence/absence or count of its</span> 1424 <span class="c"># presence in a molecule.</span> 1425 <span class="c">#</span> 1426 <span class="c"># Key 25 description: NC(N)N</span> 1427 <span class="c">#</span> <a name="_Generate166KeySetKey25-"></a>1428 <span class="k">sub </span><span class="m">_Generate166KeySetKey25</span> <span class="s">{</span> 1429 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1430 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1431 1432 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1433 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 1434 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1435 1436 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1437 <span class="s">}</span> 1438 1439 <span class="c"># Generate key 26 value as 1/0 indicating its presence/absence or count of its</span> 1440 <span class="c"># presence in a molecule.</span> 1441 <span class="c">#</span> 1442 <span class="c"># Key 26 description: C$=C($A)$A</span> 1443 <span class="c">#</span> <a name="_Generate166KeySetKey26-"></a>1444 <span class="k">sub </span><span class="m">_Generate166KeySetKey26</span> <span class="s">{</span> 1445 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1446 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1447 1448 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1449 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 1450 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'$='</span><span class="cm">,</span> <span class="q">'$'</span><span class="cm">,</span> <span class="q">'$'</span><span class="s">)</span><span class="sc">;</span> 1451 1452 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1453 <span class="s">}</span> 1454 1455 <span class="c"># Generate key 27 value as 1/0 indicating its presence/absence or count of its</span> 1456 <span class="c"># presence in a molecule.</span> 1457 <span class="c">#</span> 1458 <span class="c"># Key 27 description: I</span> 1459 <span class="c">#</span> <a name="_Generate166KeySetKey27-"></a>1460 <span class="k">sub </span><span class="m">_Generate166KeySetKey27</span> <span class="s">{</span> 1461 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1462 1463 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'I'</span><span class="s">)</span><span class="sc">;</span> 1464 <span class="s">}</span> 1465 1466 <span class="c"># Generate key 28 value as 1/0 indicating its presence/absence or count of its</span> 1467 <span class="c"># presence in a molecule.</span> 1468 <span class="c">#</span> 1469 <span class="c"># Key 28 description: QCH2Q</span> 1470 <span class="c">#</span> <a name="_Generate166KeySetKey28-"></a>1471 <span class="k">sub </span><span class="m">_Generate166KeySetKey28</span> <span class="s">{</span> 1472 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1473 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1474 1475 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1476 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 1477 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1478 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 1479 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 1480 1481 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1482 <span class="s">}</span> 1483 1484 <span class="c"># Generate key 29 value as 1/0 indicating its presence/absence or count of its</span> 1485 <span class="c"># presence in a molecule.</span> 1486 <span class="c">#</span> 1487 <span class="c"># Key 29 description: P</span> 1488 <span class="c">#</span> <a name="_Generate166KeySetKey29-"></a>1489 <span class="k">sub </span><span class="m">_Generate166KeySetKey29</span> <span class="s">{</span> 1490 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1491 1492 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'P'</span><span class="s">)</span><span class="sc">;</span> 1493 <span class="s">}</span> 1494 1495 <span class="c"># Generate key 30 value as 1/0 indicating its presence/absence or count of its</span> 1496 <span class="c"># presence in a molecule.</span> 1497 <span class="c">#</span> 1498 <span class="c"># Key 30 description: CQ(C)(C)A</span> 1499 <span class="c">#</span> <a name="_Generate166KeySetKey30-"></a>1500 <span class="k">sub </span><span class="m">_Generate166KeySetKey30</span> <span class="s">{</span> 1501 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1502 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1503 1504 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 1505 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 1506 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1507 1508 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1509 <span class="s">}</span> 1510 1511 <span class="c"># Generate key 31 value as 1/0 indicating its presence/absence or count of its</span> 1512 <span class="c"># presence in a molecule.</span> 1513 <span class="c">#</span> 1514 <span class="c"># Key 31 description: QX</span> 1515 <span class="c">#</span> <a name="_Generate166KeySetKey31-"></a>1516 <span class="k">sub </span><span class="m">_Generate166KeySetKey31</span> <span class="s">{</span> 1517 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1518 1519 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'X'</span><span class="s">)</span><span class="sc">;</span> 1520 <span class="s">}</span> 1521 1522 <span class="c"># Generate key 32 value as 1/0 indicating its presence/absence or count of its</span> 1523 <span class="c"># presence in a molecule.</span> 1524 <span class="c">#</span> 1525 <span class="c"># Key 32 description: CSN</span> 1526 <span class="c">#</span> <a name="_Generate166KeySetKey32-"></a>1527 <span class="k">sub </span><span class="m">_Generate166KeySetKey32</span> <span class="s">{</span> 1528 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1529 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1530 1531 <span class="i">$CentralAtomSymbol</span> = <span class="q">'S'</span><span class="sc">;</span> 1532 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 1533 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1534 1535 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1536 <span class="s">}</span> 1537 1538 <span class="c"># Generate key 33 value as 1/0 indicating its presence/absence or count of its</span> 1539 <span class="c"># presence in a molecule.</span> 1540 <span class="c">#</span> 1541 <span class="c"># Key 33 description: NS</span> 1542 <span class="c">#</span> <a name="_Generate166KeySetKey33-"></a>1543 <span class="k">sub </span><span class="m">_Generate166KeySetKey33</span> <span class="s">{</span> 1544 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1545 1546 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'S'</span><span class="s">)</span><span class="sc">;</span> 1547 <span class="s">}</span> 1548 1549 <span class="c"># Generate key 34 value as 1/0 indicating its presence/absence or count of its</span> 1550 <span class="c"># presence in a molecule.</span> 1551 <span class="c">#</span> 1552 <span class="c"># Key 34 description: CH2=A</span> 1553 <span class="c">#</span> <a name="_Generate166KeySetKey34-"></a>1554 <span class="k">sub </span><span class="m">_Generate166KeySetKey34</span> <span class="s">{</span> 1555 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1556 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1557 1558 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1559 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 1560 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'='</span><span class="s">)</span><span class="sc">;</span> 1561 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 1562 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 1563 1564 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1565 <span class="s">}</span> 1566 1567 <span class="c"># Generate key 35 value as 1/0 indicating its presence/absence or count of its</span> 1568 <span class="c"># presence in a molecule.</span> 1569 <span class="c">#</span> 1570 <span class="c"># Key 35 description: GROUP IA (ALKALI METAL)</span> 1571 <span class="c">#</span> <a name="_Generate166KeySetKey35-"></a>1572 <span class="k">sub </span><span class="m">_Generate166KeySetKey35</span> <span class="s">{</span> 1573 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1574 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$AtomicNumber</span><span class="cm">,</span> <span class="i">$GroupNumber</span><span class="s">)</span><span class="sc">;</span> 1575 1576 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 1577 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 1578 <span class="i">$AtomicNumber</span> = <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1579 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span> <span class="s">{</span> 1580 <span class="i">$GroupNumber</span> = <span class="i">PeriodicTable::GetElementGroupNumber</span><span class="s">(</span><span class="i">$AtomicNumber</span><span class="s">)</span><span class="sc">;</span> 1581 <span class="k">if</span> <span class="s">(</span><span class="i">$GroupNumber</span> =~ <span class="q">/^1$/</span><span class="s">)</span> <span class="s">{</span> 1582 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 1583 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 1584 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 1585 <span class="s">}</span> 1586 <span class="i">$KeyValue</span>++<span class="sc">;</span> 1587 <span class="s">}</span> 1588 <span class="s">}</span> 1589 <span class="s">}</span> 1590 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1591 <span class="s">}</span> 1592 1593 <span class="c"># Generate key 36 value as 1/0 indicating its presence/absence or count of its</span> 1594 <span class="c"># presence in a molecule.</span> 1595 <span class="c">#</span> 1596 <span class="c"># Key 36 description: S HETEROCYCLE</span> 1597 <span class="c">#</span> <a name="_Generate166KeySetKey36-"></a>1598 <span class="k">sub </span><span class="m">_Generate166KeySetKey36</span> <span class="s">{</span> 1599 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1600 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 1601 1602 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span><span class="sc">;</span> 1603 <span class="s">}</span> 1604 1605 <span class="c"># Generate key 37 value as 1/0 indicating its presence/absence or count of its</span> 1606 <span class="c"># presence in a molecule.</span> 1607 <span class="c">#</span> 1608 <span class="c"># Key 37 description: NC(O)N</span> 1609 <span class="c">#</span> <a name="_Generate166KeySetKey37-"></a>1610 <span class="k">sub </span><span class="m">_Generate166KeySetKey37</span> <span class="s">{</span> 1611 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1612 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1613 1614 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1615 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 1616 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1617 1618 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1619 <span class="s">}</span> 1620 1621 <span class="c"># Generate key 38 value as 1/0 indicating its presence/absence or count of its</span> 1622 <span class="c"># presence in a molecule.</span> 1623 <span class="c">#</span> 1624 <span class="c"># Key 38 description: NC(C)N</span> 1625 <span class="c">#</span> <a name="_Generate166KeySetKey38-"></a>1626 <span class="k">sub </span><span class="m">_Generate166KeySetKey38</span> <span class="s">{</span> 1627 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1628 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1629 1630 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1631 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 1632 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1633 1634 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1635 <span class="s">}</span> 1636 1637 <span class="c"># Generate key 39 value as 1/0 indicating its presence/absence or count of its</span> 1638 <span class="c"># presence in a molecule.</span> 1639 <span class="c">#</span> 1640 <span class="c"># Key 39 description: OS(O)O</span> 1641 <span class="c">#</span> <a name="_Generate166KeySetKey39-"></a>1642 <span class="k">sub </span><span class="m">_Generate166KeySetKey39</span> <span class="s">{</span> 1643 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1644 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1645 1646 <span class="i">$CentralAtomSymbol</span> = <span class="q">'S'</span><span class="sc">;</span> 1647 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 1648 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1649 1650 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1651 <span class="s">}</span> 1652 1653 <span class="c"># Generate key 40 value as 1/0 indicating its presence/absence or count of its</span> 1654 <span class="c"># presence in a molecule.</span> 1655 <span class="c">#</span> 1656 <span class="c"># Key 40 description: S-O</span> 1657 <span class="c">#</span> <a name="_Generate166KeySetKey40-"></a>1658 <span class="k">sub </span><span class="m">_Generate166KeySetKey40</span> <span class="s">{</span> 1659 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1660 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">1</span><span class="sc">;</span> 1661 1662 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 1663 <span class="s">}</span> 1664 1665 <span class="c"># Generate key 41 value as 1/0 indicating its presence/absence or count of its</span> 1666 <span class="c"># presence in a molecule.</span> 1667 <span class="c">#</span> 1668 <span class="c"># Key 41 description: CTN</span> 1669 <span class="c">#</span> <a name="_Generate166KeySetKey41-"></a>1670 <span class="k">sub </span><span class="m">_Generate166KeySetKey41</span> <span class="s">{</span> 1671 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1672 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">3</span><span class="sc">;</span> 1673 1674 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 1675 <span class="s">}</span> 1676 1677 <span class="c"># Generate key 42 value as 1/0 indicating its presence/absence or count of its</span> 1678 <span class="c"># presence in a molecule.</span> 1679 <span class="c">#</span> 1680 <span class="c"># Key 42 description: F</span> 1681 <span class="c">#</span> <a name="_Generate166KeySetKey42-"></a>1682 <span class="k">sub </span><span class="m">_Generate166KeySetKey42</span> <span class="s">{</span> 1683 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1684 1685 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'F'</span><span class="s">)</span><span class="sc">;</span> 1686 <span class="s">}</span> 1687 1688 <span class="c"># Generate key 43 value as 1/0 indicating its presence/absence or count of its</span> 1689 <span class="c"># presence in a molecule.</span> 1690 <span class="c">#</span> 1691 <span class="c"># Key 43 description: QHAQH</span> 1692 <span class="c">#</span> <a name="_Generate166KeySetKey43-"></a>1693 <span class="k">sub </span><span class="m">_Generate166KeySetKey43</span> <span class="s">{</span> 1694 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1695 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1696 1697 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 1698 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="k">undef</span><span class="sc">;</span> 1699 1700 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 1701 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1702 <span class="i">@NbrAtomMinHydrogenCount</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 1703 1704 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 1705 1706 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1707 <span class="s">}</span> 1708 1709 <span class="c"># Generate key 44 value as 1/0 indicating its presence/absence or count of its</span> 1710 <span class="c"># presence in a molecule.</span> 1711 <span class="c">#</span> 1712 <span class="c"># Key 44 description: OTHER</span> 1713 <span class="c">#</span> <a name="_Generate166KeySetKey44-"></a>1714 <span class="k">sub </span><span class="m">_Generate166KeySetKey44</span> <span class="s">{</span> 1715 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1716 1717 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Z'</span><span class="s">)</span><span class="sc">;</span> 1718 <span class="s">}</span> 1719 1720 <span class="c"># Generate key 45 value as 1/0 indicating its presence/absence or count of its</span> 1721 <span class="c"># presence in a molecule.</span> 1722 <span class="c">#</span> 1723 <span class="c"># Key 45 description: C=CN</span> 1724 <span class="c">#</span> <a name="_Generate166KeySetKey45-"></a>1725 <span class="k">sub </span><span class="m">_Generate166KeySetKey45</span> <span class="s">{</span> 1726 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1727 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1728 1729 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1730 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 1731 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'='</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1732 1733 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1734 <span class="s">}</span> 1735 1736 <span class="c"># Generate key 46 value as 1/0 indicating its presence/absence or count of its</span> 1737 <span class="c"># presence in a molecule.</span> 1738 <span class="c">#</span> 1739 <span class="c"># Key 46 description: BR</span> 1740 <span class="c">#</span> <a name="_Generate166KeySetKey46-"></a>1741 <span class="k">sub </span><span class="m">_Generate166KeySetKey46</span> <span class="s">{</span> 1742 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1743 1744 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="s">)</span><span class="sc">;</span> 1745 <span class="s">}</span> 1746 1747 <span class="c"># Generate key 47 value as 1/0 indicating its presence/absence or count of its</span> 1748 <span class="c"># presence in a molecule.</span> 1749 <span class="c">#</span> 1750 <span class="c"># Key 47 description: SAN</span> 1751 <span class="c">#</span> <a name="_Generate166KeySetKey47-"></a>1752 <span class="k">sub </span><span class="m">_Generate166KeySetKey47</span> <span class="s">{</span> 1753 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1754 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1755 1756 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 1757 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 1758 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1759 1760 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1761 <span class="s">}</span> 1762 1763 <span class="c"># Generate key 48 value as 1/0 indicating its presence/absence or count of its</span> 1764 <span class="c"># presence in a molecule.</span> 1765 <span class="c">#</span> 1766 <span class="c"># Key 48 description: OQ(O)O</span> 1767 <span class="c">#</span> <a name="_Generate166KeySetKey48-"></a>1768 <span class="k">sub </span><span class="m">_Generate166KeySetKey48</span> <span class="s">{</span> 1769 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1770 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1771 1772 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 1773 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 1774 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1775 1776 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1777 <span class="s">}</span> 1778 1779 <span class="c"># Generate key 49 value as 1/0 indicating its presence/absence or count of its</span> 1780 <span class="c"># presence in a molecule.</span> 1781 <span class="c">#</span> 1782 <span class="c"># Key 49 description: CHARGE</span> 1783 <span class="c">#</span> <a name="_Generate166KeySetKey49-"></a>1784 <span class="k">sub </span><span class="m">_Generate166KeySetKey49</span> <span class="s">{</span> 1785 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1786 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 1787 1788 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 1789 <span class="i">$KeyValue</span> = <span class="i">$Molecule</span><span class="i">->GetFormalCharge</span><span class="s">(</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 1790 1791 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 1792 <span class="s">}</span> 1793 1794 <span class="c"># Generate key 50 value as 1/0 indicating its presence/absence or count of its</span> 1795 <span class="c"># presence in a molecule.</span> 1796 <span class="c">#</span> 1797 <span class="c"># Key 50 description: C=C(C)C</span> 1798 <span class="c">#</span> <a name="_Generate166KeySetKey50-"></a>1799 <span class="k">sub </span><span class="m">_Generate166KeySetKey50</span> <span class="s">{</span> 1800 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1801 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1802 1803 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 1804 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 1805 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'='</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1806 1807 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1808 <span class="s">}</span> 1809 1810 <span class="c"># Generate key 51 value as 1/0 indicating its presence/absence or count of its</span> 1811 <span class="c"># presence in a molecule.</span> 1812 <span class="c">#</span> 1813 <span class="c"># Key 51 description: CSO</span> 1814 <span class="c">#</span> <a name="_Generate166KeySetKey51-"></a>1815 <span class="k">sub </span><span class="m">_Generate166KeySetKey51</span> <span class="s">{</span> 1816 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1817 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1818 1819 <span class="i">$CentralAtomSymbol</span> = <span class="q">'S'</span><span class="sc">;</span> 1820 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 1821 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1822 1823 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1824 <span class="s">}</span> 1825 1826 <span class="c"># Generate key 52 value as 1/0 indicating its presence/absence or count of its</span> 1827 <span class="c"># presence in a molecule.</span> 1828 <span class="c">#</span> 1829 <span class="c"># Key 52 description: NN</span> 1830 <span class="c">#</span> <a name="_Generate166KeySetKey52-"></a>1831 <span class="k">sub </span><span class="m">_Generate166KeySetKey52</span> <span class="s">{</span> 1832 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1833 1834 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 1835 <span class="s">}</span> 1836 1837 <span class="c"># Generate key 53 value as 1/0 indicating its presence/absence or count of its</span> 1838 <span class="c"># presence in a molecule.</span> 1839 <span class="c">#</span> 1840 <span class="c"># Key 53 description: QHAAAQH</span> 1841 <span class="c">#</span> <a name="_Generate166KeySetKey53-"></a>1842 <span class="k">sub </span><span class="m">_Generate166KeySetKey53</span> <span class="s">{</span> 1843 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1844 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1845 1846 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 1847 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1848 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 1849 1850 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1851 <span class="s">}</span> 1852 1853 <span class="c"># Generate key 54 value as 1/0 indicating its presence/absence or count of its</span> 1854 <span class="c"># presence in a molecule.</span> 1855 <span class="c">#</span> 1856 <span class="c"># Key 54 description: QHAAQH</span> 1857 <span class="c">#</span> <a name="_Generate166KeySetKey54-"></a>1858 <span class="k">sub </span><span class="m">_Generate166KeySetKey54</span> <span class="s">{</span> 1859 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1860 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1861 1862 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 1863 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1864 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 1865 1866 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 1867 <span class="s">}</span> 1868 1869 <span class="c"># Generate key 55 value as 1/0 indicating its presence/absence or count of its</span> 1870 <span class="c"># presence in a molecule.</span> 1871 <span class="c">#</span> 1872 <span class="c"># Key 55 description: OSO</span> 1873 <span class="c">#</span> <a name="_Generate166KeySetKey55-"></a>1874 <span class="k">sub </span><span class="m">_Generate166KeySetKey55</span> <span class="s">{</span> 1875 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1876 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1877 1878 <span class="i">$CentralAtomSymbol</span> = <span class="q">'S'</span><span class="sc">;</span> 1879 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 1880 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1881 1882 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1883 <span class="s">}</span> 1884 1885 <span class="c"># Generate key 56 value as 1/0 indicating its presence/absence or count of its</span> 1886 <span class="c"># presence in a molecule.</span> 1887 <span class="c">#</span> 1888 <span class="c"># Key 56 description: ON(O)C</span> 1889 <span class="c">#</span> <a name="_Generate166KeySetKey56-"></a>1890 <span class="k">sub </span><span class="m">_Generate166KeySetKey56</span> <span class="s">{</span> 1891 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1892 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1893 1894 <span class="i">$CentralAtomSymbol</span> = <span class="q">'N'</span><span class="sc">;</span> 1895 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 1896 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1897 1898 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1899 <span class="s">}</span> 1900 1901 <span class="c"># Generate key 57 value as 1/0 indicating its presence/absence or count of its</span> 1902 <span class="c"># presence in a molecule.</span> 1903 <span class="c">#</span> 1904 <span class="c"># Key 57 description: O HETEROCYCLE</span> 1905 <span class="c">#</span> <a name="_Generate166KeySetKey57-"></a>1906 <span class="k">sub </span><span class="m">_Generate166KeySetKey57</span> <span class="s">{</span> 1907 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1908 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 1909 1910 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span><span class="sc">;</span> 1911 <span class="s">}</span> 1912 1913 <span class="c"># Generate key 58 value as 1/0 indicating its presence/absence or count of its</span> 1914 <span class="c"># presence in a molecule.</span> 1915 <span class="c">#</span> 1916 <span class="c"># Key 58 description: QSQ</span> 1917 <span class="c">#</span> <a name="_Generate166KeySetKey58-"></a>1918 <span class="k">sub </span><span class="m">_Generate166KeySetKey58</span> <span class="s">{</span> 1919 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1920 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1921 1922 <span class="i">$CentralAtomSymbol</span> = <span class="q">'S'</span><span class="sc">;</span> 1923 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 1924 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1925 1926 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1927 <span class="s">}</span> 1928 1929 <span class="c"># Generate key 59 value as 1/0 indicating its presence/absence or count of its</span> 1930 <span class="c"># presence in a molecule.</span> 1931 <span class="c">#</span> 1932 <span class="c"># Key 59 description: Snot%A%A</span> 1933 <span class="c">#</span> <a name="_Generate166KeySetKey59-"></a>1934 <span class="k">sub </span><span class="m">_Generate166KeySetKey59</span> <span class="s">{</span> 1935 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1936 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1937 1938 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 1939 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 1940 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'not%'</span><span class="cm">,</span> <span class="q">'%'</span><span class="s">)</span><span class="sc">;</span> 1941 1942 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1943 <span class="s">}</span> 1944 1945 <span class="c"># Generate key 60 value as 1/0 indicating its presence/absence or count of its</span> 1946 <span class="c"># presence in a molecule.</span> 1947 <span class="c">#</span> 1948 <span class="c"># Key 60 description: S=O</span> 1949 <span class="c">#</span> <a name="_Generate166KeySetKey60-"></a>1950 <span class="k">sub </span><span class="m">_Generate166KeySetKey60</span> <span class="s">{</span> 1951 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1952 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 1953 1954 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 1955 <span class="s">}</span> 1956 1957 <span class="c"># Generate key 61 value as 1/0 indicating its presence/absence or count of its</span> 1958 <span class="c"># presence in a molecule.</span> 1959 <span class="c">#</span> 1960 <span class="c"># Key 61 description: AS(A)A</span> 1961 <span class="c">#</span> <a name="_Generate166KeySetKey61-"></a>1962 <span class="k">sub </span><span class="m">_Generate166KeySetKey61</span> <span class="s">{</span> 1963 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1964 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1965 1966 <span class="i">$CentralAtomSymbol</span> = <span class="q">'S'</span><span class="sc">;</span> 1967 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 1968 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 1969 1970 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1971 <span class="s">}</span> 1972 1973 <span class="c"># Generate key 62 value as 1/0 indicating its presence/absence or count of its</span> 1974 <span class="c"># presence in a molecule.</span> 1975 <span class="c">#</span> 1976 <span class="c"># Key 62 description: A$A!A$A</span> 1977 <span class="c">#</span> <a name="_Generate166KeySetKey62-"></a>1978 <span class="k">sub </span><span class="m">_Generate166KeySetKey62</span> <span class="s">{</span> 1979 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1980 <span class="k">my</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1981 1982 <span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="s">)</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 1983 <span class="i">$BondSymbol</span> = <span class="q">'!'</span><span class="sc">;</span> 1984 1985 <span class="i">@NbrAtomsSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 1986 <span class="i">@NbrAtomsBondSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'$'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'$'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 1987 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondNeighborhoodKeys</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> \<span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 1988 <span class="s">}</span> 1989 1990 <span class="c"># Generate key 63 value as 1/0 indicating its presence/absence or count of its</span> 1991 <span class="c"># presence in a molecule.</span> 1992 <span class="c">#</span> 1993 <span class="c"># Key 63 description: N=O</span> 1994 <span class="c">#</span> <a name="_Generate166KeySetKey63-"></a>1995 <span class="k">sub </span><span class="m">_Generate166KeySetKey63</span> <span class="s">{</span> 1996 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 1997 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 1998 1999 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 2000 <span class="s">}</span> 2001 2002 <span class="c"># Generate key 64 value as 1/0 indicating its presence/absence or count of its</span> 2003 <span class="c"># presence in a molecule.</span> 2004 <span class="c">#</span> 2005 <span class="c"># Key 64 description: A$A!S</span> 2006 <span class="c">#</span> <a name="_Generate166KeySetKey64-"></a>2007 <span class="k">sub </span><span class="m">_Generate166KeySetKey64</span> <span class="s">{</span> 2008 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2009 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2010 2011 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2012 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'S'</span><span class="s">)</span><span class="sc">;</span> 2013 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'$'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 2014 2015 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2016 <span class="s">}</span> 2017 2018 <span class="c"># Generate key 65 value as 1/0 indicating its presence/absence or count of its</span> 2019 <span class="c"># presence in a molecule.</span> 2020 <span class="c">#</span> 2021 <span class="c"># Key 65 description: C%N</span> 2022 <span class="c">#</span> <a name="_Generate166KeySetKey65-"></a>2023 <span class="k">sub </span><span class="m">_Generate166KeySetKey65</span> <span class="s">{</span> 2024 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2025 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'%'</span><span class="sc">;</span> 2026 2027 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 2028 <span class="s">}</span> 2029 2030 <span class="c"># Generate key 66 value as 1/0 indicating its presence/absence or count of its</span> 2031 <span class="c"># presence in a molecule.</span> 2032 <span class="c">#</span> 2033 <span class="c"># Key 66 description: CC(C)(C)A</span> 2034 <span class="c">#</span> <a name="_Generate166KeySetKey66-"></a>2035 <span class="k">sub </span><span class="m">_Generate166KeySetKey66</span> <span class="s">{</span> 2036 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2037 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2038 2039 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2040 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2041 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2042 2043 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2044 <span class="s">}</span> 2045 2046 <span class="c"># Generate key 67 value as 1/0 indicating its presence/absence or count of its</span> 2047 <span class="c"># presence in a molecule.</span> 2048 <span class="c">#</span> 2049 <span class="c"># Key 67 description: QS</span> 2050 <span class="c">#</span> <a name="_Generate166KeySetKey67-"></a>2051 <span class="k">sub </span><span class="m">_Generate166KeySetKey67</span> <span class="s">{</span> 2052 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2053 2054 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'S'</span><span class="s">)</span><span class="sc">;</span> 2055 <span class="s">}</span> 2056 2057 <span class="c"># Generate key 68 value as 1/0 indicating its presence/absence or count of its</span> 2058 <span class="c"># presence in a molecule.</span> 2059 <span class="c">#</span> 2060 <span class="c"># Key 68 description: QHQH (&...)</span> 2061 <span class="c">#</span> <a name="_Generate166KeySetKey68-"></a>2062 <span class="k">sub </span><span class="m">_Generate166KeySetKey68</span> <span class="s">{</span> 2063 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2064 <span class="k">my</span><span class="s">(</span><span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2065 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="k">undef</span><span class="sc">;</span> 2066 <span class="k">my</span><span class="s">(</span><span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 2067 2068 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2069 <span class="s">}</span> 2070 2071 <span class="c"># Generate key 69 value as 1/0 indicating its presence/absence or count of its</span> 2072 <span class="c"># presence in a molecule.</span> 2073 <span class="c">#</span> 2074 <span class="c"># Key 69 description: QQH</span> 2075 <span class="c">#</span> <a name="_Generate166KeySetKey69-"></a>2076 <span class="k">sub </span><span class="m">_Generate166KeySetKey69</span> <span class="s">{</span> 2077 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2078 <span class="k">my</span><span class="s">(</span><span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2079 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="k">undef</span><span class="sc">;</span> 2080 <span class="k">my</span><span class="s">(</span><span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 2081 2082 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2083 <span class="s">}</span> 2084 2085 <span class="c"># Generate key 70 value as 1/0 indicating its presence/absence or count of its</span> 2086 <span class="c"># presence in a molecule.</span> 2087 <span class="c">#</span> 2088 <span class="c"># Key 70 description: QNQ</span> 2089 <span class="c">#</span> <a name="_Generate166KeySetKey70-"></a>2090 <span class="k">sub </span><span class="m">_Generate166KeySetKey70</span> <span class="s">{</span> 2091 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2092 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2093 2094 <span class="i">$CentralAtomSymbol</span> = <span class="q">'N'</span><span class="sc">;</span> 2095 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 2096 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2097 2098 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2099 <span class="s">}</span> 2100 2101 <span class="c"># Generate key 71 value as 1/0 indicating its presence/absence or count of its</span> 2102 <span class="c"># presence in a molecule.</span> 2103 <span class="c">#</span> 2104 <span class="c"># Key 71 description: NO</span> 2105 <span class="c">#</span> <a name="_Generate166KeySetKey71-"></a>2106 <span class="k">sub </span><span class="m">_Generate166KeySetKey71</span> <span class="s">{</span> 2107 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2108 2109 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2110 <span class="s">}</span> 2111 2112 <span class="c"># Generate key 72 value as 1/0 indicating its presence/absence or count of its</span> 2113 <span class="c"># presence in a molecule.</span> 2114 <span class="c">#</span> 2115 <span class="c"># Key 72 description: OAAO</span> 2116 <span class="c">#</span> <a name="_Generate166KeySetKey72-"></a>2117 <span class="k">sub </span><span class="m">_Generate166KeySetKey72</span> <span class="s">{</span> 2118 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2119 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2120 2121 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2122 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2123 2124 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2125 <span class="s">}</span> 2126 2127 <span class="c"># Generate key 73 value as 1/0 indicating its presence/absence or count of its</span> 2128 <span class="c"># presence in a molecule.</span> 2129 <span class="c">#</span> 2130 <span class="c"># Key 73 description: S=A</span> 2131 <span class="c">#</span> <a name="_Generate166KeySetKey73-"></a>2132 <span class="k">sub </span><span class="m">_Generate166KeySetKey73</span> <span class="s">{</span> 2133 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2134 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 2135 2136 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 2137 <span class="s">}</span> 2138 2139 <span class="c"># Generate key 74 value as 1/0 indicating its presence/absence or count of its</span> 2140 <span class="c"># presence in a molecule.</span> 2141 <span class="c">#</span> 2142 <span class="c"># Key 74 description: CH3ACH3</span> 2143 <span class="c">#</span> <a name="_Generate166KeySetKey74-"></a>2144 <span class="k">sub </span><span class="m">_Generate166KeySetKey74</span> <span class="s">{</span> 2145 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2146 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2147 2148 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2149 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="k">undef</span><span class="sc">;</span> 2150 2151 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 2152 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2153 <span class="i">@NbrAtomMinHydrogenCount</span> = <span class="s">(</span><span class="n">3</span><span class="cm">,</span> <span class="n">3</span><span class="s">)</span><span class="sc">;</span> 2154 2155 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 2156 2157 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2158 <span class="s">}</span> 2159 2160 <span class="c"># Generate key 75 value as 1/0 indicating its presence/absence or count of its</span> 2161 <span class="c"># presence in a molecule.</span> 2162 <span class="c">#</span> 2163 <span class="c"># Key 75 description: A!N$A</span> 2164 <span class="c">#</span> <a name="_Generate166KeySetKey75-"></a>2165 <span class="k">sub </span><span class="m">_Generate166KeySetKey75</span> <span class="s">{</span> 2166 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2167 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2168 2169 <span class="i">$CentralAtomSymbol</span> = <span class="q">'N'</span><span class="sc">;</span> 2170 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2171 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'!'</span><span class="cm">,</span> <span class="q">'$'</span><span class="s">)</span><span class="sc">;</span> 2172 2173 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2174 <span class="s">}</span> 2175 2176 <span class="c"># Generate key 76 value as 1/0 indicating its presence/absence or count of its</span> 2177 <span class="c"># presence in a molecule.</span> 2178 <span class="c">#</span> 2179 <span class="c"># Key 76 description: C=C(A)A</span> 2180 <span class="c">#</span> <a name="_Generate166KeySetKey76-"></a>2181 <span class="k">sub </span><span class="m">_Generate166KeySetKey76</span> <span class="s">{</span> 2182 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2183 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2184 2185 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2186 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2187 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'='</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2188 2189 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2190 <span class="s">}</span> 2191 2192 <span class="c"># Generate key 77 value as 1/0 indicating its presence/absence or count of its</span> 2193 <span class="c"># presence in a molecule.</span> 2194 <span class="c">#</span> 2195 <span class="c"># Key 77 description: NAN</span> 2196 <span class="c">#</span> <a name="_Generate166KeySetKey77-"></a>2197 <span class="k">sub </span><span class="m">_Generate166KeySetKey77</span> <span class="s">{</span> 2198 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2199 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2200 2201 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2202 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 2203 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2204 2205 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2206 <span class="s">}</span> 2207 2208 <span class="c"># Generate key 78 value as 1/0 indicating its presence/absence or count of its</span> 2209 <span class="c"># presence in a molecule.</span> 2210 <span class="c">#</span> 2211 <span class="c"># Key 78 description: C=N</span> 2212 <span class="c">#</span> <a name="_Generate166KeySetKey78-"></a>2213 <span class="k">sub </span><span class="m">_Generate166KeySetKey78</span> <span class="s">{</span> 2214 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2215 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 2216 2217 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 2218 <span class="s">}</span> 2219 2220 <span class="c"># Generate key 79 value as 1/0 indicating its presence/absence or count of its</span> 2221 <span class="c"># presence in a molecule.</span> 2222 <span class="c">#</span> 2223 <span class="c"># Key 79 description: NAAN</span> 2224 <span class="c">#</span> <a name="_Generate166KeySetKey79-"></a>2225 <span class="k">sub </span><span class="m">_Generate166KeySetKey79</span> <span class="s">{</span> 2226 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2227 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2228 2229 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 2230 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2231 2232 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2233 <span class="s">}</span> 2234 2235 <span class="c"># Generate key 80 value as 1/0 indicating its presence/absence or count of its</span> 2236 <span class="c"># presence in a molecule.</span> 2237 <span class="c">#</span> 2238 <span class="c"># Key 80 description: NAAAN</span> 2239 <span class="c">#</span> <a name="_Generate166KeySetKey80-"></a>2240 <span class="k">sub </span><span class="m">_Generate166KeySetKey80</span> <span class="s">{</span> 2241 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2242 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2243 2244 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 2245 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2246 2247 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2248 <span class="s">}</span> 2249 2250 <span class="c"># Generate key 81 value as 1/0 indicating its presence/absence or count of its</span> 2251 <span class="c"># presence in a molecule.</span> 2252 <span class="c">#</span> 2253 <span class="c"># Key 81 description: SA(A)A</span> 2254 <span class="c">#</span> <a name="_Generate166KeySetKey81-"></a>2255 <span class="k">sub </span><span class="m">_Generate166KeySetKey81</span> <span class="s">{</span> 2256 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2257 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2258 2259 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2260 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2261 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2262 2263 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2264 <span class="s">}</span> 2265 2266 <span class="c"># Generate key 82 value as 1/0 indicating its presence/absence or count of its</span> 2267 <span class="c"># presence in a molecule.</span> 2268 <span class="c">#</span> 2269 <span class="c"># Key 82 description: ACH2QH</span> 2270 <span class="c">#</span> <a name="_Generate166KeySetKey82-"></a>2271 <span class="k">sub </span><span class="m">_Generate166KeySetKey82</span> <span class="s">{</span> 2272 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2273 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2274 2275 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2276 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 2277 2278 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 2279 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2280 <span class="i">@NbrAtomMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 2281 2282 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 2283 2284 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2285 <span class="s">}</span> 2286 2287 <span class="c"># Generate key 83 value as 1/0 indicating its presence/absence or count of its</span> 2288 <span class="c"># presence in a molecule.</span> 2289 <span class="c">#</span> 2290 <span class="c"># Key 83 description: QAAAA@1</span> 2291 <span class="c">#</span> <a name="_Generate166KeySetKey83-"></a>2292 <span class="k">sub </span><span class="m">_Generate166KeySetKey83</span> <span class="s">{</span> 2293 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2294 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 2295 2296 <span class="i">$RingSize</span> = <span class="n">5</span><span class="sc">;</span> 2297 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 2298 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 2299 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_IsHeteroAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> && <span class="i">$Atom</span><span class="i">->IsInRingOfSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 2300 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 2301 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 2302 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 2303 <span class="s">}</span> 2304 <span class="i">$KeyValue</span>++<span class="sc">;</span> 2305 <span class="s">}</span> 2306 <span class="s">}</span> 2307 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 2308 <span class="s">}</span> 2309 2310 <span class="c"># Generate key 84 value as 1/0 indicating its presence/absence or count of its</span> 2311 <span class="c"># presence in a molecule.</span> 2312 <span class="c">#</span> 2313 <span class="c"># Key 84 description: NH2</span> 2314 <span class="c">#</span> <a name="_Generate166KeySetKey84-"></a>2315 <span class="k">sub </span><span class="m">_Generate166KeySetKey84</span> <span class="s">{</span> 2316 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2317 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span> 2318 2319 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2320 <span class="s">}</span> 2321 2322 <span class="c"># Generate key 85 value as 1/0 indicating its presence/absence or count of its</span> 2323 <span class="c"># presence in a molecule.</span> 2324 <span class="c">#</span> 2325 <span class="c"># Key 85 description: CN(C)C</span> 2326 <span class="c">#</span> <a name="_Generate166KeySetKey85-"></a>2327 <span class="k">sub </span><span class="m">_Generate166KeySetKey85</span> <span class="s">{</span> 2328 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2329 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2330 2331 <span class="i">$CentralAtomSymbol</span> = <span class="q">'N'</span><span class="sc">;</span> 2332 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 2333 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2334 2335 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2336 <span class="s">}</span> 2337 2338 <span class="c"># Generate key 86 value as 1/0 indicating its presence/absence or count of its</span> 2339 <span class="c"># presence in a molecule.</span> 2340 <span class="c">#</span> 2341 <span class="c"># Key 86 description: CH2QCH2</span> 2342 <span class="c">#</span> <a name="_Generate166KeySetKey86-"></a>2343 <span class="k">sub </span><span class="m">_Generate166KeySetKey86</span> <span class="s">{</span> 2344 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2345 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2346 2347 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 2348 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="k">undef</span><span class="sc">;</span> 2349 2350 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 2351 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2352 <span class="i">@NbrAtomMinHydrogenCount</span> = <span class="s">(</span><span class="n">2</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span> 2353 2354 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 2355 2356 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2357 <span class="s">}</span> 2358 2359 <span class="c"># Generate key 87 value as 1/0 indicating its presence/absence or count of its</span> 2360 <span class="c"># presence in a molecule.</span> 2361 <span class="c">#</span> 2362 <span class="c"># Key 87 description: X!A$A</span> 2363 <span class="c">#</span> <a name="_Generate166KeySetKey87-"></a>2364 <span class="k">sub </span><span class="m">_Generate166KeySetKey87</span> <span class="s">{</span> 2365 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2366 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2367 2368 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2369 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'X'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2370 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'!'</span><span class="cm">,</span> <span class="q">'$'</span><span class="s">)</span><span class="sc">;</span> 2371 2372 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2373 <span class="s">}</span> 2374 2375 <span class="c"># Generate key 88 value as 1/0 indicating its presence/absence or count of its</span> 2376 <span class="c"># presence in a molecule.</span> 2377 <span class="c">#</span> 2378 <span class="c"># Key 88 description: S</span> 2379 <span class="c">#</span> <a name="_Generate166KeySetKey88-"></a>2380 <span class="k">sub </span><span class="m">_Generate166KeySetKey88</span> <span class="s">{</span> 2381 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2382 2383 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'S'</span><span class="s">)</span><span class="sc">;</span> 2384 <span class="s">}</span> 2385 2386 <span class="c"># Generate key 89 value as 1/0 indicating its presence/absence or count of its</span> 2387 <span class="c"># presence in a molecule.</span> 2388 <span class="c">#</span> 2389 <span class="c"># Key 89 description: OAAAO</span> 2390 <span class="c">#</span> <a name="_Generate166KeySetKey89-"></a>2391 <span class="k">sub </span><span class="m">_Generate166KeySetKey89</span> <span class="s">{</span> 2392 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2393 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2394 2395 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2396 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2397 2398 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2399 <span class="s">}</span> 2400 2401 <span class="c"># Generate key 90 value as 1/0 indicating its presence/absence or count of its</span> 2402 <span class="c"># presence in a molecule.</span> 2403 <span class="c">#</span> 2404 <span class="c"># Key 90 description: QHAACH2A</span> 2405 <span class="c">#</span> <a name="_Generate166KeySetKey90-"></a>2406 <span class="k">sub </span><span class="m">_Generate166KeySetKey90</span> <span class="s">{</span> 2407 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2408 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2409 2410 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2411 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2412 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2413 2414 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2415 <span class="s">}</span> 2416 2417 <span class="c"># Generate key 91 value as 1/0 indicating its presence/absence or count of its</span> 2418 <span class="c"># presence in a molecule.</span> 2419 <span class="c">#</span> 2420 <span class="c"># Key 91 description: QHAAACH2A</span> 2421 <span class="c">#</span> <a name="_Generate166KeySetKey91-"></a>2422 <span class="k">sub </span><span class="m">_Generate166KeySetKey91</span> <span class="s">{</span> 2423 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2424 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2425 2426 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2427 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2428 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2429 2430 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2431 <span class="s">}</span> 2432 2433 <span class="c"># Generate key 92 value as 1/0 indicating its presence/absence or count of its</span> 2434 <span class="c"># presence in a molecule.</span> 2435 <span class="c">#</span> 2436 <span class="c"># Key 92 description: OC(N)C</span> 2437 <span class="c">#</span> <a name="_Generate166KeySetKey92-"></a>2438 <span class="k">sub </span><span class="m">_Generate166KeySetKey92</span> <span class="s">{</span> 2439 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2440 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2441 2442 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2443 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 2444 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2445 2446 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2447 <span class="s">}</span> 2448 2449 <span class="c"># Generate key 93 value as 1/0 indicating its presence/absence or count of its</span> 2450 <span class="c"># presence in a molecule.</span> 2451 <span class="c">#</span> 2452 <span class="c"># Key 93 description: QCH3</span> 2453 <span class="c">#</span> <a name="_Generate166KeySetKey93-"></a>2454 <span class="k">sub </span><span class="m">_Generate166KeySetKey93</span> <span class="s">{</span> 2455 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2456 <span class="k">my</span><span class="s">(</span><span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2457 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="k">undef</span><span class="sc">;</span> 2458 <span class="k">my</span><span class="s">(</span><span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">3</span><span class="s">)</span><span class="sc">;</span> 2459 2460 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2461 <span class="s">}</span> 2462 2463 <span class="c"># Generate key 94 value as 1/0 indicating its presence/absence or count of its</span> 2464 <span class="c"># presence in a molecule.</span> 2465 <span class="c">#</span> 2466 <span class="c"># Key 94 description: QN</span> 2467 <span class="c">#</span> <a name="_Generate166KeySetKey94-"></a>2468 <span class="k">sub </span><span class="m">_Generate166KeySetKey94</span> <span class="s">{</span> 2469 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2470 2471 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 2472 <span class="s">}</span> 2473 2474 <span class="c"># Generate key 95 value as 1/0 indicating its presence/absence or count of its</span> 2475 <span class="c"># presence in a molecule.</span> 2476 <span class="c">#</span> 2477 <span class="c"># Key 95 description: NAAO</span> 2478 <span class="c">#</span> <a name="_Generate166KeySetKey95-"></a>2479 <span class="k">sub </span><span class="m">_Generate166KeySetKey95</span> <span class="s">{</span> 2480 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2481 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2482 2483 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2484 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2485 2486 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2487 <span class="s">}</span> 2488 2489 <span class="c"># Generate key 96 value as 1/0 indicating its presence/absence or count of its</span> 2490 <span class="c"># presence in a molecule.</span> 2491 <span class="c">#</span> 2492 <span class="c"># Key 96 description: 5M RING</span> 2493 <span class="c">#</span> <a name="_Generate166KeySetKey96-"></a>2494 <span class="k">sub </span><span class="m">_Generate166KeySetKey96</span> <span class="s">{</span> 2495 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2496 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 2497 2498 <span class="i">$RingSize</span> = <span class="n">5</span><span class="sc">;</span> 2499 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 2500 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 2501 2502 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 2503 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 2504 <span class="s">}</span> 2505 <span class="k">else</span> <span class="s">{</span> 2506 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span><span class="sc">;</span> 2507 <span class="s">}</span> 2508 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 2509 <span class="s">}</span> 2510 2511 <span class="c"># Generate key 97 value as 1/0 indicating its presence/absence or count of its</span> 2512 <span class="c"># presence in a molecule.</span> 2513 <span class="c">#</span> 2514 <span class="c"># Key 97 description: NAAAO</span> 2515 <span class="c">#</span> <a name="_Generate166KeySetKey97-"></a>2516 <span class="k">sub </span><span class="m">_Generate166KeySetKey97</span> <span class="s">{</span> 2517 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2518 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2519 2520 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2521 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2522 2523 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2524 <span class="s">}</span> 2525 2526 <span class="c"># Generate key 98 value as 1/0 indicating its presence/absence or count of its</span> 2527 <span class="c"># presence in a molecule.</span> 2528 <span class="c">#</span> 2529 <span class="c"># Key 98 description: QAAAAA@1</span> 2530 <span class="c">#</span> <a name="_Generate166KeySetKey98-"></a>2531 <span class="k">sub </span><span class="m">_Generate166KeySetKey98</span> <span class="s">{</span> 2532 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2533 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 2534 2535 <span class="i">$RingSize</span> = <span class="n">6</span><span class="sc">;</span> 2536 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 2537 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 2538 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_IsHeteroAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> && <span class="i">$Atom</span><span class="i">->IsInRingOfSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 2539 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 2540 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 2541 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 2542 <span class="s">}</span> 2543 <span class="i">$KeyValue</span>++<span class="sc">;</span> 2544 <span class="s">}</span> 2545 <span class="s">}</span> 2546 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 2547 <span class="s">}</span> 2548 2549 <span class="c"># Generate key 99 value as 1/0 indicating its presence/absence or count of its</span> 2550 <span class="c"># presence in a molecule.</span> 2551 <span class="c">#</span> 2552 <span class="c"># Key 99 description: C=C</span> 2553 <span class="c">#</span> <a name="_Generate166KeySetKey99-"></a>2554 <span class="k">sub </span><span class="m">_Generate166KeySetKey99</span> <span class="s">{</span> 2555 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2556 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 2557 2558 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 2559 <span class="s">}</span> 2560 2561 <span class="c"># Generate key 100 value as 1/0 indicating its presence/absence or count of its</span> 2562 <span class="c"># presence in a molecule.</span> 2563 <span class="c">#</span> 2564 <span class="c"># Key 100 description: ACH2N</span> 2565 <span class="c">#</span> <a name="_Generate166KeySetKey100-"></a>2566 <span class="k">sub </span><span class="m">_Generate166KeySetKey100</span> <span class="s">{</span> 2567 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2568 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2569 2570 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2571 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 2572 2573 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 2574 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2575 2576 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 2577 2578 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2579 <span class="s">}</span> 2580 2581 <span class="c"># Generate key 101 value as 1/0 indicating its presence/absence or count of its</span> 2582 <span class="c"># presence in a molecule.</span> 2583 <span class="c">#</span> 2584 <span class="c"># Key 101 description: 8M RING</span> 2585 <span class="c">#</span> <a name="_Generate166KeySetKey101-"></a>2586 <span class="k">sub </span><span class="m">_Generate166KeySetKey101</span> <span class="s">{</span> 2587 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2588 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 2589 2590 <span class="i">$RingSize</span> = <span class="n">8</span><span class="sc">;</span> 2591 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 2592 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 2593 2594 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 2595 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 2596 <span class="s">}</span> 2597 <span class="k">else</span> <span class="s">{</span> 2598 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span><span class="sc">;</span> 2599 <span class="s">}</span> 2600 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 2601 <span class="s">}</span> 2602 2603 <span class="c"># Generate key 102 value as 1/0 indicating its presence/absence or count of its</span> 2604 <span class="c"># presence in a molecule.</span> 2605 <span class="c">#</span> 2606 <span class="c"># Key 102 description: QO</span> 2607 <span class="c">#</span> <a name="_Generate166KeySetKey102-"></a>2608 <span class="k">sub </span><span class="m">_Generate166KeySetKey102</span> <span class="s">{</span> 2609 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2610 2611 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2612 <span class="s">}</span> 2613 2614 <span class="c"># Generate key 103 value as 1/0 indicating its presence/absence or count of its</span> 2615 <span class="c"># presence in a molecule.</span> 2616 <span class="c">#</span> 2617 <span class="c"># Key 103 description: CL</span> 2618 <span class="c">#</span> <a name="_Generate166KeySetKey103-"></a>2619 <span class="k">sub </span><span class="m">_Generate166KeySetKey103</span> <span class="s">{</span> 2620 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2621 2622 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="s">)</span><span class="sc">;</span> 2623 <span class="s">}</span> 2624 2625 <span class="c"># Generate key 104 value as 1/0 indicating its presence/absence or count of its</span> 2626 <span class="c"># presence in a molecule.</span> 2627 <span class="c">#</span> 2628 <span class="c"># Key 104 description: QHACH2A</span> 2629 <span class="c">#</span> <a name="_Generate166KeySetKey104-"></a>2630 <span class="k">sub </span><span class="m">_Generate166KeySetKey104</span> <span class="s">{</span> 2631 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2632 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2633 2634 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2635 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2636 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2637 2638 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2639 <span class="s">}</span> 2640 2641 <span class="c"># Generate key 105 value as 1/0 indicating its presence/absence or count of its</span> 2642 <span class="c"># presence in a molecule.</span> 2643 <span class="c">#</span> 2644 <span class="c"># Key 105 description: A$A($A)$A</span> 2645 <span class="c">#</span> <a name="_Generate166KeySetKey105-"></a>2646 <span class="k">sub </span><span class="m">_Generate166KeySetKey105</span> <span class="s">{</span> 2647 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2648 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2649 2650 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2651 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2652 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'$'</span><span class="cm">,</span> <span class="q">'$'</span><span class="cm">,</span> <span class="q">'$'</span><span class="s">)</span><span class="sc">;</span> 2653 2654 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2655 <span class="s">}</span> 2656 2657 <span class="c"># Generate key 106 value as 1/0 indicating its presence/absence or count of its</span> 2658 <span class="c"># presence in a molecule.</span> 2659 <span class="c">#</span> 2660 <span class="c"># Key 106 description: QA(Q)Q</span> 2661 <span class="c">#</span> <a name="_Generate166KeySetKey106-"></a>2662 <span class="k">sub </span><span class="m">_Generate166KeySetKey106</span> <span class="s">{</span> 2663 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2664 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2665 2666 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2667 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 2668 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2669 2670 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2671 <span class="s">}</span> 2672 2673 <span class="c"># Generate key 107 value as 1/0 indicating its presence/absence or count of its</span> 2674 <span class="c"># presence in a molecule.</span> 2675 <span class="c">#</span> 2676 <span class="c"># Key 107 description: XA(A)A</span> 2677 <span class="c">#</span> <a name="_Generate166KeySetKey107-"></a>2678 <span class="k">sub </span><span class="m">_Generate166KeySetKey107</span> <span class="s">{</span> 2679 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2680 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2681 2682 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2683 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'X'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2684 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2685 2686 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2687 <span class="s">}</span> 2688 2689 <span class="c"># Generate key 108 value as 1/0 indicating its presence/absence or count of its</span> 2690 <span class="c"># presence in a molecule.</span> 2691 <span class="c">#</span> 2692 <span class="c"># Key 108 description: CH3AAACH2A</span> 2693 <span class="c">#</span> <a name="_Generate166KeySetKey108-"></a>2694 <span class="k">sub </span><span class="m">_Generate166KeySetKey108</span> <span class="s">{</span> 2695 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2696 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2697 2698 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2699 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2700 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">3</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2701 2702 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2703 <span class="s">}</span> 2704 2705 <span class="c"># Generate key 109 value as 1/0 indicating its presence/absence or count of its</span> 2706 <span class="c"># presence in a molecule.</span> 2707 <span class="c">#</span> 2708 <span class="c"># Key 109 description: ACH2O</span> 2709 <span class="c">#</span> <a name="_Generate166KeySetKey109-"></a>2710 <span class="k">sub </span><span class="m">_Generate166KeySetKey109</span> <span class="s">{</span> 2711 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2712 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2713 2714 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2715 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 2716 2717 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2718 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2719 2720 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 2721 2722 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2723 <span class="s">}</span> 2724 2725 <span class="c"># Generate key 110 value as 1/0 indicating its presence/absence or count of its</span> 2726 <span class="c"># presence in a molecule.</span> 2727 <span class="c">#</span> 2728 <span class="c"># Key 110 description: NCO</span> 2729 <span class="c">#</span> <a name="_Generate166KeySetKey110-"></a>2730 <span class="k">sub </span><span class="m">_Generate166KeySetKey110</span> <span class="s">{</span> 2731 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2732 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2733 2734 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2735 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2736 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2737 2738 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2739 <span class="s">}</span> 2740 2741 <span class="c"># Generate key 111 value as 1/0 indicating its presence/absence or count of its</span> 2742 <span class="c"># presence in a molecule.</span> 2743 <span class="c">#</span> 2744 <span class="c"># Key 111 description: NACH2A</span> 2745 <span class="c">#</span> <a name="_Generate166KeySetKey111-"></a>2746 <span class="k">sub </span><span class="m">_Generate166KeySetKey111</span> <span class="s">{</span> 2747 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2748 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2749 2750 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2751 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2752 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2753 2754 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2755 <span class="s">}</span> 2756 2757 <span class="c"># Generate key 112 value as 1/0 indicating its presence/absence or count of its</span> 2758 <span class="c"># presence in a molecule.</span> 2759 <span class="c">#</span> 2760 <span class="c"># Key 112 description: AA(A)(A)A</span> 2761 <span class="c">#</span> <a name="_Generate166KeySetKey112-"></a>2762 <span class="k">sub </span><span class="m">_Generate166KeySetKey112</span> <span class="s">{</span> 2763 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2764 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2765 2766 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2767 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2768 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2769 2770 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2771 <span class="s">}</span> 2772 2773 <span class="c"># Generate key 113 value as 1/0 indicating its presence/absence or count of its</span> 2774 <span class="c"># presence in a molecule.</span> 2775 <span class="c">#</span> 2776 <span class="c"># Key 113 description: Onot%A%A</span> 2777 <span class="c">#</span> <a name="_Generate166KeySetKey113-"></a>2778 <span class="k">sub </span><span class="m">_Generate166KeySetKey113</span> <span class="s">{</span> 2779 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2780 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2781 2782 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2783 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2784 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'not%'</span><span class="cm">,</span> <span class="q">'%'</span><span class="s">)</span><span class="sc">;</span> 2785 2786 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2787 <span class="s">}</span> 2788 2789 <span class="c"># Generate key 114 value as 1/0 indicating its presence/absence or count of its</span> 2790 <span class="c"># presence in a molecule.</span> 2791 <span class="c">#</span> 2792 <span class="c"># Key 114 description: CH3CH2A</span> 2793 <span class="c">#</span> <a name="_Generate166KeySetKey114-"></a>2794 <span class="k">sub </span><span class="m">_Generate166KeySetKey114</span> <span class="s">{</span> 2795 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2796 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2797 2798 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2799 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 2800 2801 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2802 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2803 <span class="i">@NbrAtomMinHydrogenCount</span> = <span class="s">(</span><span class="n">3</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2804 2805 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 2806 2807 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2808 <span class="s">}</span> 2809 2810 <span class="c"># Generate key 115 value as 1/0 indicating its presence/absence or count of its</span> 2811 <span class="c"># presence in a molecule.</span> 2812 <span class="c">#</span> 2813 <span class="c"># Key 115 description: CH3ACH2A</span> 2814 <span class="c">#</span> <a name="_Generate166KeySetKey115-"></a>2815 <span class="k">sub </span><span class="m">_Generate166KeySetKey115</span> <span class="s">{</span> 2816 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2817 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2818 2819 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2820 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2821 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">3</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2822 2823 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2824 <span class="s">}</span> 2825 2826 <span class="c"># Generate key 116 value as 1/0 indicating its presence/absence or count of its</span> 2827 <span class="c"># presence in a molecule.</span> 2828 <span class="c">#</span> 2829 <span class="c"># Key 116 description: CH3AACH2A</span> 2830 <span class="c">#</span> <a name="_Generate166KeySetKey116-"></a>2831 <span class="k">sub </span><span class="m">_Generate166KeySetKey116</span> <span class="s">{</span> 2832 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2833 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2834 2835 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2836 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2837 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="n">3</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2838 2839 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2840 <span class="s">}</span> 2841 2842 <span class="c"># Generate key 117 value as 1/0 indicating its presence/absence or count of its</span> 2843 <span class="c"># presence in a molecule.</span> 2844 <span class="c">#</span> 2845 <span class="c"># Key 117 description: NAO</span> 2846 <span class="c">#</span> <a name="_Generate166KeySetKey117-"></a>2847 <span class="k">sub </span><span class="m">_Generate166KeySetKey117</span> <span class="s">{</span> 2848 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2849 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2850 2851 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 2852 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2853 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2854 2855 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2856 <span class="s">}</span> 2857 2858 <span class="c"># Generate key 118 value as 1/0 indicating its presence/absence or count of its</span> 2859 <span class="c"># presence in a molecule.</span> 2860 <span class="c">#</span> 2861 <span class="c"># Key 118 description: ACH2CH2A > 1</span> 2862 <span class="c">#</span> <a name="_Generate166KeySetKey118-"></a>2863 <span class="k">sub </span><span class="m">_Generate166KeySetKey118</span> <span class="s">{</span> 2864 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2865 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 2866 2867 <span class="i">$MinKeyCount</span> = <span class="n">2</span><span class="sc">;</span> 2868 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2869 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2870 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2871 2872 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 2873 <span class="s">}</span> 2874 2875 <span class="c"># Generate key 119 value as 1/0 indicating its presence/absence or count of its</span> 2876 <span class="c"># presence in a molecule.</span> 2877 <span class="c">#</span> 2878 <span class="c"># Key 119 description: N=A</span> 2879 <span class="c">#</span> <a name="_Generate166KeySetKey119-"></a>2880 <span class="k">sub </span><span class="m">_Generate166KeySetKey119</span> <span class="s">{</span> 2881 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2882 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 2883 2884 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 2885 <span class="s">}</span> 2886 2887 <span class="c"># Generate key 120 value as 1/0 indicating its presence/absence or count of its</span> 2888 <span class="c"># presence in a molecule.</span> 2889 <span class="c">#</span> 2890 <span class="c"># Key 120 description: HETEROCYCLIC ATOM > 1 (&...)</span> 2891 <span class="c">#</span> <a name="_Generate166KeySetKey120-"></a>2892 <span class="k">sub </span><span class="m">_Generate166KeySetKey120</span> <span class="s">{</span> 2893 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2894 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span> = <span class="s">(</span><span class="n">2</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 2895 2896 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span><span class="sc">;</span> 2897 <span class="s">}</span> 2898 2899 <span class="c"># Generate key 121 value as 1/0 indicating its presence/absence or count of its</span> 2900 <span class="c"># presence in a molecule.</span> 2901 <span class="c">#</span> 2902 <span class="c"># Key 121 description: N HETEROCYCLE</span> 2903 <span class="c">#</span> <a name="_Generate166KeySetKey121-"></a>2904 <span class="k">sub </span><span class="m">_Generate166KeySetKey121</span> <span class="s">{</span> 2905 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2906 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 2907 2908 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span><span class="sc">;</span> 2909 <span class="s">}</span> 2910 2911 <span class="c"># Generate key 122 value as 1/0 indicating its presence/absence or count of its</span> 2912 <span class="c"># presence in a molecule.</span> 2913 <span class="c">#</span> 2914 <span class="c"># Key 122 description: AN(A)A</span> 2915 <span class="c">#</span> <a name="_Generate166KeySetKey122-"></a>2916 <span class="k">sub </span><span class="m">_Generate166KeySetKey122</span> <span class="s">{</span> 2917 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2918 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2919 2920 <span class="i">$CentralAtomSymbol</span> = <span class="q">'N'</span><span class="sc">;</span> 2921 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2922 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2923 2924 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2925 <span class="s">}</span> 2926 2927 <span class="c"># Generate key 123 value as 1/0 indicating its presence/absence or count of its</span> 2928 <span class="c"># presence in a molecule.</span> 2929 <span class="c">#</span> 2930 <span class="c"># Key 123 description: OCO</span> 2931 <span class="c">#</span> <a name="_Generate166KeySetKey123-"></a>2932 <span class="k">sub </span><span class="m">_Generate166KeySetKey123</span> <span class="s">{</span> 2933 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2934 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2935 2936 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 2937 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 2938 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 2939 2940 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2941 <span class="s">}</span> 2942 2943 <span class="c"># Generate key 124 value as 1/0 indicating its presence/absence or count of its</span> 2944 <span class="c"># presence in a molecule.</span> 2945 <span class="c">#</span> 2946 <span class="c"># Key 124 description: QQ</span> 2947 <span class="c">#</span> <a name="_Generate166KeySetKey124-"></a>2948 <span class="k">sub </span><span class="m">_Generate166KeySetKey124</span> <span class="s">{</span> 2949 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2950 2951 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 2952 <span class="s">}</span> 2953 2954 <span class="c"># Generate key 125 value as 1/0 indicating its presence/absence or count of its</span> 2955 <span class="c"># presence in a molecule.</span> 2956 <span class="c">#</span> 2957 <span class="c"># Key 125 description: AROMATIC RING > 1</span> 2958 <span class="c">#</span> <a name="_Generate166KeySetKey125-"></a>2959 <span class="k">sub </span><span class="m">_Generate166KeySetKey125</span> <span class="s">{</span> 2960 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2961 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$NumOfAromaticRings</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 2962 2963 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 2964 <span class="i">$NumOfAromaticRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfAromaticRings</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 2965 2966 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 2967 <span class="i">$KeyValue</span> = <span class="s">(</span><span class="i">$NumOfAromaticRings</span> > <span class="n">1</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 2968 <span class="s">}</span> 2969 <span class="k">else</span> <span class="s">{</span> 2970 <span class="i">$KeyValue</span> = <span class="i">$NumOfAromaticRings</span><span class="sc">;</span> 2971 <span class="s">}</span> 2972 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 2973 <span class="s">}</span> 2974 2975 <span class="c"># Generate key 126 value as 1/0 indicating its presence/absence or count of its</span> 2976 <span class="c"># presence in a molecule.</span> 2977 <span class="c">#</span> 2978 <span class="c"># Key 126 description: A!O!A</span> 2979 <span class="c">#</span> <a name="_Generate166KeySetKey126-"></a>2980 <span class="k">sub </span><span class="m">_Generate166KeySetKey126</span> <span class="s">{</span> 2981 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2982 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2983 2984 <span class="i">$CentralAtomSymbol</span> = <span class="q">'O'</span><span class="sc">;</span> 2985 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 2986 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'!'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 2987 2988 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2989 <span class="s">}</span> 2990 2991 <span class="c"># Generate key 127 value as 1/0 indicating its presence/absence or count of its</span> 2992 <span class="c"># presence in a molecule.</span> 2993 <span class="c">#</span> 2994 <span class="c"># Key 127 description: A$A!O > 1 (&...)</span> 2995 <span class="c">#</span> <a name="_Generate166KeySetKey127-"></a>2996 <span class="k">sub </span><span class="m">_Generate166KeySetKey127</span> <span class="s">{</span> 2997 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 2998 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 2999 3000 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3001 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 3002 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'$'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 3003 <span class="i">$MinKeyCount</span> = <span class="n">2</span><span class="sc">;</span> 3004 3005 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 3006 <span class="s">}</span> 3007 3008 <span class="c"># Generate key 128 value as 1/0 indicating its presence/absence or count of its</span> 3009 <span class="c"># presence in a molecule.</span> 3010 <span class="c">#</span> 3011 <span class="c"># Key 128 description: ACH2AAACH2A</span> 3012 <span class="c">#</span> <a name="_Generate166KeySetKey128-"></a>3013 <span class="k">sub </span><span class="m">_Generate166KeySetKey128</span> <span class="s">{</span> 3014 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3015 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3016 3017 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3018 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3019 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3020 3021 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3022 <span class="s">}</span> 3023 3024 <span class="c"># Generate key 129 value as 1/0 indicating its presence/absence or count of its</span> 3025 <span class="c"># presence in a molecule.</span> 3026 <span class="c">#</span> 3027 <span class="c"># Key 129 description: ACH2AACH2A</span> 3028 <span class="c">#</span> <a name="_Generate166KeySetKey129-"></a>3029 <span class="k">sub </span><span class="m">_Generate166KeySetKey129</span> <span class="s">{</span> 3030 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3031 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3032 3033 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3034 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3035 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3036 3037 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3038 <span class="s">}</span> 3039 3040 <span class="c"># Generate key 130 value as 1/0 indicating its presence/absence or count of its</span> 3041 <span class="c"># presence in a molecule.</span> 3042 <span class="c">#</span> 3043 <span class="c"># Key 130 description: QQ > 1 (&...)</span> 3044 <span class="c">#</span> <a name="_Generate166KeySetKey130-"></a>3045 <span class="k">sub </span><span class="m">_Generate166KeySetKey130</span> <span class="s">{</span> 3046 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3047 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span> 3048 3049 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 3050 <span class="s">}</span> 3051 3052 <span class="c"># Generate key 131 value as 1/0 indicating its presence/absence or count of its</span> 3053 <span class="c"># presence in a molecule.</span> 3054 <span class="c">#</span> 3055 <span class="c"># Key 131 description: QH > 1</span> 3056 <span class="c">#</span> <a name="_Generate166KeySetKey131-"></a>3057 <span class="k">sub </span><span class="m">_Generate166KeySetKey131</span> <span class="s">{</span> 3058 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3059 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 3060 3061 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3062 <span class="s">}</span> 3063 3064 <span class="c"># Generate key 132 value as 1/0 indicating its presence/absence or count of its</span> 3065 <span class="c"># presence in a molecule.</span> 3066 <span class="c">#</span> 3067 <span class="c"># Key 132 description: OACH2A</span> 3068 <span class="c">#</span> <a name="_Generate166KeySetKey132-"></a>3069 <span class="k">sub </span><span class="m">_Generate166KeySetKey132</span> <span class="s">{</span> 3070 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3071 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3072 3073 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3074 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3075 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3076 3077 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3078 <span class="s">}</span> 3079 3080 <span class="c"># Generate key 133 value as 1/0 indicating its presence/absence or count of its</span> 3081 <span class="c"># presence in a molecule.</span> 3082 <span class="c">#</span> 3083 <span class="c"># Key 133 description: A$A!N</span> 3084 <span class="c">#</span> <a name="_Generate166KeySetKey133-"></a>3085 <span class="k">sub </span><span class="m">_Generate166KeySetKey133</span> <span class="s">{</span> 3086 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3087 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3088 3089 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3090 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 3091 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'$'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 3092 3093 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3094 <span class="s">}</span> 3095 3096 <span class="c"># Generate key 134 value as 1/0 indicating its presence/absence or count of its</span> 3097 <span class="c"># presence in a molecule.</span> 3098 <span class="c">#</span> 3099 <span class="c"># Key 134 description: X (HALOGEN)</span> 3100 <span class="c">#</span> <a name="_Generate166KeySetKey134-"></a>3101 <span class="k">sub </span><span class="m">_Generate166KeySetKey134</span> <span class="s">{</span> 3102 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3103 3104 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'X'</span><span class="s">)</span><span class="sc">;</span> 3105 <span class="s">}</span> 3106 3107 <span class="c"># Generate key 135 value as 1/0 indicating its presence/absence or count of its</span> 3108 <span class="c"># presence in a molecule.</span> 3109 <span class="c">#</span> 3110 <span class="c"># Key 135 description: Nnot%A%A</span> 3111 <span class="c">#</span> <a name="_Generate166KeySetKey135-"></a>3112 <span class="k">sub </span><span class="m">_Generate166KeySetKey135</span> <span class="s">{</span> 3113 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3114 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3115 3116 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3117 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3118 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'not%'</span><span class="cm">,</span> <span class="q">'%'</span><span class="s">)</span><span class="sc">;</span> 3119 3120 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3121 <span class="s">}</span> 3122 3123 <span class="c"># Generate key 136 value as 1/0 indicating its presence/absence or count of its</span> 3124 <span class="c"># presence in a molecule.</span> 3125 <span class="c">#</span> 3126 <span class="c"># Key 136 description: O=A > 1</span> 3127 <span class="c">#</span> <a name="_Generate166KeySetKey136-"></a>3128 <span class="k">sub </span><span class="m">_Generate166KeySetKey136</span> <span class="s">{</span> 3129 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3130 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="s">(</span><span class="n">2</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span> 3131 3132 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 3133 <span class="s">}</span> 3134 3135 <span class="c"># Generate key 137 value as 1/0 indicating its presence/absence or count of its</span> 3136 <span class="c"># presence in a molecule.</span> 3137 <span class="c">#</span> 3138 <span class="c"># Key 137 description: HETEROCYCLE</span> 3139 <span class="c">#</span> <a name="_Generate166KeySetKey137-"></a>3140 <span class="k">sub </span><span class="m">_Generate166KeySetKey137</span> <span class="s">{</span> 3141 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3142 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span> = <span class="s">(</span><span class="n">1</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 3143 3144 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span><span class="sc">;</span> 3145 <span class="s">}</span> 3146 3147 <span class="c"># Generate key 138 value as 1/0 indicating its presence/absence or count of its</span> 3148 <span class="c"># presence in a molecule.</span> 3149 <span class="c">#</span> 3150 <span class="c"># Key 138 description: QCH2A > 1 (&...)</span> 3151 <span class="c">#</span> <a name="_Generate166KeySetKey138-"></a>3152 <span class="k">sub </span><span class="m">_Generate166KeySetKey138</span> <span class="s">{</span> 3153 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3154 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3155 3156 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 3157 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3158 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3159 <span class="i">$MinKeyCount</span> = <span class="n">2</span><span class="sc">;</span> 3160 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 3161 3162 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3163 <span class="s">}</span> 3164 3165 <span class="c"># Generate key 139 value as 1/0 indicating its presence/absence or count of its</span> 3166 <span class="c"># presence in a molecule.</span> 3167 <span class="c">#</span> 3168 <span class="c"># Key 139 description: OH</span> 3169 <span class="c">#</span> <a name="_Generate166KeySetKey139-"></a>3170 <span class="k">sub </span><span class="m">_Generate166KeySetKey139</span> <span class="s">{</span> 3171 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3172 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 3173 3174 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3175 <span class="s">}</span> 3176 3177 <span class="c"># Generate key 140 value as 1/0 indicating its presence/absence or count of its</span> 3178 <span class="c"># presence in a molecule.</span> 3179 <span class="c">#</span> 3180 <span class="c"># Key 140 description: O > 3 (&...)</span> 3181 <span class="c">#</span> <a name="_Generate166KeySetKey140-"></a>3182 <span class="k">sub </span><span class="m">_Generate166KeySetKey140</span> <span class="s">{</span> 3183 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3184 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="n">4</span><span class="sc">;</span> 3185 3186 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 3187 <span class="s">}</span> 3188 3189 <span class="c"># Generate key 141 value as 1/0 indicating its presence/absence or count of its</span> 3190 <span class="c"># presence in a molecule.</span> 3191 <span class="c">#</span> 3192 <span class="c"># Key 141 description: CH3 > 2 (&...)</span> 3193 <span class="c">#</span> <a name="_Generate166KeySetKey141-"></a>3194 <span class="k">sub </span><span class="m">_Generate166KeySetKey141</span> <span class="s">{</span> 3195 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3196 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="n">3</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">3</span><span class="s">)</span><span class="sc">;</span> 3197 3198 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3199 <span class="s">}</span> 3200 3201 <span class="c"># Generate key 142 value as 1/0 indicating its presence/absence or count of its</span> 3202 <span class="c"># presence in a molecule.</span> 3203 <span class="c">#</span> 3204 <span class="c"># Key 142 description: N > 1</span> 3205 <span class="c">#</span> <a name="_Generate166KeySetKey142-"></a>3206 <span class="k">sub </span><span class="m">_Generate166KeySetKey142</span> <span class="s">{</span> 3207 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3208 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 3209 3210 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 3211 <span class="s">}</span> 3212 3213 <span class="c"># Generate key 143 value as 1/0 indicating its presence/absence or count of its</span> 3214 <span class="c"># presence in a molecule.</span> 3215 <span class="c">#</span> 3216 <span class="c"># Key 143 description: A$A!O</span> 3217 <span class="c">#</span> <a name="_Generate166KeySetKey143-"></a>3218 <span class="k">sub </span><span class="m">_Generate166KeySetKey143</span> <span class="s">{</span> 3219 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3220 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3221 3222 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3223 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 3224 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'$'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 3225 3226 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3227 <span class="s">}</span> 3228 3229 <span class="c"># Generate key 144 value as 1/0 indicating its presence/absence or count of its</span> 3230 <span class="c"># presence in a molecule.</span> 3231 <span class="c">#</span> 3232 <span class="c"># Key 144 description: Anot%A%Anot%A</span> 3233 <span class="c">#</span> <a name="_Generate166KeySetKey144-"></a>3234 <span class="k">sub </span><span class="m">_Generate166KeySetKey144</span> <span class="s">{</span> 3235 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3236 <span class="k">my</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3237 3238 <span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="s">)</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3239 <span class="i">$BondSymbol</span> = <span class="q">'%'</span><span class="sc">;</span> 3240 3241 <span class="i">@NbrAtomsSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3242 <span class="i">@NbrAtomsBondSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'not%'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'not%'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3243 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondNeighborhoodKeys</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> \<span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3244 <span class="s">}</span> 3245 3246 <span class="c"># Generate key 145 value as 1/0 indicating its presence/absence or count of its</span> 3247 <span class="c"># presence in a molecule.</span> 3248 <span class="c">#</span> 3249 <span class="c"># Key 145 description: 6M RING > 1</span> 3250 <span class="c">#</span> <a name="_Generate166KeySetKey145-"></a>3251 <span class="k">sub </span><span class="m">_Generate166KeySetKey145</span> <span class="s">{</span> 3252 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3253 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 3254 3255 <span class="i">$RingSize</span> = <span class="n">6</span><span class="sc">;</span> 3256 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 3257 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 3258 3259 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 3260 <span class="i">$KeyValue</span> = <span class="s">(</span><span class="i">$NumOfRings</span> > <span class="n">1</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 3261 <span class="s">}</span> 3262 <span class="k">else</span> <span class="s">{</span> 3263 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span><span class="sc">;</span> 3264 <span class="s">}</span> 3265 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3266 <span class="s">}</span> 3267 3268 <span class="c"># Generate key 146 value as 1/0 indicating its presence/absence or count of its</span> 3269 <span class="c"># presence in a molecule.</span> 3270 <span class="c">#</span> 3271 <span class="c"># Key 146 description: O > 2</span> 3272 <span class="c">#</span> <a name="_Generate166KeySetKey146-"></a>3273 <span class="k">sub </span><span class="m">_Generate166KeySetKey146</span> <span class="s">{</span> 3274 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3275 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="n">3</span><span class="sc">;</span> 3276 3277 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 3278 <span class="s">}</span> 3279 3280 <span class="c"># Generate key 147 value as 1/0 indicating its presence/absence or count of its</span> 3281 <span class="c"># presence in a molecule.</span> 3282 <span class="c">#</span> 3283 <span class="c"># Key 147 description: ACH2CH2A</span> 3284 <span class="c">#</span> <a name="_Generate166KeySetKey147-"></a>3285 <span class="k">sub </span><span class="m">_Generate166KeySetKey147</span> <span class="s">{</span> 3286 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3287 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3288 3289 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3290 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3291 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3292 3293 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3294 <span class="s">}</span> 3295 3296 <span class="c"># Generate key 148 value as 1/0 indicating its presence/absence or count of its</span> 3297 <span class="c"># presence in a molecule.</span> 3298 <span class="c">#</span> 3299 <span class="c"># Key 148 description: AQ(A)A</span> 3300 <span class="c">#</span> <a name="_Generate166KeySetKey148-"></a>3301 <span class="k">sub </span><span class="m">_Generate166KeySetKey148</span> <span class="s">{</span> 3302 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3303 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3304 3305 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 3306 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3307 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3308 3309 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3310 <span class="s">}</span> 3311 3312 <span class="c"># Generate key 149 value as 1/0 indicating its presence/absence or count of its</span> 3313 <span class="c"># presence in a molecule.</span> 3314 <span class="c">#</span> 3315 <span class="c"># Key 149 description: CH3 > 1</span> 3316 <span class="c">#</span> <a name="_Generate166KeySetKey149-"></a>3317 <span class="k">sub </span><span class="m">_Generate166KeySetKey149</span> <span class="s">{</span> 3318 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3319 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="n">2</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">3</span><span class="s">)</span><span class="sc">;</span> 3320 3321 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3322 <span class="s">}</span> 3323 3324 <span class="c"># Generate key 150 value as 1/0 indicating its presence/absence or count of its</span> 3325 <span class="c"># presence in a molecule.</span> 3326 <span class="c">#</span> 3327 <span class="c"># Key 150 description: A!A$A!A</span> 3328 <span class="c">#</span> <a name="_Generate166KeySetKey150-"></a>3329 <span class="k">sub </span><span class="m">_Generate166KeySetKey150</span> <span class="s">{</span> 3330 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3331 <span class="k">my</span><span class="s">(</span><span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3332 3333 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3334 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="q">'!'</span><span class="cm">,</span> <span class="q">'$'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 3335 3336 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3337 <span class="s">}</span> 3338 3339 <span class="c"># Generate key 151 value as 1/0 indicating its presence/absence or count of its</span> 3340 <span class="c"># presence in a molecule.</span> 3341 <span class="c">#</span> 3342 <span class="c"># Key 151 description: NH</span> 3343 <span class="c">#</span> <a name="_Generate166KeySetKey151-"></a>3344 <span class="k">sub </span><span class="m">_Generate166KeySetKey151</span> <span class="s">{</span> 3345 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3346 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 3347 3348 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3349 <span class="s">}</span> 3350 3351 <span class="c"># Generate key 152 value as 1/0 indicating its presence/absence or count of its</span> 3352 <span class="c"># presence in a molecule.</span> 3353 <span class="c">#</span> 3354 <span class="c"># Key 152 description: OC(C)C</span> 3355 <span class="c">#</span> <a name="_Generate166KeySetKey152-"></a>3356 <span class="k">sub </span><span class="m">_Generate166KeySetKey152</span> <span class="s">{</span> 3357 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3358 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3359 3360 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 3361 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 3362 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3363 3364 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3365 <span class="s">}</span> 3366 3367 <span class="c"># Generate key 153 value as 1/0 indicating its presence/absence or count of its</span> 3368 <span class="c"># presence in a molecule.</span> 3369 <span class="c">#</span> 3370 <span class="c"># Key 153 description: QCH2A</span> 3371 <span class="c">#</span> <a name="_Generate166KeySetKey153-"></a>3372 <span class="k">sub </span><span class="m">_Generate166KeySetKey153</span> <span class="s">{</span> 3373 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3374 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3375 3376 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 3377 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3378 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3379 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 3380 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 3381 3382 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3383 <span class="s">}</span> 3384 3385 <span class="c"># Generate key 154 value as 1/0 indicating its presence/absence or count of its</span> 3386 <span class="c"># presence in a molecule.</span> 3387 <span class="c">#</span> 3388 <span class="c"># Key 154 description: C=O</span> 3389 <span class="c">#</span> <a name="_Generate166KeySetKey154-"></a>3390 <span class="k">sub </span><span class="m">_Generate166KeySetKey154</span> <span class="s">{</span> 3391 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3392 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 3393 3394 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 3395 <span class="s">}</span> 3396 3397 <span class="c"># Generate key 155 value as 1/0 indicating its presence/absence or count of its</span> 3398 <span class="c"># presence in a molecule.</span> 3399 <span class="c">#</span> 3400 <span class="c"># Key 155 description: A!CH2!A</span> 3401 <span class="c">#</span> <a name="_Generate166KeySetKey155-"></a>3402 <span class="k">sub </span><span class="m">_Generate166KeySetKey155</span> <span class="s">{</span> 3403 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3404 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3405 3406 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 3407 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3408 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'!'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 3409 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 3410 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 3411 3412 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3413 <span class="s">}</span> 3414 3415 <span class="c"># Generate key 156 value as 1/0 indicating its presence/absence or count of its</span> 3416 <span class="c"># presence in a molecule.</span> 3417 <span class="c">#</span> 3418 <span class="c"># Key 156 description: NA(A)A</span> 3419 <span class="c">#</span> <a name="_Generate166KeySetKey156-"></a>3420 <span class="k">sub </span><span class="m">_Generate166KeySetKey156</span> <span class="s">{</span> 3421 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3422 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomsMinHydrogenCount</span><span class="cm">,</span> <span class="i">@CentralAtomNbrsAtomSymbols</span><span class="cm">,</span> <span class="i">@CentralAtomNbrsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3423 3424 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3425 <span class="i">@CentralAtomsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3426 <span class="i">@CentralAtomsMinHydrogenCount</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3427 3428 <span class="i">@CentralAtomNbrsAtomSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3429 <span class="i">@CentralAtomNbrsBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3430 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 3431 3432 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsBondSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomsMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> \<span class="i">@CentralAtomNbrsAtomSymbols</span><span class="cm">,</span> \<span class="i">@CentralAtomNbrsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3433 <span class="s">}</span> 3434 3435 <span class="c"># Generate key 157 value as 1/0 indicating its presence/absence or count of its</span> 3436 <span class="c"># presence in a molecule.</span> 3437 <span class="c">#</span> 3438 <span class="c"># Key 157 description: C-O</span> 3439 <span class="c">#</span> <a name="_Generate166KeySetKey157-"></a>3440 <span class="k">sub </span><span class="m">_Generate166KeySetKey157</span> <span class="s">{</span> 3441 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3442 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">1</span><span class="sc">;</span> 3443 3444 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 3445 <span class="s">}</span> 3446 3447 <span class="c"># Generate key 158 value as 1/0 indicating its presence/absence or count of its</span> 3448 <span class="c"># presence in a molecule.</span> 3449 <span class="c">#</span> 3450 <span class="c"># Key 158 description: C-N</span> 3451 <span class="c">#</span> <a name="_Generate166KeySetKey158-"></a>3452 <span class="k">sub </span><span class="m">_Generate166KeySetKey158</span> <span class="s">{</span> 3453 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3454 <span class="k">my</span><span class="s">(</span><span class="i">$BondOrder</span><span class="s">)</span> = <span class="n">1</span><span class="sc">;</span> 3455 3456 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 3457 <span class="s">}</span> 3458 3459 <span class="c"># Generate key 159 value as 1/0 indicating its presence/absence or count of its</span> 3460 <span class="c"># presence in a molecule.</span> 3461 <span class="c">#</span> 3462 <span class="c"># Key 159 description: O > 1</span> 3463 <span class="c">#</span> <a name="_Generate166KeySetKey159-"></a>3464 <span class="k">sub </span><span class="m">_Generate166KeySetKey159</span> <span class="s">{</span> 3465 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3466 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> = <span class="n">2</span><span class="sc">;</span> 3467 3468 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="s">)</span><span class="sc">;</span> 3469 <span class="s">}</span> 3470 3471 <span class="c"># Generate key 160 value as 1/0 indicating its presence/absence or count of its</span> 3472 <span class="c"># presence in a molecule.</span> 3473 <span class="c">#</span> 3474 <span class="c"># Key 160 description: CH3</span> 3475 <span class="c">#</span> <a name="_Generate166KeySetKey160-"></a>3476 <span class="k">sub </span><span class="m">_Generate166KeySetKey160</span> <span class="s">{</span> 3477 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3478 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">3</span><span class="s">)</span><span class="sc">;</span> 3479 3480 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3481 <span class="s">}</span> 3482 3483 <span class="c"># Generate key 161 value as 1/0 indicating its presence/absence or count of its</span> 3484 <span class="c"># presence in a molecule.</span> 3485 <span class="c">#</span> 3486 <span class="c"># Key 161 description: N</span> 3487 <span class="c">#</span> <a name="_Generate166KeySetKey161-"></a>3488 <span class="k">sub </span><span class="m">_Generate166KeySetKey161</span> <span class="s">{</span> 3489 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3490 3491 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 3492 <span class="s">}</span> 3493 3494 <span class="c"># Generate key 162 value as 1/0 indicating its presence/absence or count of its</span> 3495 <span class="c"># presence in a molecule.</span> 3496 <span class="c">#</span> 3497 <span class="c"># Key 162 description: AROMATIC</span> 3498 <span class="c">#</span> <a name="_Generate166KeySetKey162-"></a>3499 <span class="k">sub </span><span class="m">_Generate166KeySetKey162</span> <span class="s">{</span> 3500 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3501 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 3502 3503 <span class="c"># Check molecule aromatic property...</span> 3504 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 3505 <span class="k">if</span> <span class="s">(</span><span class="i">$Molecule</span><span class="i">->IsAromatic</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 3506 <span class="k">return</span> <span class="n">1</span><span class="sc">;</span> 3507 <span class="s">}</span> 3508 3509 <span class="c"># Check aromatic property of each atom...</span> 3510 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 3511 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 3512 <span class="k">if</span> <span class="s">(</span>!<span class="i">$Atom</span><span class="i">->IsAromatic</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 3513 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 3514 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 3515 <span class="s">}</span> 3516 <span class="s">}</span> 3517 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3518 <span class="s">}</span> 3519 3520 <span class="c"># Generate key 163 value as 1/0 indicating its presence/absence or count of its</span> 3521 <span class="c"># presence in a molecule.</span> 3522 <span class="c">#</span> 3523 <span class="c"># Key 163 description: 6M RING</span> 3524 <span class="c">#</span> <a name="_Generate166KeySetKey163-"></a>3525 <span class="k">sub </span><span class="m">_Generate166KeySetKey163</span> <span class="s">{</span> 3526 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3527 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 3528 3529 <span class="i">$RingSize</span> = <span class="n">6</span><span class="sc">;</span> 3530 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 3531 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 3532 3533 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 3534 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 3535 <span class="s">}</span> 3536 <span class="k">else</span> <span class="s">{</span> 3537 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span><span class="sc">;</span> 3538 <span class="s">}</span> 3539 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3540 <span class="s">}</span> 3541 3542 <span class="c"># Generate key 164 value as 1/0 indicating its presence/absence or count of its</span> 3543 <span class="c"># presence in a molecule.</span> 3544 <span class="c">#</span> 3545 <span class="c"># Key 164 description: O</span> 3546 <span class="c">#</span> <a name="_Generate166KeySetKey164-"></a>3547 <span class="k">sub </span><span class="m">_Generate166KeySetKey164</span> <span class="s">{</span> 3548 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3549 3550 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 3551 <span class="s">}</span> 3552 3553 <span class="c"># Generate key 165 value as 1/0 indicating its presence/absence or count of its</span> 3554 <span class="c"># presence in a molecule.</span> 3555 <span class="c">#</span> 3556 <span class="c"># Key 165 description: RING</span> 3557 <span class="c">#</span> <a name="_Generate166KeySetKey165-"></a>3558 <span class="k">sub </span><span class="m">_Generate166KeySetKey165</span> <span class="s">{</span> 3559 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3560 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 3561 3562 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 3563 <span class="i">$NumOfRings</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfRings</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 3564 3565 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 3566 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 3567 <span class="s">}</span> 3568 <span class="k">else</span> <span class="s">{</span> 3569 <span class="i">$KeyValue</span> = <span class="i">$NumOfRings</span><span class="sc">;</span> 3570 <span class="s">}</span> 3571 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3572 <span class="s">}</span> 3573 3574 <span class="c"># Generate key 166 value as 1/0 indicating its presence/absence or count of its</span> 3575 <span class="c"># presence in a molecule.</span> 3576 <span class="c">#</span> 3577 <span class="c"># Key 166 description: FRAGMENTS</span> 3578 <span class="c">#</span> <a name="_Generate166KeySetKey166-"></a>3579 <span class="k">sub </span><span class="m">_Generate166KeySetKey166</span> <span class="s">{</span> 3580 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3581 <span class="k">my</span><span class="s">(</span><span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$NumOfComponents</span><span class="s">)</span><span class="sc">;</span> 3582 3583 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 3584 <span class="i">$NumOfComponents</span> = <span class="i">$Molecule</span><span class="i">->GetNumOfConnectedComponents</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 3585 3586 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 3587 <span class="i">$KeyValue</span> = <span class="s">(</span><span class="i">$NumOfComponents</span> > <span class="n">1</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 3588 <span class="s">}</span> 3589 <span class="k">else</span> <span class="s">{</span> 3590 <span class="i">$KeyValue</span> = <span class="i">$NumOfComponents</span><span class="sc">;</span> 3591 <span class="s">}</span> 3592 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3593 <span class="s">}</span> 3594 3595 <span class="c">##################################</span> 3596 <span class="c">#</span> 3597 <span class="c"># Implementation of MDL MACCS 322 keys...</span> 3598 <span class="c">#</span> 3599 <span class="c">##################################</span> 3600 3601 <span class="c"># Generate 322 keyset key 1 value as 1/0 indicating its presence/absence or</span> 3602 <span class="c"># count of its presence in a molecule.</span> 3603 <span class="c">#</span> 3604 <span class="c"># Key 1 description: A(AAA) or AA(A)A - atom with at least three neighbors</span> 3605 <span class="c">#</span> <a name="_Generate322KeySetKey1-"></a>3606 <span class="k">sub </span><span class="m">_Generate322KeySetKey1</span> <span class="s">{</span> 3607 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3608 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3609 3610 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3611 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3612 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3613 3614 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3615 <span class="s">}</span> 3616 3617 <span class="c"># Generate 322 keyset key 2 value as 1/0 indicating its presence/absence or</span> 3618 <span class="c"># count of its presence in a molecule.</span> 3619 <span class="c">#</span> 3620 <span class="c"># Key 2 description: Q - heteroatom</span> 3621 <span class="c">#</span> <a name="_Generate322KeySetKey2-"></a>3622 <span class="k">sub </span><span class="m">_Generate322KeySetKey2</span> <span class="s">{</span> 3623 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3624 3625 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 3626 <span class="s">}</span> 3627 3628 <span class="c"># Generate 322 keyset key 3 value as 1/0 indicating its presence/absence or</span> 3629 <span class="c"># count of its presence in a molecule.</span> 3630 <span class="c">#</span> 3631 <span class="c"># Key 3 description: Anot%not-A - atom involved in one or more multiple bonds, not aromatic</span> 3632 <span class="c">#</span> <a name="_Generate322KeySetKey3-"></a>3633 <span class="k">sub </span><span class="m">_Generate322KeySetKey3</span> <span class="s">{</span> 3634 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3635 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'not%not-'</span><span class="sc">;</span> 3636 3637 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 3638 <span class="s">}</span> 3639 3640 <span class="c"># Generate 322 keyset key 4 value as 1/0 indicating its presence/absence or</span> 3641 <span class="c"># count of its presence in a molecule.</span> 3642 <span class="c">#</span> 3643 <span class="c"># Key 4 description: A(AAAA) or AA(A)(A)A - atom with at least four neighbors</span> 3644 <span class="c">#</span> <a name="_Generate322KeySetKey4-"></a>3645 <span class="k">sub </span><span class="m">_Generate322KeySetKey4</span> <span class="s">{</span> 3646 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3647 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3648 3649 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3650 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3651 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3652 3653 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3654 <span class="s">}</span> 3655 3656 <span class="c"># Generate 322 keyset key 5 value as 1/0 indicating its presence/absence or</span> 3657 <span class="c"># count of its presence in a molecule.</span> 3658 <span class="c">#</span> 3659 <span class="c"># Key 5 description: A(QQ) or QA(Q) - atom with at least two heteroatom neighbors</span> 3660 <span class="c">#</span> <a name="_Generate322KeySetKey5-"></a>3661 <span class="k">sub </span><span class="m">_Generate322KeySetKey5</span> <span class="s">{</span> 3662 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3663 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3664 3665 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3666 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 3667 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3668 3669 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3670 <span class="s">}</span> 3671 3672 <span class="c"># Generate 322 keyset key 6 value as 1/0 indicating its presence/absence or</span> 3673 <span class="c"># count of its presence in a molecule.</span> 3674 <span class="c">#</span> 3675 <span class="c"># Key 6 description: A(QQQ) or QA(Q)Q - atom with at least three heteroatom neighbors</span> 3676 <span class="c">#</span> <a name="_Generate322KeySetKey6-"></a>3677 <span class="k">sub </span><span class="m">_Generate322KeySetKey6</span> <span class="s">{</span> 3678 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3679 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3680 3681 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3682 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="cm">,</span> <span class="q">'Q'</span><span class="s">)</span><span class="sc">;</span> 3683 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3684 3685 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3686 <span class="s">}</span> 3687 3688 <span class="c"># Generate 322 keyset key 7 value as 1/0 indicating its presence/absence or</span> 3689 <span class="c"># count of its presence in a molecule.</span> 3690 <span class="c">#</span> 3691 <span class="c"># Key 7 description: QH - heteroatom with at least one hydrogen attached</span> 3692 <span class="c">#</span> <a name="_Generate322KeySetKey7-"></a>3693 <span class="k">sub </span><span class="m">_Generate322KeySetKey7</span> <span class="s">{</span> 3694 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3695 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 3696 3697 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3698 <span class="s">}</span> 3699 3700 <span class="c"># Generate 322 keyset key 8 value as 1/0 indicating its presence/absence or</span> 3701 <span class="c"># count of its presence in a molecule.</span> 3702 <span class="c">#</span> 3703 <span class="c"># Key 8 description: CH2(AA) or ACH2A - carbon with at least two single bonds and at least two hydrogens attached</span> 3704 <span class="c">#</span> <a name="_Generate322KeySetKey8-"></a>3705 <span class="k">sub </span><span class="m">_Generate322KeySetKey8</span> <span class="s">{</span> 3706 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3707 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3708 3709 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 3710 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3711 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3712 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 3713 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">2</span><span class="sc">;</span> 3714 3715 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3716 <span class="s">}</span> 3717 3718 <span class="c"># Generate 322 keyset key 9 value as 1/0 indicating its presence/absence or</span> 3719 <span class="c"># count of its presence in a molecule.</span> 3720 <span class="c">#</span> 3721 <span class="c"># Key 9 description: CH3(A) or ACH3 - carbon with at least one single bond and at least three hydrogens attached</span> 3722 <span class="c">#</span> <a name="_Generate322KeySetKey9-"></a>3723 <span class="k">sub </span><span class="m">_Generate322KeySetKey9</span> <span class="s">{</span> 3724 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3725 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3726 3727 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 3728 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3729 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 3730 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 3731 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="n">3</span><span class="sc">;</span> 3732 3733 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 3734 <span class="s">}</span> 3735 3736 <span class="c"># Generate 322 keyset key 10 value as 1/0 indicating its presence/absence or</span> 3737 <span class="c"># count of its presence in a molecule.</span> 3738 <span class="c">#</span> 3739 <span class="c"># Key 10 description: Halogen</span> 3740 <span class="c">#</span> <a name="_Generate322KeySetKey10-"></a>3741 <span class="k">sub </span><span class="m">_Generate322KeySetKey10</span> <span class="s">{</span> 3742 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3743 3744 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'X'</span><span class="s">)</span><span class="sc">;</span> 3745 <span class="s">}</span> 3746 3747 <span class="c"># Generate 322 keyset key 11 value as 1/0 indicating its presence/absence or</span> 3748 <span class="c"># count of its presence in a molecule.</span> 3749 <span class="c">#</span> 3750 <span class="c"># Key 11 description: A(-A-A-A) or A-A(-A)-A - atom has at least three single bonds</span> 3751 <span class="c">#</span> <a name="_Generate322KeySetKey11-"></a>3752 <span class="k">sub </span><span class="m">_Generate322KeySetKey11</span> <span class="s">{</span> 3753 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3754 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3755 3756 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3757 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3758 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'-'</span><span class="cm">,</span> <span class="q">'-'</span><span class="cm">,</span> <span class="q">'-'</span><span class="s">)</span><span class="sc">;</span> 3759 3760 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3761 <span class="s">}</span> 3762 3763 <span class="c"># Generate 322 keyset key 12 value as 1/0 indicating its presence/absence or</span> 3764 <span class="c"># count of its presence in a molecule.</span> 3765 <span class="c">#</span> 3766 <span class="c"># Key 12 description: AAAAAA@1 >= 2 - atom is in at least two different six-membered rings</span> 3767 <span class="c">#</span> <a name="_Generate322KeySetKey12-"></a>3768 <span class="k">sub </span><span class="m">_Generate322KeySetKey12</span> <span class="s">{</span> 3769 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3770 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$RingSize</span><span class="cm">,</span> <span class="i">$NumOfRings</span><span class="s">)</span><span class="sc">;</span> 3771 3772 <span class="i">$RingSize</span> = <span class="n">6</span><span class="sc">;</span> 3773 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 3774 3775 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 3776 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_IsAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 3777 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 3778 <span class="s">}</span> 3779 <span class="i">$NumOfRings</span> = <span class="i">$Atom</span><span class="i">->GetNumOfRingsWithSize</span><span class="s">(</span><span class="i">$RingSize</span><span class="s">)</span><span class="sc">;</span> 3780 <span class="k">if</span> <span class="s">(</span><span class="i">$NumOfRings</span> >= <span class="n">2</span><span class="s">)</span> <span class="s">{</span> 3781 <span class="i">$KeyValue</span>++<span class="sc">;</span> 3782 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 3783 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 3784 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 3785 <span class="s">}</span> 3786 <span class="s">}</span> 3787 <span class="s">}</span> 3788 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3789 <span class="s">}</span> 3790 3791 <span class="c"># Generate 322 keyset key 13 value as 1/0 indicating its presence/absence or</span> 3792 <span class="c"># count of its presence in a molecule.</span> 3793 <span class="c">#</span> 3794 <span class="c"># Key 13 description: A($A$A$A) or A$A($A)$A - atom has more than two ring bonds (at least three ring bonds)</span> 3795 <span class="c">#</span> <a name="_Generate322KeySetKey13-"></a>3796 <span class="k">sub </span><span class="m">_Generate322KeySetKey13</span> <span class="s">{</span> 3797 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3798 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3799 3800 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3801 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3802 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'$'</span><span class="cm">,</span> <span class="q">'$'</span><span class="cm">,</span> <span class="q">'$'</span><span class="s">)</span><span class="sc">;</span> 3803 3804 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3805 <span class="s">}</span> 3806 3807 <span class="c"># Generate 322 keyset key 14 value as 1/0 indicating its presence/absence or</span> 3808 <span class="c"># count of its presence in a molecule.</span> 3809 <span class="c">#</span> 3810 <span class="c"># Key 14 description: A$A!A$A - atom is at a ring/chain boundary. When a comparison is</span> 3811 <span class="c"># done with another atom the path passes through the chain bond.</span> 3812 <span class="c">#</span> <a name="_Generate322KeySetKey14-"></a>3813 <span class="k">sub </span><span class="m">_Generate322KeySetKey14</span> <span class="s">{</span> 3814 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3815 <span class="k">my</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3816 3817 <span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="s">)</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3818 <span class="i">$BondSymbol</span> = <span class="q">'!'</span><span class="sc">;</span> 3819 3820 <span class="i">@NbrAtomsSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3821 <span class="i">@NbrAtomsBondSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'$'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'$'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3822 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondNeighborhoodKeys</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> \<span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3823 <span class="s">}</span> 3824 3825 <span class="c"># Generate 322 keyset key 15 value as 1/0 indicating its presence/absence or</span> 3826 <span class="c"># count of its presence in a molecule.</span> 3827 <span class="c">#</span> 3828 <span class="c"># Key 15 description: Anot%A%Anot%A - atom is at an aromatic/nonaromatic boundary.</span> 3829 <span class="c"># When a comparison is done with another atom the path passes through the aromatic bond.</span> 3830 <span class="c">#</span> <a name="_Generate322KeySetKey15-"></a>3831 <span class="k">sub </span><span class="m">_Generate322KeySetKey15</span> <span class="s">{</span> 3832 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3833 <span class="k">my</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3834 3835 <span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="s">)</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3836 <span class="i">$BondSymbol</span> = <span class="q">'%'</span><span class="sc">;</span> 3837 3838 <span class="i">@NbrAtomsSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3839 <span class="i">@NbrAtomsBondSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'not%'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'not%'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3840 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondNeighborhoodKeys</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> \<span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3841 <span class="s">}</span> 3842 3843 <span class="c"># Generate 322 keyset key 16 value as 1/0 indicating its presence/absence or</span> 3844 <span class="c"># count of its presence in a molecule.</span> 3845 <span class="c">#</span> 3846 <span class="c"># Key 16 description: A!A!A - atom with more than one chain bond</span> 3847 <span class="c">#</span> <a name="_Generate322KeySetKey16-"></a>3848 <span class="k">sub </span><span class="m">_Generate322KeySetKey16</span> <span class="s">{</span> 3849 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3850 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3851 3852 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 3853 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3854 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="q">'!'</span><span class="cm">,</span> <span class="q">'!'</span><span class="s">)</span><span class="sc">;</span> 3855 3856 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3857 <span class="s">}</span> 3858 3859 <span class="c"># Generate 322 keyset key 17 value as 1/0 indicating its presence/absence or</span> 3860 <span class="c"># count of its presence in a molecule.</span> 3861 <span class="c">#</span> 3862 <span class="c"># Key 17 description: A!A$A!A - atom is at a ring/chain boundary. When a comparison</span> 3863 <span class="c"># is done with another atom the path passes through the ring bond.</span> 3864 <span class="c">#</span> <a name="_Generate322KeySetKey17-"></a>3865 <span class="k">sub </span><span class="m">_Generate322KeySetKey17</span> <span class="s">{</span> 3866 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3867 <span class="k">my</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3868 3869 <span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="s">)</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3870 <span class="i">$BondSymbol</span> = <span class="q">'$'</span><span class="sc">;</span> 3871 3872 <span class="i">@NbrAtomsSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3873 <span class="i">@NbrAtomsBondSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'!'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'!'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3874 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondNeighborhoodKeys</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> \<span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3875 <span class="s">}</span> 3876 3877 <span class="c"># Generate 322 keyset key 18 value as 1/0 indicating its presence/absence or</span> 3878 <span class="c"># count of its presence in a molecule.</span> 3879 <span class="c">#</span> 3880 <span class="c"># Key 18 description: A%Anot%A%A - atom is at an aromatic/nonaromatic boundary.</span> 3881 <span class="c"># When a comparison is done with another atom the path passes through</span> 3882 <span class="c"># the nonaromatic bond</span> 3883 <span class="c">#</span> <a name="_Generate322KeySetKey18-"></a>3884 <span class="k">sub </span><span class="m">_Generate322KeySetKey18</span> <span class="s">{</span> 3885 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3886 <span class="k">my</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3887 3888 <span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="s">)</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 3889 <span class="i">$BondSymbol</span> = <span class="q">'not%'</span><span class="sc">;</span> 3890 3891 <span class="i">@NbrAtomsSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3892 <span class="i">@NbrAtomsBondSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'%'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'%'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 3893 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondNeighborhoodKeys</span><span class="s">(</span><span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomsSymbols</span><span class="cm">,</span> \<span class="i">@NbrAtomsBondSymbols</span><span class="s">)</span><span class="sc">;</span> 3894 <span class="s">}</span> 3895 3896 <span class="c"># Generate 322 keyset key 19 value as 1/0 indicating its presence/absence or</span> 3897 <span class="c"># count of its presence in a molecule.</span> 3898 <span class="c">#</span> 3899 <span class="c"># Key 19 description: HETEROCYCLE - atom is a heteroatom in a ring.</span> 3900 <span class="c">#</span> <a name="_Generate322KeySetKey19-"></a>3901 <span class="k">sub </span><span class="m">_Generate322KeySetKey19</span> <span class="s">{</span> 3902 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3903 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> 3904 3905 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'Q'</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="s">)</span><span class="sc">;</span> 3906 <span class="s">}</span> 3907 3908 <span class="c"># Generate 322 keyset key 20 value as 1/0 indicating its presence/absence or</span> 3909 <span class="c"># count of its presence in a molecule.</span> 3910 <span class="c">#</span> 3911 <span class="c"># Key 20 description: rare properties: atom with five or more neighbors, atom in four</span> 3912 <span class="c"># or more rings, or atom types other than H, C, N, O, S, F, Cl, Br, or I</span> 3913 <span class="c">#</span> <a name="_Generate322KeySetKey20-"></a>3914 <span class="k">sub </span><span class="m">_Generate322KeySetKey20</span> <span class="s">{</span> 3915 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3916 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 3917 3918 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 3919 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 3920 <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span> !~ <span class="q">/^(1|6|7|8|9|16|17|35|53)$/</span><span class="s">)</span> || <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetNumOfRings</span><span class="s">(</span><span class="s">)</span> >= <span class="n">4</span><span class="s">)</span> || <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetNumOfNeighbors</span><span class="s">(</span><span class="s">)</span> >= <span class="n">5</span><span class="s">)</span> <span class="s">)</span> <span class="s">{</span> 3921 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 3922 <span class="s">}</span> 3923 <span class="i">$KeyValue</span>++<span class="sc">;</span> 3924 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 3925 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 3926 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 3927 <span class="s">}</span> 3928 <span class="s">}</span> 3929 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3930 <span class="s">}</span> 3931 3932 <span class="c"># Generate 322 keyset key 21 value as 1/0 indicating its presence/absence or</span> 3933 <span class="c"># count of its presence in a molecule.</span> 3934 <span class="c">#</span> 3935 <span class="c"># Key 21 description: rare properties: atom has a charge, is an isotope, has</span> 3936 <span class="c"># two or more multiple bonds, or has a triple bond.</span> 3937 <span class="c">#</span> <a name="_Generate322KeySetKey21-"></a>3938 <span class="k">sub </span><span class="m">_Generate322KeySetKey21</span> <span class="s">{</span> 3939 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3940 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 3941 3942 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 3943 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 3944 <span class="k">if</span> <span class="s">(</span> !<span class="s">(</span><span class="i">$Atom</span><span class="i">->IsIsotope</span><span class="s">(</span><span class="s">)</span> || <span class="i">$Atom</span><span class="i">->GetFormalCharge</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">)</span> <span class="s">{</span> 3945 <span class="c"># Look for multiple and triple bonds...</span> 3946 <span class="k">my</span><span class="s">(</span><span class="i">$Bond</span><span class="cm">,</span> <span class="i">$NumOfTripleBonds</span><span class="cm">,</span> <span class="i">$NumOfMultipleBonds</span><span class="s">)</span><span class="sc">;</span> 3947 3948 <span class="s">(</span><span class="i">$NumOfTripleBonds</span><span class="cm">,</span> <span class="i">$NumOfMultipleBonds</span><span class="s">)</span> = <span class="s">(</span><span class="n">0</span><span class="cm">,</span> <span class="n">0</span><span class="s">)</span><span class="sc">;</span> 3949 <span class="j">BOND:</span> <span class="k">for</span> <span class="i">$Bond</span> <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetBonds</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 3950 <span class="k">if</span> <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsSingle</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> <span class="s">}</span> 3951 <span class="k">if</span> <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsDouble</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> <span class="i">$NumOfMultipleBonds</span>++<span class="sc">;</span> <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> <span class="s">}</span> 3952 <span class="k">if</span> <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsTriple</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> <span class="i">$NumOfTripleBonds</span>++<span class="sc">;</span> <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> <span class="s">}</span> 3953 <span class="s">}</span> 3954 <span class="k">if</span> <span class="s">(</span> !<span class="s">(</span><span class="i">$NumOfTripleBonds</span> || <span class="s">(</span><span class="i">$NumOfMultipleBonds</span> >= <span class="n">2</span><span class="s">)</span><span class="s">)</span> <span class="s">)</span> <span class="s">{</span> 3955 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 3956 <span class="s">}</span> 3957 <span class="s">}</span> 3958 <span class="i">$KeyValue</span>++<span class="sc">;</span> 3959 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 3960 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 3961 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 3962 <span class="s">}</span> 3963 <span class="s">}</span> 3964 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 3965 <span class="s">}</span> 3966 3967 <span class="c"># Generate 322 keyset key 22 value as 1/0 indicating its presence/absence or</span> 3968 <span class="c"># count of its presence in a molecule.</span> 3969 <span class="c">#</span> 3970 <span class="c"># Key 22 description: N - nitrogen</span> 3971 <span class="c">#</span> <a name="_Generate322KeySetKey22-"></a>3972 <span class="k">sub </span><span class="m">_Generate322KeySetKey22</span> <span class="s">{</span> 3973 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3974 3975 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 3976 <span class="s">}</span> 3977 3978 <span class="c"># Generate 322 keyset key 23 value as 1/0 indicating its presence/absence or</span> 3979 <span class="c"># count of its presence in a molecule.</span> 3980 <span class="c">#</span> 3981 <span class="c"># Key 23 description: S - sulfur</span> 3982 <span class="c">#</span> <a name="_Generate322KeySetKey23-"></a>3983 <span class="k">sub </span><span class="m">_Generate322KeySetKey23</span> <span class="s">{</span> 3984 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3985 3986 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'S'</span><span class="s">)</span><span class="sc">;</span> 3987 <span class="s">}</span> 3988 3989 <span class="c"># Generate 322 keyset key 24 value as 1/0 indicating its presence/absence or</span> 3990 <span class="c"># count of its presence in a molecule.</span> 3991 <span class="c">#</span> 3992 <span class="c"># Key 24 description: O - oxygen</span> 3993 <span class="c">#</span> <a name="_Generate322KeySetKey24-"></a>3994 <span class="k">sub </span><span class="m">_Generate322KeySetKey24</span> <span class="s">{</span> 3995 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 3996 3997 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomKeys</span><span class="s">(</span><span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 3998 <span class="s">}</span> 3999 4000 <span class="c"># Generate 322 keyset key 25 value as 1/0 indicating its presence/absence or</span> 4001 <span class="c"># count of its presence in a molecule.</span> 4002 <span class="c">#</span> 4003 <span class="c"># Key 25 description: A(AA)A(A)A(AA) - atom has two neighbors, each with</span> 4004 <span class="c"># three or more neighbors (including the central atom).</span> 4005 <span class="c">#</span> <a name="_Generate322KeySetKey25-"></a>4006 <span class="k">sub </span><span class="m">_Generate322KeySetKey25</span> <span class="s">{</span> 4007 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4008 <span class="k">my</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomsSymbols</span><span class="s">)</span><span class="sc">;</span> 4009 4010 <span class="i">@CentralAtomsSymbols</span> = <span class="s">(</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">)</span><span class="sc">;</span> 4011 <span class="i">@NbrAtomsSymbols</span> = <span class="s">(</span><span class="s">[</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="s">]</span><span class="cm">,</span> <span class="s">[</span><span class="q">'A'</span><span class="cm">,</span> <span class="q">'A'</span><span class="s">]</span><span class="s">)</span><span class="sc">;</span> 4012 4013 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectExtendedAtomNeighborhoodKeys</span><span class="s">(</span>\<span class="i">@CentralAtomsSymbols</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> \<span class="i">@NbrAtomsSymbols</span><span class="s">)</span><span class="sc">;</span> 4014 <span class="s">}</span> 4015 4016 <span class="c"># Generate 322 keyset key 26 value as 1/0 indicating its presence/absence or</span> 4017 <span class="c"># count of its presence in a molecule.</span> 4018 <span class="c">#</span> 4019 <span class="c"># Key 26 description: CH2ACH2 - atom has two hydrocarbon (CH2) neighbors</span> 4020 <span class="c">#</span> <a name="_Generate322KeySetKey26-"></a>4021 <span class="k">sub </span><span class="m">_Generate322KeySetKey26</span> <span class="s">{</span> 4022 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4023 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 4024 4025 <span class="i">$CentralAtomSymbol</span> = <span class="q">'A'</span><span class="sc">;</span> 4026 <span class="i">$CentralAtomMinHydrogenCount</span> = <span class="k">undef</span><span class="sc">;</span> 4027 4028 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 4029 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4030 <span class="i">@NbrAtomMinHydrogenCount</span> = <span class="s">(</span><span class="n">2</span><span class="cm">,</span> <span class="n">2</span><span class="s">)</span><span class="sc">;</span> 4031 4032 <span class="i">$MinKeyCount</span> = <span class="k">undef</span><span class="sc">;</span> 4033 4034 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 4035 <span class="s">}</span> 4036 4037 <span class="c"># Generate 322 keyset key 27 value as 1/0 indicating its presence/absence or</span> 4038 <span class="c"># count of its presence in a molecule.</span> 4039 <span class="c">#</span> 4040 <span class="c"># Key 27 description: C(CC)</span> 4041 <span class="c">#</span> <a name="_Generate322KeySetKey27-"></a>4042 <span class="k">sub </span><span class="m">_Generate322KeySetKey27</span> <span class="s">{</span> 4043 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4044 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4045 4046 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4047 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 4048 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4049 4050 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4051 <span class="s">}</span> 4052 4053 <span class="c"># Generate 322 keyset key 28 value as 1/0 indicating its presence/absence or</span> 4054 <span class="c"># count of its presence in a molecule.</span> 4055 <span class="c">#</span> 4056 <span class="c"># Key 28 description: C(CCC)</span> 4057 <span class="c">#</span> <a name="_Generate322KeySetKey28-"></a>4058 <span class="k">sub </span><span class="m">_Generate322KeySetKey28</span> <span class="s">{</span> 4059 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4060 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4061 4062 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4063 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 4064 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4065 4066 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4067 <span class="s">}</span> 4068 4069 <span class="c"># Generate 322 keyset key 29 value as 1/0 indicating its presence/absence or</span> 4070 <span class="c"># count of its presence in a molecule.</span> 4071 <span class="c">#</span> 4072 <span class="c"># Key 29 description: C(CN)</span> 4073 <span class="c">#</span> <a name="_Generate322KeySetKey29-"></a>4074 <span class="k">sub </span><span class="m">_Generate322KeySetKey29</span> <span class="s">{</span> 4075 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4076 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4077 4078 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4079 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4080 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4081 4082 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4083 <span class="s">}</span> 4084 4085 <span class="c"># Generate 322 keyset key 30 value as 1/0 indicating its presence/absence or</span> 4086 <span class="c"># count of its presence in a molecule.</span> 4087 <span class="c">#</span> 4088 <span class="c"># Key 30 description: C(CCN)</span> 4089 <span class="c">#</span> <a name="_Generate322KeySetKey30-"></a>4090 <span class="k">sub </span><span class="m">_Generate322KeySetKey30</span> <span class="s">{</span> 4091 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4092 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4093 4094 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4095 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4096 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4097 4098 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4099 <span class="s">}</span> 4100 4101 <span class="c"># Generate 322 keyset key 31 value as 1/0 indicating its presence/absence or</span> 4102 <span class="c"># count of its presence in a molecule.</span> 4103 <span class="c">#</span> 4104 <span class="c"># Key 31 description: C(NN)</span> 4105 <span class="c">#</span> <a name="_Generate322KeySetKey31-"></a>4106 <span class="k">sub </span><span class="m">_Generate322KeySetKey31</span> <span class="s">{</span> 4107 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4108 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4109 4110 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4111 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4112 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4113 4114 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4115 <span class="s">}</span> 4116 4117 <span class="c"># Generate 322 keyset key 32 value as 1/0 indicating its presence/absence or</span> 4118 <span class="c"># count of its presence in a molecule.</span> 4119 <span class="c">#</span> 4120 <span class="c"># Key 32 description: C(NNC)</span> 4121 <span class="c">#</span> <a name="_Generate322KeySetKey32-"></a>4122 <span class="k">sub </span><span class="m">_Generate322KeySetKey32</span> <span class="s">{</span> 4123 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4124 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4125 4126 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4127 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 4128 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4129 4130 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4131 <span class="s">}</span> 4132 4133 <span class="c"># Generate 322 keyset key 33 value as 1/0 indicating its presence/absence or</span> 4134 <span class="c"># count of its presence in a molecule.</span> 4135 <span class="c">#</span> 4136 <span class="c"># Key 33 description: C(NNN)</span> 4137 <span class="c">#</span> <a name="_Generate322KeySetKey33-"></a>4138 <span class="k">sub </span><span class="m">_Generate322KeySetKey33</span> <span class="s">{</span> 4139 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4140 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4141 4142 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4143 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4144 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4145 4146 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4147 <span class="s">}</span> 4148 4149 <span class="c"># Generate 322 keyset key 34 value as 1/0 indicating its presence/absence or</span> 4150 <span class="c"># count of its presence in a molecule.</span> 4151 <span class="c">#</span> 4152 <span class="c"># Key 34 description: C(CO)</span> 4153 <span class="c">#</span> <a name="_Generate322KeySetKey34-"></a>4154 <span class="k">sub </span><span class="m">_Generate322KeySetKey34</span> <span class="s">{</span> 4155 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4156 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4157 4158 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4159 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4160 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4161 4162 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4163 <span class="s">}</span> 4164 4165 <span class="c"># Generate 322 keyset key 35 value as 1/0 indicating its presence/absence or</span> 4166 <span class="c"># count of its presence in a molecule.</span> 4167 <span class="c">#</span> 4168 <span class="c"># Key 35 description: C(CCO)</span> 4169 <span class="c">#</span> <a name="_Generate322KeySetKey35-"></a>4170 <span class="k">sub </span><span class="m">_Generate322KeySetKey35</span> <span class="s">{</span> 4171 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4172 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4173 4174 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4175 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4176 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4177 4178 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4179 <span class="s">}</span> 4180 4181 <span class="c"># Generate 322 keyset key 36 value as 1/0 indicating its presence/absence or</span> 4182 <span class="c"># count of its presence in a molecule.</span> 4183 <span class="c">#</span> 4184 <span class="c"># Key 36 description: C(NO)</span> 4185 <span class="c">#</span> <a name="_Generate322KeySetKey36-"></a>4186 <span class="k">sub </span><span class="m">_Generate322KeySetKey36</span> <span class="s">{</span> 4187 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4188 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4189 4190 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4191 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4192 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4193 4194 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4195 <span class="s">}</span> 4196 4197 <span class="c"># Generate 322 keyset key 37 value as 1/0 indicating its presence/absence or</span> 4198 <span class="c"># count of its presence in a molecule.</span> 4199 <span class="c">#</span> 4200 <span class="c"># Key 37 description: C(NCO)</span> 4201 <span class="c">#</span> <a name="_Generate322KeySetKey37-"></a>4202 <span class="k">sub </span><span class="m">_Generate322KeySetKey37</span> <span class="s">{</span> 4203 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4204 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4205 4206 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4207 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4208 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4209 4210 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4211 <span class="s">}</span> 4212 4213 <span class="c"># Generate 322 keyset key 38 value as 1/0 indicating its presence/absence or</span> 4214 <span class="c"># count of its presence in a molecule.</span> 4215 <span class="c">#</span> 4216 <span class="c"># Key 38 description: C(NNO)</span> 4217 <span class="c">#</span> <a name="_Generate322KeySetKey38-"></a>4218 <span class="k">sub </span><span class="m">_Generate322KeySetKey38</span> <span class="s">{</span> 4219 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4220 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4221 4222 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4223 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4224 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4225 4226 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4227 <span class="s">}</span> 4228 4229 <span class="c"># Generate 322 keyset key 39 value as 1/0 indicating its presence/absence or</span> 4230 <span class="c"># count of its presence in a molecule.</span> 4231 <span class="c">#</span> 4232 <span class="c"># Key 39 description: C(OO)</span> 4233 <span class="c">#</span> <a name="_Generate322KeySetKey39-"></a>4234 <span class="k">sub </span><span class="m">_Generate322KeySetKey39</span> <span class="s">{</span> 4235 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4236 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4237 4238 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4239 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4240 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4241 4242 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4243 <span class="s">}</span> 4244 4245 <span class="c"># Generate 322 keyset key 40 value as 1/0 indicating its presence/absence or</span> 4246 <span class="c"># count of its presence in a molecule.</span> 4247 <span class="c">#</span> 4248 <span class="c"># Key 40 description: C(COO)</span> 4249 <span class="c">#</span> <a name="_Generate322KeySetKey40-"></a>4250 <span class="k">sub </span><span class="m">_Generate322KeySetKey40</span> <span class="s">{</span> 4251 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4252 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4253 4254 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4255 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4256 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4257 4258 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4259 <span class="s">}</span> 4260 4261 <span class="c"># Generate 322 keyset key 41 value as 1/0 indicating its presence/absence or</span> 4262 <span class="c"># count of its presence in a molecule.</span> 4263 <span class="c">#</span> 4264 <span class="c"># Key 41 description: C(NOO)</span> 4265 <span class="c">#</span> <a name="_Generate322KeySetKey41-"></a>4266 <span class="k">sub </span><span class="m">_Generate322KeySetKey41</span> <span class="s">{</span> 4267 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4268 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4269 4270 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4271 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4272 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4273 4274 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4275 <span class="s">}</span> 4276 4277 <span class="c"># Generate 322 keyset key 42 value as 1/0 indicating its presence/absence or</span> 4278 <span class="c"># count of its presence in a molecule.</span> 4279 <span class="c">#</span> 4280 <span class="c"># Key 42 description: C(OOO)</span> 4281 <span class="c">#</span> <a name="_Generate322KeySetKey42-"></a>4282 <span class="k">sub </span><span class="m">_Generate322KeySetKey42</span> <span class="s">{</span> 4283 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4284 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4285 4286 <span class="i">$CentralAtomSymbol</span> = <span class="q">'C'</span><span class="sc">;</span> 4287 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4288 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4289 4290 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4291 <span class="s">}</span> 4292 4293 <span class="c"># Generate 322 keyset key 43 value as 1/0 indicating its presence/absence or</span> 4294 <span class="c"># count of its presence in a molecule.</span> 4295 <span class="c">#</span> 4296 <span class="c"># Key 43 description: Q(CC)</span> 4297 <span class="c">#</span> <a name="_Generate322KeySetKey43-"></a>4298 <span class="k">sub </span><span class="m">_Generate322KeySetKey43</span> <span class="s">{</span> 4299 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4300 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4301 4302 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4303 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 4304 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4305 4306 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4307 <span class="s">}</span> 4308 4309 <span class="c"># Generate 322 keyset key 44 value as 1/0 indicating its presence/absence or</span> 4310 <span class="c"># count of its presence in a molecule.</span> 4311 <span class="c">#</span> 4312 <span class="c"># Key 44 description: Q(CCC)</span> 4313 <span class="c">#</span> <a name="_Generate322KeySetKey44-"></a>4314 <span class="k">sub </span><span class="m">_Generate322KeySetKey44</span> <span class="s">{</span> 4315 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4316 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4317 4318 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4319 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="s">)</span><span class="sc">;</span> 4320 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4321 4322 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4323 <span class="s">}</span> 4324 4325 <span class="c"># Generate 322 keyset key 45 value as 1/0 indicating its presence/absence or</span> 4326 <span class="c"># count of its presence in a molecule.</span> 4327 <span class="c">#</span> 4328 <span class="c"># Key 45 description: Q(CN)</span> 4329 <span class="c">#</span> <a name="_Generate322KeySetKey45-"></a>4330 <span class="k">sub </span><span class="m">_Generate322KeySetKey45</span> <span class="s">{</span> 4331 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4332 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4333 4334 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4335 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4336 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4337 4338 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4339 <span class="s">}</span> 4340 4341 <span class="c"># Generate 322 keyset key 46 value as 1/0 indicating its presence/absence or</span> 4342 <span class="c"># count of its presence in a molecule.</span> 4343 <span class="c">#</span> 4344 <span class="c"># Key 46 description: Q(CCN)</span> 4345 <span class="c">#</span> <a name="_Generate322KeySetKey46-"></a>4346 <span class="k">sub </span><span class="m">_Generate322KeySetKey46</span> <span class="s">{</span> 4347 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4348 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4349 4350 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4351 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4352 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4353 4354 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4355 <span class="s">}</span> 4356 4357 <span class="c"># Generate 322 keyset key 47 value as 1/0 indicating its presence/absence or</span> 4358 <span class="c"># count of its presence in a molecule.</span> 4359 <span class="c">#</span> 4360 <span class="c"># Key 47 description: Q(NN)</span> 4361 <span class="c">#</span> <a name="_Generate322KeySetKey47-"></a>4362 <span class="k">sub </span><span class="m">_Generate322KeySetKey47</span> <span class="s">{</span> 4363 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4364 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4365 4366 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4367 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4368 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4369 4370 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4371 <span class="s">}</span> 4372 4373 <span class="c"># Generate 322 keyset key 48 value as 1/0 indicating its presence/absence or</span> 4374 <span class="c"># count of its presence in a molecule.</span> 4375 <span class="c">#</span> 4376 <span class="c"># Key 48 description: Q(CNN)</span> 4377 <span class="c">#</span> <a name="_Generate322KeySetKey48-"></a>4378 <span class="k">sub </span><span class="m">_Generate322KeySetKey48</span> <span class="s">{</span> 4379 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4380 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4381 4382 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4383 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4384 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4385 4386 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4387 <span class="s">}</span> 4388 4389 <span class="c"># Generate 322 keyset key 49 value as 1/0 indicating its presence/absence or</span> 4390 <span class="c"># count of its presence in a molecule.</span> 4391 <span class="c">#</span> 4392 <span class="c"># Key 49 description: Q(NNN)</span> 4393 <span class="c">#</span> <a name="_Generate322KeySetKey49-"></a>4394 <span class="k">sub </span><span class="m">_Generate322KeySetKey49</span> <span class="s">{</span> 4395 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4396 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4397 4398 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4399 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="s">)</span><span class="sc">;</span> 4400 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4401 4402 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4403 <span class="s">}</span> 4404 4405 <span class="c"># Generate 322 keyset key 50 value as 1/0 indicating its presence/absence or</span> 4406 <span class="c"># count of its presence in a molecule.</span> 4407 <span class="c">#</span> 4408 <span class="c"># Key 50 description: Q(CO)</span> 4409 <span class="c">#</span> <a name="_Generate322KeySetKey50-"></a>4410 <span class="k">sub </span><span class="m">_Generate322KeySetKey50</span> <span class="s">{</span> 4411 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4412 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4413 4414 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4415 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4416 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4417 4418 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4419 <span class="s">}</span> 4420 4421 <span class="c"># Generate 322 keyset key 51 value as 1/0 indicating its presence/absence or</span> 4422 <span class="c"># count of its presence in a molecule.</span> 4423 <span class="c">#</span> 4424 <span class="c"># Key 51 description: Q(CCO)</span> 4425 <span class="c">#</span> <a name="_Generate322KeySetKey51-"></a>4426 <span class="k">sub </span><span class="m">_Generate322KeySetKey51</span> <span class="s">{</span> 4427 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4428 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4429 4430 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4431 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4432 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4433 4434 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4435 <span class="s">}</span> 4436 4437 <span class="c"># Generate 322 keyset key 52 value as 1/0 indicating its presence/absence or</span> 4438 <span class="c"># count of its presence in a molecule.</span> 4439 <span class="c">#</span> 4440 <span class="c"># Key 52 description: Q(NO)</span> 4441 <span class="c">#</span> <a name="_Generate322KeySetKey52-"></a>4442 <span class="k">sub </span><span class="m">_Generate322KeySetKey52</span> <span class="s">{</span> 4443 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4444 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4445 4446 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4447 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4448 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4449 4450 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4451 <span class="s">}</span> 4452 4453 <span class="c"># Generate 322 keyset key 53 value as 1/0 indicating its presence/absence or</span> 4454 <span class="c"># count of its presence in a molecule.</span> 4455 <span class="c">#</span> 4456 <span class="c"># Key 53 description: Q(CNO)</span> 4457 <span class="c">#</span> <a name="_Generate322KeySetKey53-"></a>4458 <span class="k">sub </span><span class="m">_Generate322KeySetKey53</span> <span class="s">{</span> 4459 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4460 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4461 4462 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4463 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4464 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4465 4466 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4467 <span class="s">}</span> 4468 4469 <span class="c"># Generate 322 keyset key 54 value as 1/0 indicating its presence/absence or</span> 4470 <span class="c"># count of its presence in a molecule.</span> 4471 <span class="c">#</span> 4472 <span class="c"># Key 54 description: Q(NNO)</span> 4473 <span class="c">#</span> <a name="_Generate322KeySetKey54-"></a>4474 <span class="k">sub </span><span class="m">_Generate322KeySetKey54</span> <span class="s">{</span> 4475 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4476 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4477 4478 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4479 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4480 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4481 4482 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4483 <span class="s">}</span> 4484 4485 <span class="c"># Generate 322 keyset key 55 value as 1/0 indicating its presence/absence or</span> 4486 <span class="c"># count of its presence in a molecule.</span> 4487 <span class="c">#</span> 4488 <span class="c"># Key 55 description: Q(OO)</span> 4489 <span class="c">#</span> <a name="_Generate322KeySetKey55-"></a>4490 <span class="k">sub </span><span class="m">_Generate322KeySetKey55</span> <span class="s">{</span> 4491 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4492 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4493 4494 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4495 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4496 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4497 4498 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4499 <span class="s">}</span> 4500 4501 <span class="c"># Generate 322 keyset key 56 value as 1/0 indicating its presence/absence or</span> 4502 <span class="c"># count of its presence in a molecule.</span> 4503 <span class="c">#</span> 4504 <span class="c"># Key 56 description: Q(COO)</span> 4505 <span class="c">#</span> <a name="_Generate322KeySetKey56-"></a>4506 <span class="k">sub </span><span class="m">_Generate322KeySetKey56</span> <span class="s">{</span> 4507 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4508 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4509 4510 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4511 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4512 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4513 4514 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4515 <span class="s">}</span> 4516 4517 <span class="c"># Generate 322 keyset key 57 value as 1/0 indicating its presence/absence or</span> 4518 <span class="c"># count of its presence in a molecule.</span> 4519 <span class="c">#</span> 4520 <span class="c"># Key 57 description: Q(NOO)</span> 4521 <span class="c">#</span> <a name="_Generate322KeySetKey57-"></a>4522 <span class="k">sub </span><span class="m">_Generate322KeySetKey57</span> <span class="s">{</span> 4523 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4524 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4525 4526 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4527 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4528 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4529 4530 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4531 <span class="s">}</span> 4532 4533 <span class="c"># Generate 322 keyset key 58 value as 1/0 indicating its presence/absence or</span> 4534 <span class="c"># count of its presence in a molecule.</span> 4535 <span class="c">#</span> 4536 <span class="c"># Key 58 description: Q(OOO)</span> 4537 <span class="c">#</span> <a name="_Generate322KeySetKey58-"></a>4538 <span class="k">sub </span><span class="m">_Generate322KeySetKey58</span> <span class="s">{</span> 4539 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4540 <span class="k">my</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4541 4542 <span class="i">$CentralAtomSymbol</span> = <span class="q">'Q'</span><span class="sc">;</span> 4543 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="s">)</span><span class="sc">;</span> 4544 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 4545 4546 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectAtomNeighborhoodKeys</span><span class="s">(</span><span class="i">$CentralAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="s">)</span><span class="sc">;</span> 4547 <span class="s">}</span> 4548 4549 <span class="c"># Generate 322 keyset key 59 value as 1/0 indicating its presence/absence or</span> 4550 <span class="c"># count of its presence in a molecule.</span> 4551 <span class="c">#</span> 4552 <span class="c"># Key 59 description: C-C</span> 4553 <span class="c">#</span> <a name="_Generate322KeySetKey59-"></a>4554 <span class="k">sub </span><span class="m">_Generate322KeySetKey59</span> <span class="s">{</span> 4555 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4556 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4557 4558 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4559 <span class="s">}</span> 4560 4561 <span class="c"># Generate 322 keyset key 60 value as 1/0 indicating its presence/absence or</span> 4562 <span class="c"># count of its presence in a molecule.</span> 4563 <span class="c">#</span> 4564 <span class="c"># Key 60 description: C-N</span> 4565 <span class="c">#</span> <a name="_Generate322KeySetKey60-"></a>4566 <span class="k">sub </span><span class="m">_Generate322KeySetKey60</span> <span class="s">{</span> 4567 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4568 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4569 4570 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4571 <span class="s">}</span> 4572 4573 <span class="c"># Generate 322 keyset key 61 value as 1/0 indicating its presence/absence or</span> 4574 <span class="c"># count of its presence in a molecule.</span> 4575 <span class="c">#</span> 4576 <span class="c"># Key 61 description: C-O</span> 4577 <span class="c">#</span> <a name="_Generate322KeySetKey61-"></a>4578 <span class="k">sub </span><span class="m">_Generate322KeySetKey61</span> <span class="s">{</span> 4579 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4580 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4581 4582 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4583 <span class="s">}</span> 4584 4585 <span class="c"># Generate 322 keyset key 62 value as 1/0 indicating its presence/absence or</span> 4586 <span class="c"># count of its presence in a molecule.</span> 4587 <span class="c">#</span> 4588 <span class="c"># Key 62 description: C-S</span> 4589 <span class="c">#</span> <a name="_Generate322KeySetKey62-"></a>4590 <span class="k">sub </span><span class="m">_Generate322KeySetKey62</span> <span class="s">{</span> 4591 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4592 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4593 4594 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4595 <span class="s">}</span> 4596 4597 <span class="c"># Generate 322 keyset key 63 value as 1/0 indicating its presence/absence or</span> 4598 <span class="c"># count of its presence in a molecule.</span> 4599 <span class="c">#</span> 4600 <span class="c"># Key 63 description: C-Cl</span> 4601 <span class="c">#</span> <a name="_Generate322KeySetKey63-"></a>4602 <span class="k">sub </span><span class="m">_Generate322KeySetKey63</span> <span class="s">{</span> 4603 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4604 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4605 4606 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4607 <span class="s">}</span> 4608 4609 <span class="c"># Generate 322 keyset key 64 value as 1/0 indicating its presence/absence or</span> 4610 <span class="c"># count of its presence in a molecule.</span> 4611 <span class="c">#</span> 4612 <span class="c"># Key 64 description: C-P</span> 4613 <span class="c">#</span> <a name="_Generate322KeySetKey64-"></a>4614 <span class="k">sub </span><span class="m">_Generate322KeySetKey64</span> <span class="s">{</span> 4615 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4616 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4617 4618 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4619 <span class="s">}</span> 4620 4621 <span class="c"># Generate 322 keyset key 65 value as 1/0 indicating its presence/absence or</span> 4622 <span class="c"># count of its presence in a molecule.</span> 4623 <span class="c">#</span> 4624 <span class="c"># Key 65 description: C-F</span> 4625 <span class="c">#</span> <a name="_Generate322KeySetKey65-"></a>4626 <span class="k">sub </span><span class="m">_Generate322KeySetKey65</span> <span class="s">{</span> 4627 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4628 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4629 4630 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4631 <span class="s">}</span> 4632 4633 <span class="c"># Generate 322 keyset key 66 value as 1/0 indicating its presence/absence or</span> 4634 <span class="c"># count of its presence in a molecule.</span> 4635 <span class="c">#</span> 4636 <span class="c"># Key 66 description: C-Br</span> 4637 <span class="c">#</span> <a name="_Generate322KeySetKey66-"></a>4638 <span class="k">sub </span><span class="m">_Generate322KeySetKey66</span> <span class="s">{</span> 4639 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4640 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4641 4642 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4643 <span class="s">}</span> 4644 4645 <span class="c"># Generate 322 keyset key 67 value as 1/0 indicating its presence/absence or</span> 4646 <span class="c"># count of its presence in a molecule.</span> 4647 <span class="c">#</span> 4648 <span class="c"># Key 67 description: C-Si</span> 4649 <span class="c">#</span> <a name="_Generate322KeySetKey67-"></a>4650 <span class="k">sub </span><span class="m">_Generate322KeySetKey67</span> <span class="s">{</span> 4651 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4652 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4653 4654 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4655 <span class="s">}</span> 4656 4657 <span class="c"># Generate 322 keyset key 68 value as 1/0 indicating its presence/absence or</span> 4658 <span class="c"># count of its presence in a molecule.</span> 4659 <span class="c">#</span> 4660 <span class="c"># Key 68 description: C-I</span> 4661 <span class="c">#</span> <a name="_Generate322KeySetKey68-"></a>4662 <span class="k">sub </span><span class="m">_Generate322KeySetKey68</span> <span class="s">{</span> 4663 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4664 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4665 4666 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4667 <span class="s">}</span> 4668 4669 <span class="c"># Generate 322 keyset key 69 value as 1/0 indicating its presence/absence or</span> 4670 <span class="c"># count of its presence in a molecule.</span> 4671 <span class="c">#</span> 4672 <span class="c"># Key 69 description: C-X</span> 4673 <span class="c">#</span> <a name="_Generate322KeySetKey69-"></a>4674 <span class="k">sub </span><span class="m">_Generate322KeySetKey69</span> <span class="s">{</span> 4675 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4676 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4677 4678 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4679 <span class="s">}</span> 4680 4681 <span class="c"># Generate 322 keyset key 70 value as 1/0 indicating its presence/absence or</span> 4682 <span class="c"># count of its presence in a molecule.</span> 4683 <span class="c">#</span> 4684 <span class="c"># Key 70 description: N-N</span> 4685 <span class="c">#</span> <a name="_Generate322KeySetKey70-"></a>4686 <span class="k">sub </span><span class="m">_Generate322KeySetKey70</span> <span class="s">{</span> 4687 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4688 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4689 4690 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4691 <span class="s">}</span> 4692 4693 <span class="c"># Generate 322 keyset key 71 value as 1/0 indicating its presence/absence or</span> 4694 <span class="c"># count of its presence in a molecule.</span> 4695 <span class="c">#</span> 4696 <span class="c"># Key 71 description: N-O</span> 4697 <span class="c">#</span> <a name="_Generate322KeySetKey71-"></a>4698 <span class="k">sub </span><span class="m">_Generate322KeySetKey71</span> <span class="s">{</span> 4699 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4700 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4701 4702 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4703 <span class="s">}</span> 4704 4705 <span class="c"># Generate 322 keyset key 72 value as 1/0 indicating its presence/absence or</span> 4706 <span class="c"># count of its presence in a molecule.</span> 4707 <span class="c">#</span> 4708 <span class="c"># Key 72 description: N-S</span> 4709 <span class="c">#</span> <a name="_Generate322KeySetKey72-"></a>4710 <span class="k">sub </span><span class="m">_Generate322KeySetKey72</span> <span class="s">{</span> 4711 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4712 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4713 4714 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4715 <span class="s">}</span> 4716 4717 <span class="c"># Generate 322 keyset key 73 value as 1/0 indicating its presence/absence or</span> 4718 <span class="c"># count of its presence in a molecule.</span> 4719 <span class="c">#</span> 4720 <span class="c"># Key 73 description: N-Cl</span> 4721 <span class="c">#</span> <a name="_Generate322KeySetKey73-"></a>4722 <span class="k">sub </span><span class="m">_Generate322KeySetKey73</span> <span class="s">{</span> 4723 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4724 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4725 4726 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4727 <span class="s">}</span> 4728 4729 <span class="c"># Generate 322 keyset key 74 value as 1/0 indicating its presence/absence or</span> 4730 <span class="c"># count of its presence in a molecule.</span> 4731 <span class="c">#</span> 4732 <span class="c"># Key 74 description: N-P</span> 4733 <span class="c">#</span> <a name="_Generate322KeySetKey74-"></a>4734 <span class="k">sub </span><span class="m">_Generate322KeySetKey74</span> <span class="s">{</span> 4735 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4736 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4737 4738 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4739 <span class="s">}</span> 4740 4741 <span class="c"># Generate 322 keyset key 75 value as 1/0 indicating its presence/absence or</span> 4742 <span class="c"># count of its presence in a molecule.</span> 4743 <span class="c">#</span> 4744 <span class="c"># Key 75 description: N-F</span> 4745 <span class="c">#</span> <a name="_Generate322KeySetKey75-"></a>4746 <span class="k">sub </span><span class="m">_Generate322KeySetKey75</span> <span class="s">{</span> 4747 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4748 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4749 4750 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4751 <span class="s">}</span> 4752 4753 <span class="c"># Generate 322 keyset key 76 value as 1/0 indicating its presence/absence or</span> 4754 <span class="c"># count of its presence in a molecule.</span> 4755 <span class="c">#</span> 4756 <span class="c"># Key 76 description: N-Br</span> 4757 <span class="c">#</span> <a name="_Generate322KeySetKey76-"></a>4758 <span class="k">sub </span><span class="m">_Generate322KeySetKey76</span> <span class="s">{</span> 4759 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4760 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4761 4762 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4763 <span class="s">}</span> 4764 4765 <span class="c"># Generate 322 keyset key 77 value as 1/0 indicating its presence/absence or</span> 4766 <span class="c"># count of its presence in a molecule.</span> 4767 <span class="c">#</span> 4768 <span class="c"># Key 77 description: N-Si</span> 4769 <span class="c">#</span> <a name="_Generate322KeySetKey77-"></a>4770 <span class="k">sub </span><span class="m">_Generate322KeySetKey77</span> <span class="s">{</span> 4771 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4772 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4773 4774 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4775 <span class="s">}</span> 4776 4777 <span class="c"># Generate 322 keyset key 78 value as 1/0 indicating its presence/absence or</span> 4778 <span class="c"># count of its presence in a molecule.</span> 4779 <span class="c">#</span> 4780 <span class="c"># Key 78 description: N-I</span> 4781 <span class="c">#</span> <a name="_Generate322KeySetKey78-"></a>4782 <span class="k">sub </span><span class="m">_Generate322KeySetKey78</span> <span class="s">{</span> 4783 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4784 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4785 4786 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4787 <span class="s">}</span> 4788 4789 <span class="c"># Generate 322 keyset key 79 value as 1/0 indicating its presence/absence or</span> 4790 <span class="c"># count of its presence in a molecule.</span> 4791 <span class="c">#</span> 4792 <span class="c"># Key 79 description: N-X</span> 4793 <span class="c">#</span> <a name="_Generate322KeySetKey79-"></a>4794 <span class="k">sub </span><span class="m">_Generate322KeySetKey79</span> <span class="s">{</span> 4795 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4796 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4797 4798 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4799 <span class="s">}</span> 4800 4801 <span class="c"># Generate 322 keyset key 80 value as 1/0 indicating its presence/absence or</span> 4802 <span class="c"># count of its presence in a molecule.</span> 4803 <span class="c">#</span> 4804 <span class="c"># Key 80 description: O-O</span> 4805 <span class="c">#</span> <a name="_Generate322KeySetKey80-"></a>4806 <span class="k">sub </span><span class="m">_Generate322KeySetKey80</span> <span class="s">{</span> 4807 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4808 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4809 4810 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4811 <span class="s">}</span> 4812 4813 <span class="c"># Generate 322 keyset key 81 value as 1/0 indicating its presence/absence or</span> 4814 <span class="c"># count of its presence in a molecule.</span> 4815 <span class="c">#</span> 4816 <span class="c"># Key 81 description: O-S</span> 4817 <span class="c">#</span> <a name="_Generate322KeySetKey81-"></a>4818 <span class="k">sub </span><span class="m">_Generate322KeySetKey81</span> <span class="s">{</span> 4819 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4820 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4821 4822 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4823 <span class="s">}</span> 4824 4825 <span class="c"># Generate 322 keyset key 82 value as 1/0 indicating its presence/absence or</span> 4826 <span class="c"># count of its presence in a molecule.</span> 4827 <span class="c">#</span> 4828 <span class="c"># Key 82 description: O-Cl</span> 4829 <span class="c">#</span> <a name="_Generate322KeySetKey82-"></a>4830 <span class="k">sub </span><span class="m">_Generate322KeySetKey82</span> <span class="s">{</span> 4831 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4832 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4833 4834 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4835 <span class="s">}</span> 4836 4837 <span class="c"># Generate 322 keyset key 83 value as 1/0 indicating its presence/absence or</span> 4838 <span class="c"># count of its presence in a molecule.</span> 4839 <span class="c">#</span> 4840 <span class="c"># Key 83 description: O-P</span> 4841 <span class="c">#</span> <a name="_Generate322KeySetKey83-"></a>4842 <span class="k">sub </span><span class="m">_Generate322KeySetKey83</span> <span class="s">{</span> 4843 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4844 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4845 4846 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4847 <span class="s">}</span> 4848 4849 <span class="c"># Generate 322 keyset key 84 value as 1/0 indicating its presence/absence or</span> 4850 <span class="c"># count of its presence in a molecule.</span> 4851 <span class="c">#</span> 4852 <span class="c"># Key 84 description: O-F</span> 4853 <span class="c">#</span> <a name="_Generate322KeySetKey84-"></a>4854 <span class="k">sub </span><span class="m">_Generate322KeySetKey84</span> <span class="s">{</span> 4855 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4856 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4857 4858 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4859 <span class="s">}</span> 4860 4861 <span class="c"># Generate 322 keyset key 85 value as 1/0 indicating its presence/absence or</span> 4862 <span class="c"># count of its presence in a molecule.</span> 4863 <span class="c">#</span> 4864 <span class="c"># Key 85 description: O-Br</span> 4865 <span class="c">#</span> <a name="_Generate322KeySetKey85-"></a>4866 <span class="k">sub </span><span class="m">_Generate322KeySetKey85</span> <span class="s">{</span> 4867 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4868 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4869 4870 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4871 <span class="s">}</span> 4872 4873 <span class="c"># Generate 322 keyset key 86 value as 1/0 indicating its presence/absence or</span> 4874 <span class="c"># count of its presence in a molecule.</span> 4875 <span class="c">#</span> 4876 <span class="c"># Key 86 description: O-Si</span> 4877 <span class="c">#</span> <a name="_Generate322KeySetKey86-"></a>4878 <span class="k">sub </span><span class="m">_Generate322KeySetKey86</span> <span class="s">{</span> 4879 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4880 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4881 4882 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4883 <span class="s">}</span> 4884 4885 <span class="c"># Generate 322 keyset key 87 value as 1/0 indicating its presence/absence or</span> 4886 <span class="c"># count of its presence in a molecule.</span> 4887 <span class="c">#</span> 4888 <span class="c"># Key 87 description: O-I</span> 4889 <span class="c">#</span> <a name="_Generate322KeySetKey87-"></a>4890 <span class="k">sub </span><span class="m">_Generate322KeySetKey87</span> <span class="s">{</span> 4891 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4892 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4893 4894 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4895 <span class="s">}</span> 4896 4897 <span class="c"># Generate 322 keyset key 88 value as 1/0 indicating its presence/absence or</span> 4898 <span class="c"># count of its presence in a molecule.</span> 4899 <span class="c">#</span> 4900 <span class="c"># Key 88 description: O-X</span> 4901 <span class="c">#</span> <a name="_Generate322KeySetKey88-"></a>4902 <span class="k">sub </span><span class="m">_Generate322KeySetKey88</span> <span class="s">{</span> 4903 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4904 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4905 4906 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4907 <span class="s">}</span> 4908 4909 <span class="c"># Generate 322 keyset key 89 value as 1/0 indicating its presence/absence or</span> 4910 <span class="c"># count of its presence in a molecule.</span> 4911 <span class="c">#</span> 4912 <span class="c"># Key 89 description: S-S</span> 4913 <span class="c">#</span> <a name="_Generate322KeySetKey89-"></a>4914 <span class="k">sub </span><span class="m">_Generate322KeySetKey89</span> <span class="s">{</span> 4915 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4916 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4917 4918 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4919 <span class="s">}</span> 4920 4921 <span class="c"># Generate 322 keyset key 90 value as 1/0 indicating its presence/absence or</span> 4922 <span class="c"># count of its presence in a molecule.</span> 4923 <span class="c">#</span> 4924 <span class="c"># Key 90 description: S-Cl</span> 4925 <span class="c">#</span> <a name="_Generate322KeySetKey90-"></a>4926 <span class="k">sub </span><span class="m">_Generate322KeySetKey90</span> <span class="s">{</span> 4927 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4928 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4929 4930 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4931 <span class="s">}</span> 4932 4933 <span class="c"># Generate 322 keyset key 91 value as 1/0 indicating its presence/absence or</span> 4934 <span class="c"># count of its presence in a molecule.</span> 4935 <span class="c">#</span> 4936 <span class="c"># Key 91 description: S-P</span> 4937 <span class="c">#</span> <a name="_Generate322KeySetKey91-"></a>4938 <span class="k">sub </span><span class="m">_Generate322KeySetKey91</span> <span class="s">{</span> 4939 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4940 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4941 4942 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4943 <span class="s">}</span> 4944 4945 <span class="c"># Generate 322 keyset key 92 value as 1/0 indicating its presence/absence or</span> 4946 <span class="c"># count of its presence in a molecule.</span> 4947 <span class="c">#</span> 4948 <span class="c"># Key 92 description: S-F</span> 4949 <span class="c">#</span> <a name="_Generate322KeySetKey92-"></a>4950 <span class="k">sub </span><span class="m">_Generate322KeySetKey92</span> <span class="s">{</span> 4951 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4952 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4953 4954 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4955 <span class="s">}</span> 4956 4957 <span class="c"># Generate 322 keyset key 93 value as 1/0 indicating its presence/absence or</span> 4958 <span class="c"># count of its presence in a molecule.</span> 4959 <span class="c">#</span> 4960 <span class="c"># Key 93 description: S-Br</span> 4961 <span class="c">#</span> <a name="_Generate322KeySetKey93-"></a>4962 <span class="k">sub </span><span class="m">_Generate322KeySetKey93</span> <span class="s">{</span> 4963 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4964 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4965 4966 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4967 <span class="s">}</span> 4968 4969 <span class="c"># Generate 322 keyset key 94 value as 1/0 indicating its presence/absence or</span> 4970 <span class="c"># count of its presence in a molecule.</span> 4971 <span class="c">#</span> 4972 <span class="c"># Key 94 description: S-Si</span> 4973 <span class="c">#</span> <a name="_Generate322KeySetKey94-"></a>4974 <span class="k">sub </span><span class="m">_Generate322KeySetKey94</span> <span class="s">{</span> 4975 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4976 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4977 4978 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4979 <span class="s">}</span> 4980 4981 <span class="c"># Generate 322 keyset key 95 value as 1/0 indicating its presence/absence or</span> 4982 <span class="c"># count of its presence in a molecule.</span> 4983 <span class="c">#</span> 4984 <span class="c"># Key 95 description: S-I</span> 4985 <span class="c">#</span> <a name="_Generate322KeySetKey95-"></a>4986 <span class="k">sub </span><span class="m">_Generate322KeySetKey95</span> <span class="s">{</span> 4987 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 4988 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 4989 4990 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 4991 <span class="s">}</span> 4992 4993 <span class="c"># Generate 322 keyset key 96 value as 1/0 indicating its presence/absence or</span> 4994 <span class="c"># count of its presence in a molecule.</span> 4995 <span class="c">#</span> 4996 <span class="c"># Key 96 description: S-X</span> 4997 <span class="c">#</span> <a name="_Generate322KeySetKey96-"></a>4998 <span class="k">sub </span><span class="m">_Generate322KeySetKey96</span> <span class="s">{</span> 4999 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5000 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5001 5002 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5003 <span class="s">}</span> 5004 5005 <span class="c"># Generate 322 keyset key 97 value as 1/0 indicating its presence/absence or</span> 5006 <span class="c"># count of its presence in a molecule.</span> 5007 <span class="c">#</span> 5008 <span class="c"># Key 97 description: Cl-Cl</span> 5009 <span class="c">#</span> <a name="_Generate322KeySetKey97-"></a>5010 <span class="k">sub </span><span class="m">_Generate322KeySetKey97</span> <span class="s">{</span> 5011 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5012 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5013 5014 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5015 <span class="s">}</span> 5016 5017 <span class="c"># Generate 322 keyset key 98 value as 1/0 indicating its presence/absence or</span> 5018 <span class="c"># count of its presence in a molecule.</span> 5019 <span class="c">#</span> 5020 <span class="c"># Key 98 description: Cl-P</span> 5021 <span class="c">#</span> <a name="_Generate322KeySetKey98-"></a>5022 <span class="k">sub </span><span class="m">_Generate322KeySetKey98</span> <span class="s">{</span> 5023 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5024 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5025 5026 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5027 <span class="s">}</span> 5028 5029 <span class="c"># Generate 322 keyset key 99 value as 1/0 indicating its presence/absence or</span> 5030 <span class="c"># count of its presence in a molecule.</span> 5031 <span class="c">#</span> 5032 <span class="c"># Key 99 description: Cl-F</span> 5033 <span class="c">#</span> <a name="_Generate322KeySetKey99-"></a>5034 <span class="k">sub </span><span class="m">_Generate322KeySetKey99</span> <span class="s">{</span> 5035 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5036 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5037 5038 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5039 <span class="s">}</span> 5040 5041 <span class="c"># Generate 322 keyset key 100 value as 1/0 indicating its presence/absence or</span> 5042 <span class="c"># count of its presence in a molecule.</span> 5043 <span class="c">#</span> 5044 <span class="c"># Key 100 description: Cl-Br</span> 5045 <span class="c">#</span> <a name="_Generate322KeySetKey100-"></a>5046 <span class="k">sub </span><span class="m">_Generate322KeySetKey100</span> <span class="s">{</span> 5047 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5048 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5049 5050 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5051 <span class="s">}</span> 5052 5053 <span class="c"># Generate 322 keyset key 101 value as 1/0 indicating its presence/absence or</span> 5054 <span class="c"># count of its presence in a molecule.</span> 5055 <span class="c">#</span> 5056 <span class="c"># Key 101 description: Cl-Si</span> 5057 <span class="c">#</span> <a name="_Generate322KeySetKey101-"></a>5058 <span class="k">sub </span><span class="m">_Generate322KeySetKey101</span> <span class="s">{</span> 5059 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5060 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5061 5062 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5063 <span class="s">}</span> 5064 5065 <span class="c"># Generate 322 keyset key 102 value as 1/0 indicating its presence/absence or</span> 5066 <span class="c"># count of its presence in a molecule.</span> 5067 <span class="c">#</span> 5068 <span class="c"># Key 102 description: Cl-I</span> 5069 <span class="c">#</span> <a name="_Generate322KeySetKey102-"></a>5070 <span class="k">sub </span><span class="m">_Generate322KeySetKey102</span> <span class="s">{</span> 5071 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5072 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5073 5074 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5075 <span class="s">}</span> 5076 5077 <span class="c"># Generate 322 keyset key 103 value as 1/0 indicating its presence/absence or</span> 5078 <span class="c"># count of its presence in a molecule.</span> 5079 <span class="c">#</span> 5080 <span class="c"># Key 103 description: Cl-X</span> 5081 <span class="c">#</span> <a name="_Generate322KeySetKey103-"></a>5082 <span class="k">sub </span><span class="m">_Generate322KeySetKey103</span> <span class="s">{</span> 5083 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5084 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5085 5086 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5087 <span class="s">}</span> 5088 5089 <span class="c"># Generate 322 keyset key 104 value as 1/0 indicating its presence/absence or</span> 5090 <span class="c"># count of its presence in a molecule.</span> 5091 <span class="c">#</span> 5092 <span class="c"># Key 104 description: P-P</span> 5093 <span class="c">#</span> <a name="_Generate322KeySetKey104-"></a>5094 <span class="k">sub </span><span class="m">_Generate322KeySetKey104</span> <span class="s">{</span> 5095 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5096 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5097 5098 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5099 <span class="s">}</span> 5100 5101 <span class="c"># Generate 322 keyset key 105 value as 1/0 indicating its presence/absence or</span> 5102 <span class="c"># count of its presence in a molecule.</span> 5103 <span class="c">#</span> 5104 <span class="c"># Key 105 description: P-F</span> 5105 <span class="c">#</span> <a name="_Generate322KeySetKey105-"></a>5106 <span class="k">sub </span><span class="m">_Generate322KeySetKey105</span> <span class="s">{</span> 5107 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5108 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5109 5110 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5111 <span class="s">}</span> 5112 5113 <span class="c"># Generate 322 keyset key 106 value as 1/0 indicating its presence/absence or</span> 5114 <span class="c"># count of its presence in a molecule.</span> 5115 <span class="c">#</span> 5116 <span class="c"># Key 106 description: P-Br</span> 5117 <span class="c">#</span> <a name="_Generate322KeySetKey106-"></a>5118 <span class="k">sub </span><span class="m">_Generate322KeySetKey106</span> <span class="s">{</span> 5119 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5120 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5121 5122 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5123 <span class="s">}</span> 5124 5125 <span class="c"># Generate 322 keyset key 107 value as 1/0 indicating its presence/absence or</span> 5126 <span class="c"># count of its presence in a molecule.</span> 5127 <span class="c">#</span> 5128 <span class="c"># Key 107 description: P-Si</span> 5129 <span class="c">#</span> <a name="_Generate322KeySetKey107-"></a>5130 <span class="k">sub </span><span class="m">_Generate322KeySetKey107</span> <span class="s">{</span> 5131 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5132 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5133 5134 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5135 <span class="s">}</span> 5136 5137 <span class="c"># Generate 322 keyset key 108 value as 1/0 indicating its presence/absence or</span> 5138 <span class="c"># count of its presence in a molecule.</span> 5139 <span class="c">#</span> 5140 <span class="c"># Key 108 description: P-I</span> 5141 <span class="c">#</span> <a name="_Generate322KeySetKey108-"></a>5142 <span class="k">sub </span><span class="m">_Generate322KeySetKey108</span> <span class="s">{</span> 5143 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5144 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5145 5146 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5147 <span class="s">}</span> 5148 5149 <span class="c"># Generate 322 keyset key 109 value as 1/0 indicating its presence/absence or</span> 5150 <span class="c"># count of its presence in a molecule.</span> 5151 <span class="c">#</span> 5152 <span class="c"># Key 109 description: P-X</span> 5153 <span class="c">#</span> <a name="_Generate322KeySetKey109-"></a>5154 <span class="k">sub </span><span class="m">_Generate322KeySetKey109</span> <span class="s">{</span> 5155 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5156 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5157 5158 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5159 <span class="s">}</span> 5160 5161 <span class="c"># Generate 322 keyset key 110 value as 1/0 indicating its presence/absence or</span> 5162 <span class="c"># count of its presence in a molecule.</span> 5163 <span class="c">#</span> 5164 <span class="c"># Key 110 description: F-F</span> 5165 <span class="c">#</span> <a name="_Generate322KeySetKey110-"></a>5166 <span class="k">sub </span><span class="m">_Generate322KeySetKey110</span> <span class="s">{</span> 5167 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5168 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5169 5170 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5171 <span class="s">}</span> 5172 5173 <span class="c"># Generate 322 keyset key 111 value as 1/0 indicating its presence/absence or</span> 5174 <span class="c"># count of its presence in a molecule.</span> 5175 <span class="c">#</span> 5176 <span class="c"># Key 111 description: F-Br</span> 5177 <span class="c">#</span> <a name="_Generate322KeySetKey111-"></a>5178 <span class="k">sub </span><span class="m">_Generate322KeySetKey111</span> <span class="s">{</span> 5179 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5180 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5181 5182 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5183 <span class="s">}</span> 5184 5185 <span class="c"># Generate 322 keyset key 112 value as 1/0 indicating its presence/absence or</span> 5186 <span class="c"># count of its presence in a molecule.</span> 5187 <span class="c">#</span> 5188 <span class="c"># Key 112 description: F-Si</span> 5189 <span class="c">#</span> <a name="_Generate322KeySetKey112-"></a>5190 <span class="k">sub </span><span class="m">_Generate322KeySetKey112</span> <span class="s">{</span> 5191 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5192 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5193 5194 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5195 <span class="s">}</span> 5196 5197 <span class="c"># Generate 322 keyset key 113 value as 1/0 indicating its presence/absence or</span> 5198 <span class="c"># count of its presence in a molecule.</span> 5199 <span class="c">#</span> 5200 <span class="c"># Key 113 description: F-I</span> 5201 <span class="c">#</span> <a name="_Generate322KeySetKey113-"></a>5202 <span class="k">sub </span><span class="m">_Generate322KeySetKey113</span> <span class="s">{</span> 5203 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5204 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5205 5206 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5207 <span class="s">}</span> 5208 5209 <span class="c"># Generate 322 keyset key 114 value as 1/0 indicating its presence/absence or</span> 5210 <span class="c"># count of its presence in a molecule.</span> 5211 <span class="c">#</span> 5212 <span class="c"># Key 114 description: F-X</span> 5213 <span class="c">#</span> <a name="_Generate322KeySetKey114-"></a>5214 <span class="k">sub </span><span class="m">_Generate322KeySetKey114</span> <span class="s">{</span> 5215 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5216 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5217 5218 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5219 <span class="s">}</span> 5220 5221 <span class="c"># Generate 322 keyset key 115 value as 1/0 indicating its presence/absence or</span> 5222 <span class="c"># count of its presence in a molecule.</span> 5223 <span class="c">#</span> 5224 <span class="c"># Key 115 description: Br-Br</span> 5225 <span class="c">#</span> <a name="_Generate322KeySetKey115-"></a>5226 <span class="k">sub </span><span class="m">_Generate322KeySetKey115</span> <span class="s">{</span> 5227 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5228 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5229 5230 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5231 <span class="s">}</span> 5232 5233 <span class="c"># Generate 322 keyset key 116 value as 1/0 indicating its presence/absence or</span> 5234 <span class="c"># count of its presence in a molecule.</span> 5235 <span class="c">#</span> 5236 <span class="c"># Key 116 description: Br-Si</span> 5237 <span class="c">#</span> <a name="_Generate322KeySetKey116-"></a>5238 <span class="k">sub </span><span class="m">_Generate322KeySetKey116</span> <span class="s">{</span> 5239 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5240 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5241 5242 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5243 <span class="s">}</span> 5244 5245 <span class="c"># Generate 322 keyset key 117 value as 1/0 indicating its presence/absence or</span> 5246 <span class="c"># count of its presence in a molecule.</span> 5247 <span class="c">#</span> 5248 <span class="c"># Key 117 description: Br-I</span> 5249 <span class="c">#</span> <a name="_Generate322KeySetKey117-"></a>5250 <span class="k">sub </span><span class="m">_Generate322KeySetKey117</span> <span class="s">{</span> 5251 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5252 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5253 5254 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5255 <span class="s">}</span> 5256 5257 <span class="c"># Generate 322 keyset key 118 value as 1/0 indicating its presence/absence or</span> 5258 <span class="c"># count of its presence in a molecule.</span> 5259 <span class="c">#</span> 5260 <span class="c"># Key 118 description: Br-X</span> 5261 <span class="c">#</span> <a name="_Generate322KeySetKey118-"></a>5262 <span class="k">sub </span><span class="m">_Generate322KeySetKey118</span> <span class="s">{</span> 5263 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5264 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5265 5266 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5267 <span class="s">}</span> 5268 5269 <span class="c"># Generate 322 keyset key 119 value as 1/0 indicating its presence/absence or</span> 5270 <span class="c"># count of its presence in a molecule.</span> 5271 <span class="c">#</span> 5272 <span class="c"># Key 119 description: Si-Si</span> 5273 <span class="c">#</span> <a name="_Generate322KeySetKey119-"></a>5274 <span class="k">sub </span><span class="m">_Generate322KeySetKey119</span> <span class="s">{</span> 5275 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5276 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5277 5278 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5279 <span class="s">}</span> 5280 5281 <span class="c"># Generate 322 keyset key 120 value as 1/0 indicating its presence/absence or</span> 5282 <span class="c"># count of its presence in a molecule.</span> 5283 <span class="c">#</span> 5284 <span class="c"># Key 120 description: Si-I</span> 5285 <span class="c">#</span> <a name="_Generate322KeySetKey120-"></a>5286 <span class="k">sub </span><span class="m">_Generate322KeySetKey120</span> <span class="s">{</span> 5287 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5288 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5289 5290 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5291 <span class="s">}</span> 5292 5293 <span class="c"># Generate 322 keyset key 121 value as 1/0 indicating its presence/absence or</span> 5294 <span class="c"># count of its presence in a molecule.</span> 5295 <span class="c">#</span> 5296 <span class="c"># Key 121 description: Si-X</span> 5297 <span class="c">#</span> <a name="_Generate322KeySetKey121-"></a>5298 <span class="k">sub </span><span class="m">_Generate322KeySetKey121</span> <span class="s">{</span> 5299 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5300 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5301 5302 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5303 <span class="s">}</span> 5304 5305 <span class="c"># Generate 322 keyset key 122 value as 1/0 indicating its presence/absence or</span> 5306 <span class="c"># count of its presence in a molecule.</span> 5307 <span class="c">#</span> 5308 <span class="c"># Key 122 description: I-I</span> 5309 <span class="c">#</span> <a name="_Generate322KeySetKey122-"></a>5310 <span class="k">sub </span><span class="m">_Generate322KeySetKey122</span> <span class="s">{</span> 5311 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5312 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5313 5314 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5315 <span class="s">}</span> 5316 5317 <span class="c"># Generate 322 keyset key 123 value as 1/0 indicating its presence/absence or</span> 5318 <span class="c"># count of its presence in a molecule.</span> 5319 <span class="c">#</span> 5320 <span class="c"># Key 123 description: I-X</span> 5321 <span class="c">#</span> <a name="_Generate322KeySetKey123-"></a>5322 <span class="k">sub </span><span class="m">_Generate322KeySetKey123</span> <span class="s">{</span> 5323 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5324 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5325 5326 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5327 <span class="s">}</span> 5328 5329 <span class="c"># Generate 322 keyset key 124 value as 1/0 indicating its presence/absence or</span> 5330 <span class="c"># count of its presence in a molecule.</span> 5331 <span class="c">#</span> 5332 <span class="c"># Key 124 description: X-X</span> 5333 <span class="c">#</span> <a name="_Generate322KeySetKey124-"></a>5334 <span class="k">sub </span><span class="m">_Generate322KeySetKey124</span> <span class="s">{</span> 5335 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5336 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'-'</span><span class="sc">;</span> 5337 5338 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Z'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5339 <span class="s">}</span> 5340 5341 <span class="c"># Generate 322 keyset key 125 value as 1/0 indicating its presence/absence or</span> 5342 <span class="c"># count of its presence in a molecule.</span> 5343 <span class="c">#</span> 5344 <span class="c"># Key 125 description: C=C</span> 5345 <span class="c">#</span> <a name="_Generate322KeySetKey125-"></a>5346 <span class="k">sub </span><span class="m">_Generate322KeySetKey125</span> <span class="s">{</span> 5347 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5348 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5349 5350 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5351 <span class="s">}</span> 5352 5353 <span class="c"># Generate 322 keyset key 126 value as 1/0 indicating its presence/absence or</span> 5354 <span class="c"># count of its presence in a molecule.</span> 5355 <span class="c">#</span> 5356 <span class="c"># Key 126 description: C=N</span> 5357 <span class="c">#</span> <a name="_Generate322KeySetKey126-"></a>5358 <span class="k">sub </span><span class="m">_Generate322KeySetKey126</span> <span class="s">{</span> 5359 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5360 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5361 5362 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5363 <span class="s">}</span> 5364 5365 <span class="c"># Generate 322 keyset key 127 value as 1/0 indicating its presence/absence or</span> 5366 <span class="c"># count of its presence in a molecule.</span> 5367 <span class="c">#</span> 5368 <span class="c"># Key 127 description: C=O</span> 5369 <span class="c">#</span> <a name="_Generate322KeySetKey127-"></a>5370 <span class="k">sub </span><span class="m">_Generate322KeySetKey127</span> <span class="s">{</span> 5371 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5372 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5373 5374 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5375 <span class="s">}</span> 5376 5377 <span class="c"># Generate 322 keyset key 128 value as 1/0 indicating its presence/absence or</span> 5378 <span class="c"># count of its presence in a molecule.</span> 5379 <span class="c">#</span> 5380 <span class="c"># Key 128 description: C=S</span> 5381 <span class="c">#</span> <a name="_Generate322KeySetKey128-"></a>5382 <span class="k">sub </span><span class="m">_Generate322KeySetKey128</span> <span class="s">{</span> 5383 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5384 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5385 5386 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5387 <span class="s">}</span> 5388 5389 <span class="c"># Generate 322 keyset key 129 value as 1/0 indicating its presence/absence or</span> 5390 <span class="c"># count of its presence in a molecule.</span> 5391 <span class="c">#</span> 5392 <span class="c"># Key 129 description: C=Cl</span> 5393 <span class="c">#</span> <a name="_Generate322KeySetKey129-"></a>5394 <span class="k">sub </span><span class="m">_Generate322KeySetKey129</span> <span class="s">{</span> 5395 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5396 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5397 5398 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5399 <span class="s">}</span> 5400 5401 <span class="c"># Generate 322 keyset key 130 value as 1/0 indicating its presence/absence or</span> 5402 <span class="c"># count of its presence in a molecule.</span> 5403 <span class="c">#</span> 5404 <span class="c"># Key 130 description: C=P</span> 5405 <span class="c">#</span> <a name="_Generate322KeySetKey130-"></a>5406 <span class="k">sub </span><span class="m">_Generate322KeySetKey130</span> <span class="s">{</span> 5407 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5408 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5409 5410 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5411 <span class="s">}</span> 5412 5413 <span class="c"># Generate 322 keyset key 131 value as 1/0 indicating its presence/absence or</span> 5414 <span class="c"># count of its presence in a molecule.</span> 5415 <span class="c">#</span> 5416 <span class="c"># Key 131 description: C=F</span> 5417 <span class="c">#</span> <a name="_Generate322KeySetKey131-"></a>5418 <span class="k">sub </span><span class="m">_Generate322KeySetKey131</span> <span class="s">{</span> 5419 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5420 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5421 5422 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5423 <span class="s">}</span> 5424 5425 <span class="c"># Generate 322 keyset key 132 value as 1/0 indicating its presence/absence or</span> 5426 <span class="c"># count of its presence in a molecule.</span> 5427 <span class="c">#</span> 5428 <span class="c"># Key 132 description: C=Br</span> 5429 <span class="c">#</span> <a name="_Generate322KeySetKey132-"></a>5430 <span class="k">sub </span><span class="m">_Generate322KeySetKey132</span> <span class="s">{</span> 5431 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5432 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5433 5434 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5435 <span class="s">}</span> 5436 5437 <span class="c"># Generate 322 keyset key 133 value as 1/0 indicating its presence/absence or</span> 5438 <span class="c"># count of its presence in a molecule.</span> 5439 <span class="c">#</span> 5440 <span class="c"># Key 133 description: C=Si</span> 5441 <span class="c">#</span> <a name="_Generate322KeySetKey133-"></a>5442 <span class="k">sub </span><span class="m">_Generate322KeySetKey133</span> <span class="s">{</span> 5443 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5444 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5445 5446 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5447 <span class="s">}</span> 5448 5449 <span class="c"># Generate 322 keyset key 134 value as 1/0 indicating its presence/absence or</span> 5450 <span class="c"># count of its presence in a molecule.</span> 5451 <span class="c">#</span> 5452 <span class="c"># Key 134 description: C=I</span> 5453 <span class="c">#</span> <a name="_Generate322KeySetKey134-"></a>5454 <span class="k">sub </span><span class="m">_Generate322KeySetKey134</span> <span class="s">{</span> 5455 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5456 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5457 5458 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5459 <span class="s">}</span> 5460 5461 <span class="c"># Generate 322 keyset key 135 value as 1/0 indicating its presence/absence or</span> 5462 <span class="c"># count of its presence in a molecule.</span> 5463 <span class="c">#</span> 5464 <span class="c"># Key 135 description: C=X</span> 5465 <span class="c">#</span> <a name="_Generate322KeySetKey135-"></a>5466 <span class="k">sub </span><span class="m">_Generate322KeySetKey135</span> <span class="s">{</span> 5467 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5468 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5469 5470 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5471 <span class="s">}</span> 5472 5473 <span class="c"># Generate 322 keyset key 136 value as 1/0 indicating its presence/absence or</span> 5474 <span class="c"># count of its presence in a molecule.</span> 5475 <span class="c">#</span> 5476 <span class="c"># Key 136 description: N=N</span> 5477 <span class="c">#</span> <a name="_Generate322KeySetKey136-"></a>5478 <span class="k">sub </span><span class="m">_Generate322KeySetKey136</span> <span class="s">{</span> 5479 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5480 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5481 5482 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5483 <span class="s">}</span> 5484 5485 <span class="c"># Generate 322 keyset key 137 value as 1/0 indicating its presence/absence or</span> 5486 <span class="c"># count of its presence in a molecule.</span> 5487 <span class="c">#</span> 5488 <span class="c"># Key 137 description: N=O</span> 5489 <span class="c">#</span> <a name="_Generate322KeySetKey137-"></a>5490 <span class="k">sub </span><span class="m">_Generate322KeySetKey137</span> <span class="s">{</span> 5491 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5492 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5493 5494 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5495 <span class="s">}</span> 5496 5497 <span class="c"># Generate 322 keyset key 138 value as 1/0 indicating its presence/absence or</span> 5498 <span class="c"># count of its presence in a molecule.</span> 5499 <span class="c">#</span> 5500 <span class="c"># Key 138 description: N=S</span> 5501 <span class="c">#</span> <a name="_Generate322KeySetKey138-"></a>5502 <span class="k">sub </span><span class="m">_Generate322KeySetKey138</span> <span class="s">{</span> 5503 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5504 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5505 5506 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5507 <span class="s">}</span> 5508 5509 <span class="c"># Generate 322 keyset key 139 value as 1/0 indicating its presence/absence or</span> 5510 <span class="c"># count of its presence in a molecule.</span> 5511 <span class="c">#</span> 5512 <span class="c"># Key 139 description: N=Cl</span> 5513 <span class="c">#</span> <a name="_Generate322KeySetKey139-"></a>5514 <span class="k">sub </span><span class="m">_Generate322KeySetKey139</span> <span class="s">{</span> 5515 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5516 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5517 5518 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5519 <span class="s">}</span> 5520 5521 <span class="c"># Generate 322 keyset key 140 value as 1/0 indicating its presence/absence or</span> 5522 <span class="c"># count of its presence in a molecule.</span> 5523 <span class="c">#</span> 5524 <span class="c"># Key 140 description: N=P</span> 5525 <span class="c">#</span> <a name="_Generate322KeySetKey140-"></a>5526 <span class="k">sub </span><span class="m">_Generate322KeySetKey140</span> <span class="s">{</span> 5527 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5528 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5529 5530 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5531 <span class="s">}</span> 5532 5533 <span class="c"># Generate 322 keyset key 141 value as 1/0 indicating its presence/absence or</span> 5534 <span class="c"># count of its presence in a molecule.</span> 5535 <span class="c">#</span> 5536 <span class="c"># Key 141 description: N=F</span> 5537 <span class="c">#</span> <a name="_Generate322KeySetKey141-"></a>5538 <span class="k">sub </span><span class="m">_Generate322KeySetKey141</span> <span class="s">{</span> 5539 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5540 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5541 5542 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5543 <span class="s">}</span> 5544 5545 <span class="c"># Generate 322 keyset key 142 value as 1/0 indicating its presence/absence or</span> 5546 <span class="c"># count of its presence in a molecule.</span> 5547 <span class="c">#</span> 5548 <span class="c"># Key 142 description: N=Br</span> 5549 <span class="c">#</span> <a name="_Generate322KeySetKey142-"></a>5550 <span class="k">sub </span><span class="m">_Generate322KeySetKey142</span> <span class="s">{</span> 5551 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5552 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5553 5554 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5555 <span class="s">}</span> 5556 5557 <span class="c"># Generate 322 keyset key 143 value as 1/0 indicating its presence/absence or</span> 5558 <span class="c"># count of its presence in a molecule.</span> 5559 <span class="c">#</span> 5560 <span class="c"># Key 143 description: N=Si</span> 5561 <span class="c">#</span> <a name="_Generate322KeySetKey143-"></a>5562 <span class="k">sub </span><span class="m">_Generate322KeySetKey143</span> <span class="s">{</span> 5563 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5564 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5565 5566 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5567 <span class="s">}</span> 5568 5569 <span class="c"># Generate 322 keyset key 144 value as 1/0 indicating its presence/absence or</span> 5570 <span class="c"># count of its presence in a molecule.</span> 5571 <span class="c">#</span> 5572 <span class="c"># Key 144 description: N=I</span> 5573 <span class="c">#</span> <a name="_Generate322KeySetKey144-"></a>5574 <span class="k">sub </span><span class="m">_Generate322KeySetKey144</span> <span class="s">{</span> 5575 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5576 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5577 5578 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5579 <span class="s">}</span> 5580 5581 <span class="c"># Generate 322 keyset key 145 value as 1/0 indicating its presence/absence or</span> 5582 <span class="c"># count of its presence in a molecule.</span> 5583 <span class="c">#</span> 5584 <span class="c"># Key 145 description: N=X</span> 5585 <span class="c">#</span> <a name="_Generate322KeySetKey145-"></a>5586 <span class="k">sub </span><span class="m">_Generate322KeySetKey145</span> <span class="s">{</span> 5587 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5588 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5589 5590 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5591 <span class="s">}</span> 5592 5593 <span class="c"># Generate 322 keyset key 146 value as 1/0 indicating its presence/absence or</span> 5594 <span class="c"># count of its presence in a molecule.</span> 5595 <span class="c">#</span> 5596 <span class="c"># Key 146 description: O=O</span> 5597 <span class="c">#</span> <a name="_Generate322KeySetKey146-"></a>5598 <span class="k">sub </span><span class="m">_Generate322KeySetKey146</span> <span class="s">{</span> 5599 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5600 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5601 5602 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5603 <span class="s">}</span> 5604 5605 <span class="c"># Generate 322 keyset key 147 value as 1/0 indicating its presence/absence or</span> 5606 <span class="c"># count of its presence in a molecule.</span> 5607 <span class="c">#</span> 5608 <span class="c"># Key 147 description: O=S</span> 5609 <span class="c">#</span> <a name="_Generate322KeySetKey147-"></a>5610 <span class="k">sub </span><span class="m">_Generate322KeySetKey147</span> <span class="s">{</span> 5611 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5612 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5613 5614 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5615 <span class="s">}</span> 5616 5617 <span class="c"># Generate 322 keyset key 148 value as 1/0 indicating its presence/absence or</span> 5618 <span class="c"># count of its presence in a molecule.</span> 5619 <span class="c">#</span> 5620 <span class="c"># Key 148 description: O=Cl</span> 5621 <span class="c">#</span> <a name="_Generate322KeySetKey148-"></a>5622 <span class="k">sub </span><span class="m">_Generate322KeySetKey148</span> <span class="s">{</span> 5623 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5624 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5625 5626 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5627 <span class="s">}</span> 5628 5629 <span class="c"># Generate 322 keyset key 149 value as 1/0 indicating its presence/absence or</span> 5630 <span class="c"># count of its presence in a molecule.</span> 5631 <span class="c">#</span> 5632 <span class="c"># Key 149 description: O=P</span> 5633 <span class="c">#</span> <a name="_Generate322KeySetKey149-"></a>5634 <span class="k">sub </span><span class="m">_Generate322KeySetKey149</span> <span class="s">{</span> 5635 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5636 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5637 5638 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5639 <span class="s">}</span> 5640 5641 <span class="c"># Generate 322 keyset key 150 value as 1/0 indicating its presence/absence or</span> 5642 <span class="c"># count of its presence in a molecule.</span> 5643 <span class="c">#</span> 5644 <span class="c"># Key 150 description: O=F</span> 5645 <span class="c">#</span> <a name="_Generate322KeySetKey150-"></a>5646 <span class="k">sub </span><span class="m">_Generate322KeySetKey150</span> <span class="s">{</span> 5647 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5648 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5649 5650 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5651 <span class="s">}</span> 5652 5653 <span class="c"># Generate 322 keyset key 151 value as 1/0 indicating its presence/absence or</span> 5654 <span class="c"># count of its presence in a molecule.</span> 5655 <span class="c">#</span> 5656 <span class="c"># Key 151 description: O=Br</span> 5657 <span class="c">#</span> <a name="_Generate322KeySetKey151-"></a>5658 <span class="k">sub </span><span class="m">_Generate322KeySetKey151</span> <span class="s">{</span> 5659 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5660 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5661 5662 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5663 <span class="s">}</span> 5664 5665 <span class="c"># Generate 322 keyset key 152 value as 1/0 indicating its presence/absence or</span> 5666 <span class="c"># count of its presence in a molecule.</span> 5667 <span class="c">#</span> 5668 <span class="c"># Key 152 description: O=Si</span> 5669 <span class="c">#</span> <a name="_Generate322KeySetKey152-"></a>5670 <span class="k">sub </span><span class="m">_Generate322KeySetKey152</span> <span class="s">{</span> 5671 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5672 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5673 5674 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5675 <span class="s">}</span> 5676 5677 <span class="c"># Generate 322 keyset key 153 value as 1/0 indicating its presence/absence or</span> 5678 <span class="c"># count of its presence in a molecule.</span> 5679 <span class="c">#</span> 5680 <span class="c"># Key 153 description: O=I</span> 5681 <span class="c">#</span> <a name="_Generate322KeySetKey153-"></a>5682 <span class="k">sub </span><span class="m">_Generate322KeySetKey153</span> <span class="s">{</span> 5683 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5684 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5685 5686 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5687 <span class="s">}</span> 5688 5689 <span class="c"># Generate 322 keyset key 154 value as 1/0 indicating its presence/absence or</span> 5690 <span class="c"># count of its presence in a molecule.</span> 5691 <span class="c">#</span> 5692 <span class="c"># Key 154 description: O=X</span> 5693 <span class="c">#</span> <a name="_Generate322KeySetKey154-"></a>5694 <span class="k">sub </span><span class="m">_Generate322KeySetKey154</span> <span class="s">{</span> 5695 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5696 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5697 5698 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5699 <span class="s">}</span> 5700 5701 <span class="c"># Generate 322 keyset key 155 value as 1/0 indicating its presence/absence or</span> 5702 <span class="c"># count of its presence in a molecule.</span> 5703 <span class="c">#</span> 5704 <span class="c"># Key 155 description: S=S</span> 5705 <span class="c">#</span> <a name="_Generate322KeySetKey155-"></a>5706 <span class="k">sub </span><span class="m">_Generate322KeySetKey155</span> <span class="s">{</span> 5707 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5708 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5709 5710 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5711 <span class="s">}</span> 5712 5713 <span class="c"># Generate 322 keyset key 156 value as 1/0 indicating its presence/absence or</span> 5714 <span class="c"># count of its presence in a molecule.</span> 5715 <span class="c">#</span> 5716 <span class="c"># Key 156 description: S=Cl</span> 5717 <span class="c">#</span> <a name="_Generate322KeySetKey156-"></a>5718 <span class="k">sub </span><span class="m">_Generate322KeySetKey156</span> <span class="s">{</span> 5719 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5720 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5721 5722 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5723 <span class="s">}</span> 5724 5725 <span class="c"># Generate 322 keyset key 157 value as 1/0 indicating its presence/absence or</span> 5726 <span class="c"># count of its presence in a molecule.</span> 5727 <span class="c">#</span> 5728 <span class="c"># Key 157 description: S=P</span> 5729 <span class="c">#</span> <a name="_Generate322KeySetKey157-"></a>5730 <span class="k">sub </span><span class="m">_Generate322KeySetKey157</span> <span class="s">{</span> 5731 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5732 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5733 5734 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5735 <span class="s">}</span> 5736 5737 <span class="c"># Generate 322 keyset key 158 value as 1/0 indicating its presence/absence or</span> 5738 <span class="c"># count of its presence in a molecule.</span> 5739 <span class="c">#</span> 5740 <span class="c"># Key 158 description: S=F</span> 5741 <span class="c">#</span> <a name="_Generate322KeySetKey158-"></a>5742 <span class="k">sub </span><span class="m">_Generate322KeySetKey158</span> <span class="s">{</span> 5743 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5744 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5745 5746 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5747 <span class="s">}</span> 5748 5749 <span class="c"># Generate 322 keyset key 159 value as 1/0 indicating its presence/absence or</span> 5750 <span class="c"># count of its presence in a molecule.</span> 5751 <span class="c">#</span> 5752 <span class="c"># Key 159 description: S=Br</span> 5753 <span class="c">#</span> <a name="_Generate322KeySetKey159-"></a>5754 <span class="k">sub </span><span class="m">_Generate322KeySetKey159</span> <span class="s">{</span> 5755 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5756 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5757 5758 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5759 <span class="s">}</span> 5760 5761 <span class="c"># Generate 322 keyset key 160 value as 1/0 indicating its presence/absence or</span> 5762 <span class="c"># count of its presence in a molecule.</span> 5763 <span class="c">#</span> 5764 <span class="c"># Key 160 description: S=Si</span> 5765 <span class="c">#</span> <a name="_Generate322KeySetKey160-"></a>5766 <span class="k">sub </span><span class="m">_Generate322KeySetKey160</span> <span class="s">{</span> 5767 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5768 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5769 5770 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5771 <span class="s">}</span> 5772 5773 <span class="c"># Generate 322 keyset key 161 value as 1/0 indicating its presence/absence or</span> 5774 <span class="c"># count of its presence in a molecule.</span> 5775 <span class="c">#</span> 5776 <span class="c"># Key 161 description: S=I</span> 5777 <span class="c">#</span> <a name="_Generate322KeySetKey161-"></a>5778 <span class="k">sub </span><span class="m">_Generate322KeySetKey161</span> <span class="s">{</span> 5779 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5780 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5781 5782 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5783 <span class="s">}</span> 5784 5785 <span class="c"># Generate 322 keyset key 162 value as 1/0 indicating its presence/absence or</span> 5786 <span class="c"># count of its presence in a molecule.</span> 5787 <span class="c">#</span> 5788 <span class="c"># Key 162 description: S=X</span> 5789 <span class="c">#</span> <a name="_Generate322KeySetKey162-"></a>5790 <span class="k">sub </span><span class="m">_Generate322KeySetKey162</span> <span class="s">{</span> 5791 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5792 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5793 5794 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5795 <span class="s">}</span> 5796 5797 <span class="c"># Generate 322 keyset key 163 value as 1/0 indicating its presence/absence or</span> 5798 <span class="c"># count of its presence in a molecule.</span> 5799 <span class="c">#</span> 5800 <span class="c"># Key 163 description: Cl=Cl</span> 5801 <span class="c">#</span> <a name="_Generate322KeySetKey163-"></a>5802 <span class="k">sub </span><span class="m">_Generate322KeySetKey163</span> <span class="s">{</span> 5803 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5804 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5805 5806 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5807 <span class="s">}</span> 5808 5809 <span class="c"># Generate 322 keyset key 164 value as 1/0 indicating its presence/absence or</span> 5810 <span class="c"># count of its presence in a molecule.</span> 5811 <span class="c">#</span> 5812 <span class="c"># Key 164 description: Cl=P</span> 5813 <span class="c">#</span> <a name="_Generate322KeySetKey164-"></a>5814 <span class="k">sub </span><span class="m">_Generate322KeySetKey164</span> <span class="s">{</span> 5815 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5816 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5817 5818 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5819 <span class="s">}</span> 5820 5821 <span class="c"># Generate 322 keyset key 165 value as 1/0 indicating its presence/absence or</span> 5822 <span class="c"># count of its presence in a molecule.</span> 5823 <span class="c">#</span> 5824 <span class="c"># Key 165 description: Cl=F</span> 5825 <span class="c">#</span> <a name="_Generate322KeySetKey165-"></a>5826 <span class="k">sub </span><span class="m">_Generate322KeySetKey165</span> <span class="s">{</span> 5827 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5828 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5829 5830 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5831 <span class="s">}</span> 5832 5833 <span class="c"># Generate 322 keyset key 166 value as 1/0 indicating its presence/absence or</span> 5834 <span class="c"># count of its presence in a molecule.</span> 5835 <span class="c">#</span> 5836 <span class="c"># Key 166 description: Cl=Br</span> 5837 <span class="c">#</span> <a name="_Generate322KeySetKey166-"></a>5838 <span class="k">sub </span><span class="m">_Generate322KeySetKey166</span> <span class="s">{</span> 5839 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5840 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5841 5842 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5843 <span class="s">}</span> 5844 5845 <span class="c"># Generate 322 keyset key 167 value as 1/0 indicating its presence/absence or</span> 5846 <span class="c"># count of its presence in a molecule.</span> 5847 <span class="c">#</span> 5848 <span class="c"># Key 167 description: Cl=Si</span> 5849 <span class="c">#</span> <a name="_Generate322KeySetKey167-"></a>5850 <span class="k">sub </span><span class="m">_Generate322KeySetKey167</span> <span class="s">{</span> 5851 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5852 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5853 5854 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5855 <span class="s">}</span> 5856 5857 <span class="c"># Generate 322 keyset key 168 value as 1/0 indicating its presence/absence or</span> 5858 <span class="c"># count of its presence in a molecule.</span> 5859 <span class="c">#</span> 5860 <span class="c"># Key 168 description: Cl=I</span> 5861 <span class="c">#</span> <a name="_Generate322KeySetKey168-"></a>5862 <span class="k">sub </span><span class="m">_Generate322KeySetKey168</span> <span class="s">{</span> 5863 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5864 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5865 5866 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5867 <span class="s">}</span> 5868 5869 <span class="c"># Generate 322 keyset key 169 value as 1/0 indicating its presence/absence or</span> 5870 <span class="c"># count of its presence in a molecule.</span> 5871 <span class="c">#</span> 5872 <span class="c"># Key 169 description: Cl=X</span> 5873 <span class="c">#</span> <a name="_Generate322KeySetKey169-"></a>5874 <span class="k">sub </span><span class="m">_Generate322KeySetKey169</span> <span class="s">{</span> 5875 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5876 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5877 5878 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5879 <span class="s">}</span> 5880 5881 <span class="c"># Generate 322 keyset key 170 value as 1/0 indicating its presence/absence or</span> 5882 <span class="c"># count of its presence in a molecule.</span> 5883 <span class="c">#</span> 5884 <span class="c"># Key 170 description: P=P</span> 5885 <span class="c">#</span> <a name="_Generate322KeySetKey170-"></a>5886 <span class="k">sub </span><span class="m">_Generate322KeySetKey170</span> <span class="s">{</span> 5887 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5888 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5889 5890 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5891 <span class="s">}</span> 5892 5893 <span class="c"># Generate 322 keyset key 171 value as 1/0 indicating its presence/absence or</span> 5894 <span class="c"># count of its presence in a molecule.</span> 5895 <span class="c">#</span> 5896 <span class="c"># Key 171 description: P=F</span> 5897 <span class="c">#</span> <a name="_Generate322KeySetKey171-"></a>5898 <span class="k">sub </span><span class="m">_Generate322KeySetKey171</span> <span class="s">{</span> 5899 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5900 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5901 5902 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5903 <span class="s">}</span> 5904 5905 <span class="c"># Generate 322 keyset key 172 value as 1/0 indicating its presence/absence or</span> 5906 <span class="c"># count of its presence in a molecule.</span> 5907 <span class="c">#</span> 5908 <span class="c"># Key 172 description: P=Br</span> 5909 <span class="c">#</span> <a name="_Generate322KeySetKey172-"></a>5910 <span class="k">sub </span><span class="m">_Generate322KeySetKey172</span> <span class="s">{</span> 5911 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5912 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5913 5914 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5915 <span class="s">}</span> 5916 5917 <span class="c"># Generate 322 keyset key 173 value as 1/0 indicating its presence/absence or</span> 5918 <span class="c"># count of its presence in a molecule.</span> 5919 <span class="c">#</span> 5920 <span class="c"># Key 173 description: P=Si</span> 5921 <span class="c">#</span> <a name="_Generate322KeySetKey173-"></a>5922 <span class="k">sub </span><span class="m">_Generate322KeySetKey173</span> <span class="s">{</span> 5923 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5924 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5925 5926 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5927 <span class="s">}</span> 5928 5929 <span class="c"># Generate 322 keyset key 174 value as 1/0 indicating its presence/absence or</span> 5930 <span class="c"># count of its presence in a molecule.</span> 5931 <span class="c">#</span> 5932 <span class="c"># Key 174 description: P=I</span> 5933 <span class="c">#</span> <a name="_Generate322KeySetKey174-"></a>5934 <span class="k">sub </span><span class="m">_Generate322KeySetKey174</span> <span class="s">{</span> 5935 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5936 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5937 5938 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5939 <span class="s">}</span> 5940 5941 <span class="c"># Generate 322 keyset key 175 value as 1/0 indicating its presence/absence or</span> 5942 <span class="c"># count of its presence in a molecule.</span> 5943 <span class="c">#</span> 5944 <span class="c"># Key 175 description: P=X</span> 5945 <span class="c">#</span> <a name="_Generate322KeySetKey175-"></a>5946 <span class="k">sub </span><span class="m">_Generate322KeySetKey175</span> <span class="s">{</span> 5947 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5948 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5949 5950 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5951 <span class="s">}</span> 5952 5953 <span class="c"># Generate 322 keyset key 176 value as 1/0 indicating its presence/absence or</span> 5954 <span class="c"># count of its presence in a molecule.</span> 5955 <span class="c">#</span> 5956 <span class="c"># Key 176 description: F=F</span> 5957 <span class="c">#</span> <a name="_Generate322KeySetKey176-"></a>5958 <span class="k">sub </span><span class="m">_Generate322KeySetKey176</span> <span class="s">{</span> 5959 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5960 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5961 5962 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5963 <span class="s">}</span> 5964 5965 <span class="c"># Generate 322 keyset key 177 value as 1/0 indicating its presence/absence or</span> 5966 <span class="c"># count of its presence in a molecule.</span> 5967 <span class="c">#</span> 5968 <span class="c"># Key 177 description: F=Br</span> 5969 <span class="c">#</span> <a name="_Generate322KeySetKey177-"></a>5970 <span class="k">sub </span><span class="m">_Generate322KeySetKey177</span> <span class="s">{</span> 5971 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5972 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5973 5974 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5975 <span class="s">}</span> 5976 5977 <span class="c"># Generate 322 keyset key 178 value as 1/0 indicating its presence/absence or</span> 5978 <span class="c"># count of its presence in a molecule.</span> 5979 <span class="c">#</span> 5980 <span class="c"># Key 178 description: F=Si</span> 5981 <span class="c">#</span> <a name="_Generate322KeySetKey178-"></a>5982 <span class="k">sub </span><span class="m">_Generate322KeySetKey178</span> <span class="s">{</span> 5983 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5984 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5985 5986 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5987 <span class="s">}</span> 5988 5989 <span class="c"># Generate 322 keyset key 179 value as 1/0 indicating its presence/absence or</span> 5990 <span class="c"># count of its presence in a molecule.</span> 5991 <span class="c">#</span> 5992 <span class="c"># Key 179 description: F=I</span> 5993 <span class="c">#</span> <a name="_Generate322KeySetKey179-"></a>5994 <span class="k">sub </span><span class="m">_Generate322KeySetKey179</span> <span class="s">{</span> 5995 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 5996 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 5997 5998 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 5999 <span class="s">}</span> 6000 6001 <span class="c"># Generate 322 keyset key 180 value as 1/0 indicating its presence/absence or</span> 6002 <span class="c"># count of its presence in a molecule.</span> 6003 <span class="c">#</span> 6004 <span class="c"># Key 180 description: F=X</span> 6005 <span class="c">#</span> <a name="_Generate322KeySetKey180-"></a>6006 <span class="k">sub </span><span class="m">_Generate322KeySetKey180</span> <span class="s">{</span> 6007 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6008 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6009 6010 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6011 <span class="s">}</span> 6012 6013 <span class="c"># Generate 322 keyset key 181 value as 1/0 indicating its presence/absence or</span> 6014 <span class="c"># count of its presence in a molecule.</span> 6015 <span class="c">#</span> 6016 <span class="c"># Key 181 description: Br=Br</span> 6017 <span class="c">#</span> <a name="_Generate322KeySetKey181-"></a>6018 <span class="k">sub </span><span class="m">_Generate322KeySetKey181</span> <span class="s">{</span> 6019 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6020 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6021 6022 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6023 <span class="s">}</span> 6024 6025 <span class="c"># Generate 322 keyset key 182 value as 1/0 indicating its presence/absence or</span> 6026 <span class="c"># count of its presence in a molecule.</span> 6027 <span class="c">#</span> 6028 <span class="c"># Key 182 description: Br=Si</span> 6029 <span class="c">#</span> <a name="_Generate322KeySetKey182-"></a>6030 <span class="k">sub </span><span class="m">_Generate322KeySetKey182</span> <span class="s">{</span> 6031 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6032 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6033 6034 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6035 <span class="s">}</span> 6036 6037 <span class="c"># Generate 322 keyset key 183 value as 1/0 indicating its presence/absence or</span> 6038 <span class="c"># count of its presence in a molecule.</span> 6039 <span class="c">#</span> 6040 <span class="c"># Key 183 description: Br=I</span> 6041 <span class="c">#</span> <a name="_Generate322KeySetKey183-"></a>6042 <span class="k">sub </span><span class="m">_Generate322KeySetKey183</span> <span class="s">{</span> 6043 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6044 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6045 6046 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6047 <span class="s">}</span> 6048 6049 <span class="c"># Generate 322 keyset key 184 value as 1/0 indicating its presence/absence or</span> 6050 <span class="c"># count of its presence in a molecule.</span> 6051 <span class="c">#</span> 6052 <span class="c"># Key 184 description: Br=X</span> 6053 <span class="c">#</span> <a name="_Generate322KeySetKey184-"></a>6054 <span class="k">sub </span><span class="m">_Generate322KeySetKey184</span> <span class="s">{</span> 6055 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6056 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6057 6058 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6059 <span class="s">}</span> 6060 6061 <span class="c"># Generate 322 keyset key 185 value as 1/0 indicating its presence/absence or</span> 6062 <span class="c"># count of its presence in a molecule.</span> 6063 <span class="c">#</span> 6064 <span class="c"># Key 185 description: Si=Si</span> 6065 <span class="c">#</span> <a name="_Generate322KeySetKey185-"></a>6066 <span class="k">sub </span><span class="m">_Generate322KeySetKey185</span> <span class="s">{</span> 6067 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6068 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6069 6070 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6071 <span class="s">}</span> 6072 6073 <span class="c"># Generate 322 keyset key 186 value as 1/0 indicating its presence/absence or</span> 6074 <span class="c"># count of its presence in a molecule.</span> 6075 <span class="c">#</span> 6076 <span class="c"># Key 186 description: Si=I</span> 6077 <span class="c">#</span> <a name="_Generate322KeySetKey186-"></a>6078 <span class="k">sub </span><span class="m">_Generate322KeySetKey186</span> <span class="s">{</span> 6079 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6080 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6081 6082 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6083 <span class="s">}</span> 6084 6085 <span class="c"># Generate 322 keyset key 187 value as 1/0 indicating its presence/absence or</span> 6086 <span class="c"># count of its presence in a molecule.</span> 6087 <span class="c">#</span> 6088 <span class="c"># Key 187 description: Si=X</span> 6089 <span class="c">#</span> <a name="_Generate322KeySetKey187-"></a>6090 <span class="k">sub </span><span class="m">_Generate322KeySetKey187</span> <span class="s">{</span> 6091 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6092 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6093 6094 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6095 <span class="s">}</span> 6096 6097 <span class="c"># Generate 322 keyset key 188 value as 1/0 indicating its presence/absence or</span> 6098 <span class="c"># count of its presence in a molecule.</span> 6099 <span class="c">#</span> 6100 <span class="c"># Key 188 description: I=I</span> 6101 <span class="c">#</span> <a name="_Generate322KeySetKey188-"></a>6102 <span class="k">sub </span><span class="m">_Generate322KeySetKey188</span> <span class="s">{</span> 6103 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6104 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6105 6106 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6107 <span class="s">}</span> 6108 6109 <span class="c"># Generate 322 keyset key 189 value as 1/0 indicating its presence/absence or</span> 6110 <span class="c"># count of its presence in a molecule.</span> 6111 <span class="c">#</span> 6112 <span class="c"># Key 189 description: I=X</span> 6113 <span class="c">#</span> <a name="_Generate322KeySetKey189-"></a>6114 <span class="k">sub </span><span class="m">_Generate322KeySetKey189</span> <span class="s">{</span> 6115 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6116 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6117 6118 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6119 <span class="s">}</span> 6120 6121 <span class="c"># Generate 322 keyset key 190 value as 1/0 indicating its presence/absence or</span> 6122 <span class="c"># count of its presence in a molecule.</span> 6123 <span class="c">#</span> 6124 <span class="c"># Key 190 description: X=X</span> 6125 <span class="c">#</span> <a name="_Generate322KeySetKey190-"></a>6126 <span class="k">sub </span><span class="m">_Generate322KeySetKey190</span> <span class="s">{</span> 6127 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6128 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'='</span><span class="sc">;</span> 6129 6130 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Z'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6131 <span class="s">}</span> 6132 6133 <span class="c"># Generate 322 keyset key 191 value as 1/0 indicating its presence/absence or</span> 6134 <span class="c"># count of its presence in a molecule.</span> 6135 <span class="c">#</span> 6136 <span class="c"># Key 191 description: C#C</span> 6137 <span class="c">#</span> <a name="_Generate322KeySetKey191-"></a>6138 <span class="k">sub </span><span class="m">_Generate322KeySetKey191</span> <span class="s">{</span> 6139 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6140 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6141 6142 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6143 <span class="s">}</span> 6144 6145 <span class="c"># Generate 322 keyset key 192 value as 1/0 indicating its presence/absence or</span> 6146 <span class="c"># count of its presence in a molecule.</span> 6147 <span class="c">#</span> 6148 <span class="c"># Key 192 description: C#N</span> 6149 <span class="c">#</span> <a name="_Generate322KeySetKey192-"></a>6150 <span class="k">sub </span><span class="m">_Generate322KeySetKey192</span> <span class="s">{</span> 6151 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6152 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6153 6154 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6155 <span class="s">}</span> 6156 6157 <span class="c"># Generate 322 keyset key 193 value as 1/0 indicating its presence/absence or</span> 6158 <span class="c"># count of its presence in a molecule.</span> 6159 <span class="c">#</span> 6160 <span class="c"># Key 193 description: C#O</span> 6161 <span class="c">#</span> <a name="_Generate322KeySetKey193-"></a>6162 <span class="k">sub </span><span class="m">_Generate322KeySetKey193</span> <span class="s">{</span> 6163 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6164 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6165 6166 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6167 <span class="s">}</span> 6168 6169 <span class="c"># Generate 322 keyset key 194 value as 1/0 indicating its presence/absence or</span> 6170 <span class="c"># count of its presence in a molecule.</span> 6171 <span class="c">#</span> 6172 <span class="c"># Key 194 description: C#S</span> 6173 <span class="c">#</span> <a name="_Generate322KeySetKey194-"></a>6174 <span class="k">sub </span><span class="m">_Generate322KeySetKey194</span> <span class="s">{</span> 6175 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6176 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6177 6178 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6179 <span class="s">}</span> 6180 6181 <span class="c"># Generate 322 keyset key 195 value as 1/0 indicating its presence/absence or</span> 6182 <span class="c"># count of its presence in a molecule.</span> 6183 <span class="c">#</span> 6184 <span class="c"># Key 195 description: C#Cl</span> 6185 <span class="c">#</span> <a name="_Generate322KeySetKey195-"></a>6186 <span class="k">sub </span><span class="m">_Generate322KeySetKey195</span> <span class="s">{</span> 6187 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6188 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6189 6190 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6191 <span class="s">}</span> 6192 6193 <span class="c"># Generate 322 keyset key 196 value as 1/0 indicating its presence/absence or</span> 6194 <span class="c"># count of its presence in a molecule.</span> 6195 <span class="c">#</span> 6196 <span class="c"># Key 196 description: C#P</span> 6197 <span class="c">#</span> <a name="_Generate322KeySetKey196-"></a>6198 <span class="k">sub </span><span class="m">_Generate322KeySetKey196</span> <span class="s">{</span> 6199 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6200 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6201 6202 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6203 <span class="s">}</span> 6204 6205 <span class="c"># Generate 322 keyset key 197 value as 1/0 indicating its presence/absence or</span> 6206 <span class="c"># count of its presence in a molecule.</span> 6207 <span class="c">#</span> 6208 <span class="c"># Key 197 description: C#F</span> 6209 <span class="c">#</span> <a name="_Generate322KeySetKey197-"></a>6210 <span class="k">sub </span><span class="m">_Generate322KeySetKey197</span> <span class="s">{</span> 6211 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6212 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6213 6214 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6215 <span class="s">}</span> 6216 6217 <span class="c"># Generate 322 keyset key 198 value as 1/0 indicating its presence/absence or</span> 6218 <span class="c"># count of its presence in a molecule.</span> 6219 <span class="c">#</span> 6220 <span class="c"># Key 198 description: C#Br</span> 6221 <span class="c">#</span> <a name="_Generate322KeySetKey198-"></a>6222 <span class="k">sub </span><span class="m">_Generate322KeySetKey198</span> <span class="s">{</span> 6223 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6224 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6225 6226 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6227 <span class="s">}</span> 6228 6229 <span class="c"># Generate 322 keyset key 199 value as 1/0 indicating its presence/absence or</span> 6230 <span class="c"># count of its presence in a molecule.</span> 6231 <span class="c">#</span> 6232 <span class="c"># Key 199 description: C#Si</span> 6233 <span class="c">#</span> <a name="_Generate322KeySetKey199-"></a>6234 <span class="k">sub </span><span class="m">_Generate322KeySetKey199</span> <span class="s">{</span> 6235 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6236 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6237 6238 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6239 <span class="s">}</span> 6240 6241 <span class="c"># Generate 322 keyset key 200 value as 1/0 indicating its presence/absence or</span> 6242 <span class="c"># count of its presence in a molecule.</span> 6243 <span class="c">#</span> 6244 <span class="c"># Key 200 description: C#I</span> 6245 <span class="c">#</span> <a name="_Generate322KeySetKey200-"></a>6246 <span class="k">sub </span><span class="m">_Generate322KeySetKey200</span> <span class="s">{</span> 6247 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6248 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6249 6250 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6251 <span class="s">}</span> 6252 6253 <span class="c"># Generate 322 keyset key 201 value as 1/0 indicating its presence/absence or</span> 6254 <span class="c"># count of its presence in a molecule.</span> 6255 <span class="c">#</span> 6256 <span class="c"># Key 201 description: C#X</span> 6257 <span class="c">#</span> <a name="_Generate322KeySetKey201-"></a>6258 <span class="k">sub </span><span class="m">_Generate322KeySetKey201</span> <span class="s">{</span> 6259 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6260 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6261 6262 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6263 <span class="s">}</span> 6264 6265 <span class="c"># Generate 322 keyset key 202 value as 1/0 indicating its presence/absence or</span> 6266 <span class="c"># count of its presence in a molecule.</span> 6267 <span class="c">#</span> 6268 <span class="c"># Key 202 description: N#N</span> 6269 <span class="c">#</span> <a name="_Generate322KeySetKey202-"></a>6270 <span class="k">sub </span><span class="m">_Generate322KeySetKey202</span> <span class="s">{</span> 6271 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6272 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6273 6274 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6275 <span class="s">}</span> 6276 6277 <span class="c"># Generate 322 keyset key 203 value as 1/0 indicating its presence/absence or</span> 6278 <span class="c"># count of its presence in a molecule.</span> 6279 <span class="c">#</span> 6280 <span class="c"># Key 203 description: N#O</span> 6281 <span class="c">#</span> <a name="_Generate322KeySetKey203-"></a>6282 <span class="k">sub </span><span class="m">_Generate322KeySetKey203</span> <span class="s">{</span> 6283 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6284 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6285 6286 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6287 <span class="s">}</span> 6288 6289 <span class="c"># Generate 322 keyset key 204 value as 1/0 indicating its presence/absence or</span> 6290 <span class="c"># count of its presence in a molecule.</span> 6291 <span class="c">#</span> 6292 <span class="c"># Key 204 description: N#S</span> 6293 <span class="c">#</span> <a name="_Generate322KeySetKey204-"></a>6294 <span class="k">sub </span><span class="m">_Generate322KeySetKey204</span> <span class="s">{</span> 6295 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6296 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6297 6298 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6299 <span class="s">}</span> 6300 6301 <span class="c"># Generate 322 keyset key 205 value as 1/0 indicating its presence/absence or</span> 6302 <span class="c"># count of its presence in a molecule.</span> 6303 <span class="c">#</span> 6304 <span class="c"># Key 205 description: N#Cl</span> 6305 <span class="c">#</span> <a name="_Generate322KeySetKey205-"></a>6306 <span class="k">sub </span><span class="m">_Generate322KeySetKey205</span> <span class="s">{</span> 6307 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6308 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6309 6310 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6311 <span class="s">}</span> 6312 6313 <span class="c"># Generate 322 keyset key 206 value as 1/0 indicating its presence/absence or</span> 6314 <span class="c"># count of its presence in a molecule.</span> 6315 <span class="c">#</span> 6316 <span class="c"># Key 206 description: N#P</span> 6317 <span class="c">#</span> <a name="_Generate322KeySetKey206-"></a>6318 <span class="k">sub </span><span class="m">_Generate322KeySetKey206</span> <span class="s">{</span> 6319 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6320 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6321 6322 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6323 <span class="s">}</span> 6324 6325 <span class="c"># Generate 322 keyset key 207 value as 1/0 indicating its presence/absence or</span> 6326 <span class="c"># count of its presence in a molecule.</span> 6327 <span class="c">#</span> 6328 <span class="c"># Key 207 description: N#F</span> 6329 <span class="c">#</span> <a name="_Generate322KeySetKey207-"></a>6330 <span class="k">sub </span><span class="m">_Generate322KeySetKey207</span> <span class="s">{</span> 6331 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6332 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6333 6334 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6335 <span class="s">}</span> 6336 6337 <span class="c"># Generate 322 keyset key 208 value as 1/0 indicating its presence/absence or</span> 6338 <span class="c"># count of its presence in a molecule.</span> 6339 <span class="c">#</span> 6340 <span class="c"># Key 208 description: N#Br</span> 6341 <span class="c">#</span> <a name="_Generate322KeySetKey208-"></a>6342 <span class="k">sub </span><span class="m">_Generate322KeySetKey208</span> <span class="s">{</span> 6343 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6344 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6345 6346 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6347 <span class="s">}</span> 6348 6349 <span class="c"># Generate 322 keyset key 209 value as 1/0 indicating its presence/absence or</span> 6350 <span class="c"># count of its presence in a molecule.</span> 6351 <span class="c">#</span> 6352 <span class="c"># Key 209 description: N#Si</span> 6353 <span class="c">#</span> <a name="_Generate322KeySetKey209-"></a>6354 <span class="k">sub </span><span class="m">_Generate322KeySetKey209</span> <span class="s">{</span> 6355 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6356 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6357 6358 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6359 <span class="s">}</span> 6360 6361 <span class="c"># Generate 322 keyset key 210 value as 1/0 indicating its presence/absence or</span> 6362 <span class="c"># count of its presence in a molecule.</span> 6363 <span class="c">#</span> 6364 <span class="c"># Key 210 description: N#I</span> 6365 <span class="c">#</span> <a name="_Generate322KeySetKey210-"></a>6366 <span class="k">sub </span><span class="m">_Generate322KeySetKey210</span> <span class="s">{</span> 6367 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6368 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6369 6370 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6371 <span class="s">}</span> 6372 6373 <span class="c"># Generate 322 keyset key 211 value as 1/0 indicating its presence/absence or</span> 6374 <span class="c"># count of its presence in a molecule.</span> 6375 <span class="c">#</span> 6376 <span class="c"># Key 211 description: N#X</span> 6377 <span class="c">#</span> <a name="_Generate322KeySetKey211-"></a>6378 <span class="k">sub </span><span class="m">_Generate322KeySetKey211</span> <span class="s">{</span> 6379 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6380 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6381 6382 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6383 <span class="s">}</span> 6384 6385 <span class="c"># Generate 322 keyset key 212 value as 1/0 indicating its presence/absence or</span> 6386 <span class="c"># count of its presence in a molecule.</span> 6387 <span class="c">#</span> 6388 <span class="c"># Key 212 description: O#O</span> 6389 <span class="c">#</span> <a name="_Generate322KeySetKey212-"></a>6390 <span class="k">sub </span><span class="m">_Generate322KeySetKey212</span> <span class="s">{</span> 6391 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6392 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6393 6394 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6395 <span class="s">}</span> 6396 6397 <span class="c"># Generate 322 keyset key 213 value as 1/0 indicating its presence/absence or</span> 6398 <span class="c"># count of its presence in a molecule.</span> 6399 <span class="c">#</span> 6400 <span class="c"># Key 213 description: O#S</span> 6401 <span class="c">#</span> <a name="_Generate322KeySetKey213-"></a>6402 <span class="k">sub </span><span class="m">_Generate322KeySetKey213</span> <span class="s">{</span> 6403 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6404 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6405 6406 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6407 <span class="s">}</span> 6408 6409 <span class="c"># Generate 322 keyset key 214 value as 1/0 indicating its presence/absence or</span> 6410 <span class="c"># count of its presence in a molecule.</span> 6411 <span class="c">#</span> 6412 <span class="c"># Key 214 description: O#Cl</span> 6413 <span class="c">#</span> <a name="_Generate322KeySetKey214-"></a>6414 <span class="k">sub </span><span class="m">_Generate322KeySetKey214</span> <span class="s">{</span> 6415 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6416 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6417 6418 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6419 <span class="s">}</span> 6420 6421 <span class="c"># Generate 322 keyset key 215 value as 1/0 indicating its presence/absence or</span> 6422 <span class="c"># count of its presence in a molecule.</span> 6423 <span class="c">#</span> 6424 <span class="c"># Key 215 description: O#P</span> 6425 <span class="c">#</span> <a name="_Generate322KeySetKey215-"></a>6426 <span class="k">sub </span><span class="m">_Generate322KeySetKey215</span> <span class="s">{</span> 6427 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6428 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6429 6430 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6431 <span class="s">}</span> 6432 6433 <span class="c"># Generate 322 keyset key 216 value as 1/0 indicating its presence/absence or</span> 6434 <span class="c"># count of its presence in a molecule.</span> 6435 <span class="c">#</span> 6436 <span class="c"># Key 216 description: O#F</span> 6437 <span class="c">#</span> <a name="_Generate322KeySetKey216-"></a>6438 <span class="k">sub </span><span class="m">_Generate322KeySetKey216</span> <span class="s">{</span> 6439 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6440 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6441 6442 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6443 <span class="s">}</span> 6444 6445 <span class="c"># Generate 322 keyset key 217 value as 1/0 indicating its presence/absence or</span> 6446 <span class="c"># count of its presence in a molecule.</span> 6447 <span class="c">#</span> 6448 <span class="c"># Key 217 description: O#Br</span> 6449 <span class="c">#</span> <a name="_Generate322KeySetKey217-"></a>6450 <span class="k">sub </span><span class="m">_Generate322KeySetKey217</span> <span class="s">{</span> 6451 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6452 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6453 6454 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6455 <span class="s">}</span> 6456 6457 <span class="c"># Generate 322 keyset key 218 value as 1/0 indicating its presence/absence or</span> 6458 <span class="c"># count of its presence in a molecule.</span> 6459 <span class="c">#</span> 6460 <span class="c"># Key 218 description: O#Si</span> 6461 <span class="c">#</span> <a name="_Generate322KeySetKey218-"></a>6462 <span class="k">sub </span><span class="m">_Generate322KeySetKey218</span> <span class="s">{</span> 6463 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6464 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6465 6466 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6467 <span class="s">}</span> 6468 6469 <span class="c"># Generate 322 keyset key 219 value as 1/0 indicating its presence/absence or</span> 6470 <span class="c"># count of its presence in a molecule.</span> 6471 <span class="c">#</span> 6472 <span class="c"># Key 219 description: O#I</span> 6473 <span class="c">#</span> <a name="_Generate322KeySetKey219-"></a>6474 <span class="k">sub </span><span class="m">_Generate322KeySetKey219</span> <span class="s">{</span> 6475 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6476 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6477 6478 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6479 <span class="s">}</span> 6480 6481 <span class="c"># Generate 322 keyset key 220 value as 1/0 indicating its presence/absence or</span> 6482 <span class="c"># count of its presence in a molecule.</span> 6483 <span class="c">#</span> 6484 <span class="c"># Key 220 description: O#X</span> 6485 <span class="c">#</span> <a name="_Generate322KeySetKey220-"></a>6486 <span class="k">sub </span><span class="m">_Generate322KeySetKey220</span> <span class="s">{</span> 6487 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6488 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6489 6490 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6491 <span class="s">}</span> 6492 6493 <span class="c"># Generate 322 keyset key 221 value as 1/0 indicating its presence/absence or</span> 6494 <span class="c"># count of its presence in a molecule.</span> 6495 <span class="c">#</span> 6496 <span class="c"># Key 221 description: S#S</span> 6497 <span class="c">#</span> <a name="_Generate322KeySetKey221-"></a>6498 <span class="k">sub </span><span class="m">_Generate322KeySetKey221</span> <span class="s">{</span> 6499 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6500 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6501 6502 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6503 <span class="s">}</span> 6504 6505 <span class="c"># Generate 322 keyset key 222 value as 1/0 indicating its presence/absence or</span> 6506 <span class="c"># count of its presence in a molecule.</span> 6507 <span class="c">#</span> 6508 <span class="c"># Key 222 description: S#Cl</span> 6509 <span class="c">#</span> <a name="_Generate322KeySetKey222-"></a>6510 <span class="k">sub </span><span class="m">_Generate322KeySetKey222</span> <span class="s">{</span> 6511 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6512 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6513 6514 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6515 <span class="s">}</span> 6516 6517 <span class="c"># Generate 322 keyset key 223 value as 1/0 indicating its presence/absence or</span> 6518 <span class="c"># count of its presence in a molecule.</span> 6519 <span class="c">#</span> 6520 <span class="c"># Key 223 description: S#P</span> 6521 <span class="c">#</span> <a name="_Generate322KeySetKey223-"></a>6522 <span class="k">sub </span><span class="m">_Generate322KeySetKey223</span> <span class="s">{</span> 6523 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6524 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6525 6526 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6527 <span class="s">}</span> 6528 6529 <span class="c"># Generate 322 keyset key 224 value as 1/0 indicating its presence/absence or</span> 6530 <span class="c"># count of its presence in a molecule.</span> 6531 <span class="c">#</span> 6532 <span class="c"># Key 224 description: S#F</span> 6533 <span class="c">#</span> <a name="_Generate322KeySetKey224-"></a>6534 <span class="k">sub </span><span class="m">_Generate322KeySetKey224</span> <span class="s">{</span> 6535 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6536 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6537 6538 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6539 <span class="s">}</span> 6540 6541 <span class="c"># Generate 322 keyset key 225 value as 1/0 indicating its presence/absence or</span> 6542 <span class="c"># count of its presence in a molecule.</span> 6543 <span class="c">#</span> 6544 <span class="c"># Key 225 description: S#Br</span> 6545 <span class="c">#</span> <a name="_Generate322KeySetKey225-"></a>6546 <span class="k">sub </span><span class="m">_Generate322KeySetKey225</span> <span class="s">{</span> 6547 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6548 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6549 6550 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6551 <span class="s">}</span> 6552 6553 <span class="c"># Generate 322 keyset key 226 value as 1/0 indicating its presence/absence or</span> 6554 <span class="c"># count of its presence in a molecule.</span> 6555 <span class="c">#</span> 6556 <span class="c"># Key 226 description: S#Si</span> 6557 <span class="c">#</span> <a name="_Generate322KeySetKey226-"></a>6558 <span class="k">sub </span><span class="m">_Generate322KeySetKey226</span> <span class="s">{</span> 6559 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6560 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6561 6562 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6563 <span class="s">}</span> 6564 6565 <span class="c"># Generate 322 keyset key 227 value as 1/0 indicating its presence/absence or</span> 6566 <span class="c"># count of its presence in a molecule.</span> 6567 <span class="c">#</span> 6568 <span class="c"># Key 227 description: S#I</span> 6569 <span class="c">#</span> <a name="_Generate322KeySetKey227-"></a>6570 <span class="k">sub </span><span class="m">_Generate322KeySetKey227</span> <span class="s">{</span> 6571 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6572 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6573 6574 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6575 <span class="s">}</span> 6576 6577 <span class="c"># Generate 322 keyset key 228 value as 1/0 indicating its presence/absence or</span> 6578 <span class="c"># count of its presence in a molecule.</span> 6579 <span class="c">#</span> 6580 <span class="c"># Key 228 description: S#X</span> 6581 <span class="c">#</span> <a name="_Generate322KeySetKey228-"></a>6582 <span class="k">sub </span><span class="m">_Generate322KeySetKey228</span> <span class="s">{</span> 6583 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6584 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6585 6586 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6587 <span class="s">}</span> 6588 6589 <span class="c"># Generate 322 keyset key 229 value as 1/0 indicating its presence/absence or</span> 6590 <span class="c"># count of its presence in a molecule.</span> 6591 <span class="c">#</span> 6592 <span class="c"># Key 229 description: Cl#Cl</span> 6593 <span class="c">#</span> <a name="_Generate322KeySetKey229-"></a>6594 <span class="k">sub </span><span class="m">_Generate322KeySetKey229</span> <span class="s">{</span> 6595 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6596 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6597 6598 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6599 <span class="s">}</span> 6600 6601 <span class="c"># Generate 322 keyset key 230 value as 1/0 indicating its presence/absence or</span> 6602 <span class="c"># count of its presence in a molecule.</span> 6603 <span class="c">#</span> 6604 <span class="c"># Key 230 description: Cl#P</span> 6605 <span class="c">#</span> <a name="_Generate322KeySetKey230-"></a>6606 <span class="k">sub </span><span class="m">_Generate322KeySetKey230</span> <span class="s">{</span> 6607 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6608 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6609 6610 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6611 <span class="s">}</span> 6612 6613 <span class="c"># Generate 322 keyset key 231 value as 1/0 indicating its presence/absence or</span> 6614 <span class="c"># count of its presence in a molecule.</span> 6615 <span class="c">#</span> 6616 <span class="c"># Key 231 description: Cl#F</span> 6617 <span class="c">#</span> <a name="_Generate322KeySetKey231-"></a>6618 <span class="k">sub </span><span class="m">_Generate322KeySetKey231</span> <span class="s">{</span> 6619 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6620 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6621 6622 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6623 <span class="s">}</span> 6624 6625 <span class="c"># Generate 322 keyset key 232 value as 1/0 indicating its presence/absence or</span> 6626 <span class="c"># count of its presence in a molecule.</span> 6627 <span class="c">#</span> 6628 <span class="c"># Key 232 description: Cl#Br</span> 6629 <span class="c">#</span> <a name="_Generate322KeySetKey232-"></a>6630 <span class="k">sub </span><span class="m">_Generate322KeySetKey232</span> <span class="s">{</span> 6631 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6632 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6633 6634 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6635 <span class="s">}</span> 6636 6637 <span class="c"># Generate 322 keyset key 233 value as 1/0 indicating its presence/absence or</span> 6638 <span class="c"># count of its presence in a molecule.</span> 6639 <span class="c">#</span> 6640 <span class="c"># Key 233 description: Cl#Si</span> 6641 <span class="c">#</span> <a name="_Generate322KeySetKey233-"></a>6642 <span class="k">sub </span><span class="m">_Generate322KeySetKey233</span> <span class="s">{</span> 6643 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6644 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6645 6646 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6647 <span class="s">}</span> 6648 6649 <span class="c"># Generate 322 keyset key 234 value as 1/0 indicating its presence/absence or</span> 6650 <span class="c"># count of its presence in a molecule.</span> 6651 <span class="c">#</span> 6652 <span class="c"># Key 234 description: Cl#I</span> 6653 <span class="c">#</span> <a name="_Generate322KeySetKey234-"></a>6654 <span class="k">sub </span><span class="m">_Generate322KeySetKey234</span> <span class="s">{</span> 6655 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6656 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6657 6658 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6659 <span class="s">}</span> 6660 6661 <span class="c"># Generate 322 keyset key 235 value as 1/0 indicating its presence/absence or</span> 6662 <span class="c"># count of its presence in a molecule.</span> 6663 <span class="c">#</span> 6664 <span class="c"># Key 235 description: Cl#X</span> 6665 <span class="c">#</span> <a name="_Generate322KeySetKey235-"></a>6666 <span class="k">sub </span><span class="m">_Generate322KeySetKey235</span> <span class="s">{</span> 6667 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6668 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6669 6670 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6671 <span class="s">}</span> 6672 6673 <span class="c"># Generate 322 keyset key 236 value as 1/0 indicating its presence/absence or</span> 6674 <span class="c"># count of its presence in a molecule.</span> 6675 <span class="c">#</span> 6676 <span class="c"># Key 236 description: P#P</span> 6677 <span class="c">#</span> <a name="_Generate322KeySetKey236-"></a>6678 <span class="k">sub </span><span class="m">_Generate322KeySetKey236</span> <span class="s">{</span> 6679 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6680 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6681 6682 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6683 <span class="s">}</span> 6684 6685 <span class="c"># Generate 322 keyset key 237 value as 1/0 indicating its presence/absence or</span> 6686 <span class="c"># count of its presence in a molecule.</span> 6687 <span class="c">#</span> 6688 <span class="c"># Key 237 description: P#F</span> 6689 <span class="c">#</span> <a name="_Generate322KeySetKey237-"></a>6690 <span class="k">sub </span><span class="m">_Generate322KeySetKey237</span> <span class="s">{</span> 6691 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6692 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6693 6694 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6695 <span class="s">}</span> 6696 6697 <span class="c"># Generate 322 keyset key 238 value as 1/0 indicating its presence/absence or</span> 6698 <span class="c"># count of its presence in a molecule.</span> 6699 <span class="c">#</span> 6700 <span class="c"># Key 238 description: P#Br</span> 6701 <span class="c">#</span> <a name="_Generate322KeySetKey238-"></a>6702 <span class="k">sub </span><span class="m">_Generate322KeySetKey238</span> <span class="s">{</span> 6703 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6704 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6705 6706 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6707 <span class="s">}</span> 6708 6709 <span class="c"># Generate 322 keyset key 239 value as 1/0 indicating its presence/absence or</span> 6710 <span class="c"># count of its presence in a molecule.</span> 6711 <span class="c">#</span> 6712 <span class="c"># Key 239 description: P#Si</span> 6713 <span class="c">#</span> <a name="_Generate322KeySetKey239-"></a>6714 <span class="k">sub </span><span class="m">_Generate322KeySetKey239</span> <span class="s">{</span> 6715 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6716 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6717 6718 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6719 <span class="s">}</span> 6720 6721 <span class="c"># Generate 322 keyset key 240 value as 1/0 indicating its presence/absence or</span> 6722 <span class="c"># count of its presence in a molecule.</span> 6723 <span class="c">#</span> 6724 <span class="c"># Key 240 description: P#I</span> 6725 <span class="c">#</span> <a name="_Generate322KeySetKey240-"></a>6726 <span class="k">sub </span><span class="m">_Generate322KeySetKey240</span> <span class="s">{</span> 6727 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6728 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6729 6730 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6731 <span class="s">}</span> 6732 6733 <span class="c"># Generate 322 keyset key 241 value as 1/0 indicating its presence/absence or</span> 6734 <span class="c"># count of its presence in a molecule.</span> 6735 <span class="c">#</span> 6736 <span class="c"># Key 241 description: P#X</span> 6737 <span class="c">#</span> <a name="_Generate322KeySetKey241-"></a>6738 <span class="k">sub </span><span class="m">_Generate322KeySetKey241</span> <span class="s">{</span> 6739 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6740 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6741 6742 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6743 <span class="s">}</span> 6744 6745 <span class="c"># Generate 322 keyset key 242 value as 1/0 indicating its presence/absence or</span> 6746 <span class="c"># count of its presence in a molecule.</span> 6747 <span class="c">#</span> 6748 <span class="c"># Key 242 description: F#F</span> 6749 <span class="c">#</span> <a name="_Generate322KeySetKey242-"></a>6750 <span class="k">sub </span><span class="m">_Generate322KeySetKey242</span> <span class="s">{</span> 6751 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6752 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6753 6754 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6755 <span class="s">}</span> 6756 6757 <span class="c"># Generate 322 keyset key 243 value as 1/0 indicating its presence/absence or</span> 6758 <span class="c"># count of its presence in a molecule.</span> 6759 <span class="c">#</span> 6760 <span class="c"># Key 243 description: F#Br</span> 6761 <span class="c">#</span> <a name="_Generate322KeySetKey243-"></a>6762 <span class="k">sub </span><span class="m">_Generate322KeySetKey243</span> <span class="s">{</span> 6763 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6764 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6765 6766 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6767 <span class="s">}</span> 6768 6769 <span class="c"># Generate 322 keyset key 244 value as 1/0 indicating its presence/absence or</span> 6770 <span class="c"># count of its presence in a molecule.</span> 6771 <span class="c">#</span> 6772 <span class="c"># Key 244 description: F#Si</span> 6773 <span class="c">#</span> <a name="_Generate322KeySetKey244-"></a>6774 <span class="k">sub </span><span class="m">_Generate322KeySetKey244</span> <span class="s">{</span> 6775 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6776 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6777 6778 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6779 <span class="s">}</span> 6780 6781 <span class="c"># Generate 322 keyset key 245 value as 1/0 indicating its presence/absence or</span> 6782 <span class="c"># count of its presence in a molecule.</span> 6783 <span class="c">#</span> 6784 <span class="c"># Key 245 description: F#I</span> 6785 <span class="c">#</span> <a name="_Generate322KeySetKey245-"></a>6786 <span class="k">sub </span><span class="m">_Generate322KeySetKey245</span> <span class="s">{</span> 6787 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6788 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6789 6790 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6791 <span class="s">}</span> 6792 6793 <span class="c"># Generate 322 keyset key 246 value as 1/0 indicating its presence/absence or</span> 6794 <span class="c"># count of its presence in a molecule.</span> 6795 <span class="c">#</span> 6796 <span class="c"># Key 246 description: F#X</span> 6797 <span class="c">#</span> <a name="_Generate322KeySetKey246-"></a>6798 <span class="k">sub </span><span class="m">_Generate322KeySetKey246</span> <span class="s">{</span> 6799 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6800 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6801 6802 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6803 <span class="s">}</span> 6804 6805 <span class="c"># Generate 322 keyset key 247 value as 1/0 indicating its presence/absence or</span> 6806 <span class="c"># count of its presence in a molecule.</span> 6807 <span class="c">#</span> 6808 <span class="c"># Key 247 description: Br#Br</span> 6809 <span class="c">#</span> <a name="_Generate322KeySetKey247-"></a>6810 <span class="k">sub </span><span class="m">_Generate322KeySetKey247</span> <span class="s">{</span> 6811 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6812 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6813 6814 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6815 <span class="s">}</span> 6816 6817 <span class="c"># Generate 322 keyset key 248 value as 1/0 indicating its presence/absence or</span> 6818 <span class="c"># count of its presence in a molecule.</span> 6819 <span class="c">#</span> 6820 <span class="c"># Key 248 description: Br#Si</span> 6821 <span class="c">#</span> <a name="_Generate322KeySetKey248-"></a>6822 <span class="k">sub </span><span class="m">_Generate322KeySetKey248</span> <span class="s">{</span> 6823 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6824 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6825 6826 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6827 <span class="s">}</span> 6828 6829 <span class="c"># Generate 322 keyset key 249 value as 1/0 indicating its presence/absence or</span> 6830 <span class="c"># count of its presence in a molecule.</span> 6831 <span class="c">#</span> 6832 <span class="c"># Key 249 description: Br#I</span> 6833 <span class="c">#</span> <a name="_Generate322KeySetKey249-"></a>6834 <span class="k">sub </span><span class="m">_Generate322KeySetKey249</span> <span class="s">{</span> 6835 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6836 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6837 6838 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6839 <span class="s">}</span> 6840 6841 <span class="c"># Generate 322 keyset key 250 value as 1/0 indicating its presence/absence or</span> 6842 <span class="c"># count of its presence in a molecule.</span> 6843 <span class="c">#</span> 6844 <span class="c"># Key 250 description: Br#X</span> 6845 <span class="c">#</span> <a name="_Generate322KeySetKey250-"></a>6846 <span class="k">sub </span><span class="m">_Generate322KeySetKey250</span> <span class="s">{</span> 6847 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6848 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6849 6850 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6851 <span class="s">}</span> 6852 6853 <span class="c"># Generate 322 keyset key 251 value as 1/0 indicating its presence/absence or</span> 6854 <span class="c"># count of its presence in a molecule.</span> 6855 <span class="c">#</span> 6856 <span class="c"># Key 251 description: Si#Si</span> 6857 <span class="c">#</span> <a name="_Generate322KeySetKey251-"></a>6858 <span class="k">sub </span><span class="m">_Generate322KeySetKey251</span> <span class="s">{</span> 6859 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6860 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6861 6862 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6863 <span class="s">}</span> 6864 6865 <span class="c"># Generate 322 keyset key 252 value as 1/0 indicating its presence/absence or</span> 6866 <span class="c"># count of its presence in a molecule.</span> 6867 <span class="c">#</span> 6868 <span class="c"># Key 252 description: Si#I</span> 6869 <span class="c">#</span> <a name="_Generate322KeySetKey252-"></a>6870 <span class="k">sub </span><span class="m">_Generate322KeySetKey252</span> <span class="s">{</span> 6871 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6872 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6873 6874 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6875 <span class="s">}</span> 6876 6877 <span class="c"># Generate 322 keyset key 253 value as 1/0 indicating its presence/absence or</span> 6878 <span class="c"># count of its presence in a molecule.</span> 6879 <span class="c">#</span> 6880 <span class="c"># Key 253 description: Si#X</span> 6881 <span class="c">#</span> <a name="_Generate322KeySetKey253-"></a>6882 <span class="k">sub </span><span class="m">_Generate322KeySetKey253</span> <span class="s">{</span> 6883 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6884 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6885 6886 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6887 <span class="s">}</span> 6888 6889 <span class="c"># Generate 322 keyset key 254 value as 1/0 indicating its presence/absence or</span> 6890 <span class="c"># count of its presence in a molecule.</span> 6891 <span class="c">#</span> 6892 <span class="c"># Key 254 description: I#I</span> 6893 <span class="c">#</span> <a name="_Generate322KeySetKey254-"></a>6894 <span class="k">sub </span><span class="m">_Generate322KeySetKey254</span> <span class="s">{</span> 6895 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6896 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6897 6898 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6899 <span class="s">}</span> 6900 6901 <span class="c"># Generate 322 keyset key 255 value as 1/0 indicating its presence/absence or</span> 6902 <span class="c"># count of its presence in a molecule.</span> 6903 <span class="c">#</span> 6904 <span class="c"># Key 255 description: I#X</span> 6905 <span class="c">#</span> <a name="_Generate322KeySetKey255-"></a>6906 <span class="k">sub </span><span class="m">_Generate322KeySetKey255</span> <span class="s">{</span> 6907 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6908 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6909 6910 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6911 <span class="s">}</span> 6912 6913 <span class="c"># Generate 322 keyset key 256 value as 1/0 indicating its presence/absence or</span> 6914 <span class="c"># count of its presence in a molecule.</span> 6915 <span class="c">#</span> 6916 <span class="c"># Key 256 description: X#X</span> 6917 <span class="c">#</span> <a name="_Generate322KeySetKey256-"></a>6918 <span class="k">sub </span><span class="m">_Generate322KeySetKey256</span> <span class="s">{</span> 6919 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6920 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'#'</span><span class="sc">;</span> 6921 6922 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Z'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6923 <span class="s">}</span> 6924 6925 <span class="c"># Generate 322 keyset key 257 value as 1/0 indicating its presence/absence or</span> 6926 <span class="c"># count of its presence in a molecule.</span> 6927 <span class="c">#</span> 6928 <span class="c"># Key 257 description: C$C</span> 6929 <span class="c">#</span> <a name="_Generate322KeySetKey257-"></a>6930 <span class="k">sub </span><span class="m">_Generate322KeySetKey257</span> <span class="s">{</span> 6931 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6932 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 6933 6934 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'C'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6935 <span class="s">}</span> 6936 6937 <span class="c"># Generate 322 keyset key 258 value as 1/0 indicating its presence/absence or</span> 6938 <span class="c"># count of its presence in a molecule.</span> 6939 <span class="c">#</span> 6940 <span class="c"># Key 258 description: C$N</span> 6941 <span class="c">#</span> <a name="_Generate322KeySetKey258-"></a>6942 <span class="k">sub </span><span class="m">_Generate322KeySetKey258</span> <span class="s">{</span> 6943 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6944 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 6945 6946 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6947 <span class="s">}</span> 6948 6949 <span class="c"># Generate 322 keyset key 259 value as 1/0 indicating its presence/absence or</span> 6950 <span class="c"># count of its presence in a molecule.</span> 6951 <span class="c">#</span> 6952 <span class="c"># Key 259 description: C$O</span> 6953 <span class="c">#</span> <a name="_Generate322KeySetKey259-"></a>6954 <span class="k">sub </span><span class="m">_Generate322KeySetKey259</span> <span class="s">{</span> 6955 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6956 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 6957 6958 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6959 <span class="s">}</span> 6960 6961 <span class="c"># Generate 322 keyset key 260 value as 1/0 indicating its presence/absence or</span> 6962 <span class="c"># count of its presence in a molecule.</span> 6963 <span class="c">#</span> 6964 <span class="c"># Key 260 description: C$S</span> 6965 <span class="c">#</span> <a name="_Generate322KeySetKey260-"></a>6966 <span class="k">sub </span><span class="m">_Generate322KeySetKey260</span> <span class="s">{</span> 6967 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6968 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 6969 6970 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6971 <span class="s">}</span> 6972 6973 <span class="c"># Generate 322 keyset key 261 value as 1/0 indicating its presence/absence or</span> 6974 <span class="c"># count of its presence in a molecule.</span> 6975 <span class="c">#</span> 6976 <span class="c"># Key 261 description: C$Cl</span> 6977 <span class="c">#</span> <a name="_Generate322KeySetKey261-"></a>6978 <span class="k">sub </span><span class="m">_Generate322KeySetKey261</span> <span class="s">{</span> 6979 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6980 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 6981 6982 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6983 <span class="s">}</span> 6984 6985 <span class="c"># Generate 322 keyset key 262 value as 1/0 indicating its presence/absence or</span> 6986 <span class="c"># count of its presence in a molecule.</span> 6987 <span class="c">#</span> 6988 <span class="c"># Key 262 description: C$P</span> 6989 <span class="c">#</span> <a name="_Generate322KeySetKey262-"></a>6990 <span class="k">sub </span><span class="m">_Generate322KeySetKey262</span> <span class="s">{</span> 6991 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 6992 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 6993 6994 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 6995 <span class="s">}</span> 6996 6997 <span class="c"># Generate 322 keyset key 263 value as 1/0 indicating its presence/absence or</span> 6998 <span class="c"># count of its presence in a molecule.</span> 6999 <span class="c">#</span> 7000 <span class="c"># Key 263 description: C$F</span> 7001 <span class="c">#</span> <a name="_Generate322KeySetKey263-"></a>7002 <span class="k">sub </span><span class="m">_Generate322KeySetKey263</span> <span class="s">{</span> 7003 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7004 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7005 7006 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7007 <span class="s">}</span> 7008 7009 <span class="c"># Generate 322 keyset key 264 value as 1/0 indicating its presence/absence or</span> 7010 <span class="c"># count of its presence in a molecule.</span> 7011 <span class="c">#</span> 7012 <span class="c"># Key 264 description: C$Br</span> 7013 <span class="c">#</span> <a name="_Generate322KeySetKey264-"></a>7014 <span class="k">sub </span><span class="m">_Generate322KeySetKey264</span> <span class="s">{</span> 7015 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7016 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7017 7018 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7019 <span class="s">}</span> 7020 7021 <span class="c"># Generate 322 keyset key 265 value as 1/0 indicating its presence/absence or</span> 7022 <span class="c"># count of its presence in a molecule.</span> 7023 <span class="c">#</span> 7024 <span class="c"># Key 265 description: C$Si</span> 7025 <span class="c">#</span> <a name="_Generate322KeySetKey265-"></a>7026 <span class="k">sub </span><span class="m">_Generate322KeySetKey265</span> <span class="s">{</span> 7027 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7028 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7029 7030 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7031 <span class="s">}</span> 7032 7033 <span class="c"># Generate 322 keyset key 266 value as 1/0 indicating its presence/absence or</span> 7034 <span class="c"># count of its presence in a molecule.</span> 7035 <span class="c">#</span> 7036 <span class="c"># Key 266 description: C$I</span> 7037 <span class="c">#</span> <a name="_Generate322KeySetKey266-"></a>7038 <span class="k">sub </span><span class="m">_Generate322KeySetKey266</span> <span class="s">{</span> 7039 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7040 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7041 7042 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7043 <span class="s">}</span> 7044 7045 <span class="c"># Generate 322 keyset key 267 value as 1/0 indicating its presence/absence or</span> 7046 <span class="c"># count of its presence in a molecule.</span> 7047 <span class="c">#</span> 7048 <span class="c"># Key 267 description: C$X</span> 7049 <span class="c">#</span> <a name="_Generate322KeySetKey267-"></a>7050 <span class="k">sub </span><span class="m">_Generate322KeySetKey267</span> <span class="s">{</span> 7051 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7052 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7053 7054 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'C'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7055 <span class="s">}</span> 7056 7057 <span class="c"># Generate 322 keyset key 268 value as 1/0 indicating its presence/absence or</span> 7058 <span class="c"># count of its presence in a molecule.</span> 7059 <span class="c">#</span> 7060 <span class="c"># Key 268 description: N$N</span> 7061 <span class="c">#</span> <a name="_Generate322KeySetKey268-"></a>7062 <span class="k">sub </span><span class="m">_Generate322KeySetKey268</span> <span class="s">{</span> 7063 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7064 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7065 7066 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'N'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7067 <span class="s">}</span> 7068 7069 <span class="c"># Generate 322 keyset key 269 value as 1/0 indicating its presence/absence or</span> 7070 <span class="c"># count of its presence in a molecule.</span> 7071 <span class="c">#</span> 7072 <span class="c"># Key 269 description: N$O</span> 7073 <span class="c">#</span> <a name="_Generate322KeySetKey269-"></a>7074 <span class="k">sub </span><span class="m">_Generate322KeySetKey269</span> <span class="s">{</span> 7075 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7076 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7077 7078 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7079 <span class="s">}</span> 7080 7081 <span class="c"># Generate 322 keyset key 270 value as 1/0 indicating its presence/absence or</span> 7082 <span class="c"># count of its presence in a molecule.</span> 7083 <span class="c">#</span> 7084 <span class="c"># Key 270 description: N$S</span> 7085 <span class="c">#</span> <a name="_Generate322KeySetKey270-"></a>7086 <span class="k">sub </span><span class="m">_Generate322KeySetKey270</span> <span class="s">{</span> 7087 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7088 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7089 7090 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7091 <span class="s">}</span> 7092 7093 <span class="c"># Generate 322 keyset key 271 value as 1/0 indicating its presence/absence or</span> 7094 <span class="c"># count of its presence in a molecule.</span> 7095 <span class="c">#</span> 7096 <span class="c"># Key 271 description: N$Cl</span> 7097 <span class="c">#</span> <a name="_Generate322KeySetKey271-"></a>7098 <span class="k">sub </span><span class="m">_Generate322KeySetKey271</span> <span class="s">{</span> 7099 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7100 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7101 7102 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7103 <span class="s">}</span> 7104 7105 <span class="c"># Generate 322 keyset key 272 value as 1/0 indicating its presence/absence or</span> 7106 <span class="c"># count of its presence in a molecule.</span> 7107 <span class="c">#</span> 7108 <span class="c"># Key 272 description: N$P</span> 7109 <span class="c">#</span> <a name="_Generate322KeySetKey272-"></a>7110 <span class="k">sub </span><span class="m">_Generate322KeySetKey272</span> <span class="s">{</span> 7111 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7112 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7113 7114 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7115 <span class="s">}</span> 7116 7117 <span class="c"># Generate 322 keyset key 273 value as 1/0 indicating its presence/absence or</span> 7118 <span class="c"># count of its presence in a molecule.</span> 7119 <span class="c">#</span> 7120 <span class="c"># Key 273 description: N$F</span> 7121 <span class="c">#</span> <a name="_Generate322KeySetKey273-"></a>7122 <span class="k">sub </span><span class="m">_Generate322KeySetKey273</span> <span class="s">{</span> 7123 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7124 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7125 7126 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7127 <span class="s">}</span> 7128 7129 <span class="c"># Generate 322 keyset key 274 value as 1/0 indicating its presence/absence or</span> 7130 <span class="c"># count of its presence in a molecule.</span> 7131 <span class="c">#</span> 7132 <span class="c"># Key 274 description: N$Br</span> 7133 <span class="c">#</span> <a name="_Generate322KeySetKey274-"></a>7134 <span class="k">sub </span><span class="m">_Generate322KeySetKey274</span> <span class="s">{</span> 7135 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7136 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7137 7138 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7139 <span class="s">}</span> 7140 7141 <span class="c"># Generate 322 keyset key 275 value as 1/0 indicating its presence/absence or</span> 7142 <span class="c"># count of its presence in a molecule.</span> 7143 <span class="c">#</span> 7144 <span class="c"># Key 275 description: N$Si</span> 7145 <span class="c">#</span> <a name="_Generate322KeySetKey275-"></a>7146 <span class="k">sub </span><span class="m">_Generate322KeySetKey275</span> <span class="s">{</span> 7147 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7148 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7149 7150 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7151 <span class="s">}</span> 7152 7153 <span class="c"># Generate 322 keyset key 276 value as 1/0 indicating its presence/absence or</span> 7154 <span class="c"># count of its presence in a molecule.</span> 7155 <span class="c">#</span> 7156 <span class="c"># Key 276 description: N$I</span> 7157 <span class="c">#</span> <a name="_Generate322KeySetKey276-"></a>7158 <span class="k">sub </span><span class="m">_Generate322KeySetKey276</span> <span class="s">{</span> 7159 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7160 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7161 7162 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7163 <span class="s">}</span> 7164 7165 <span class="c"># Generate 322 keyset key 277 value as 1/0 indicating its presence/absence or</span> 7166 <span class="c"># count of its presence in a molecule.</span> 7167 <span class="c">#</span> 7168 <span class="c"># Key 277 description: N$X</span> 7169 <span class="c">#</span> <a name="_Generate322KeySetKey277-"></a>7170 <span class="k">sub </span><span class="m">_Generate322KeySetKey277</span> <span class="s">{</span> 7171 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7172 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7173 7174 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'N'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7175 <span class="s">}</span> 7176 7177 <span class="c"># Generate 322 keyset key 278 value as 1/0 indicating its presence/absence or</span> 7178 <span class="c"># count of its presence in a molecule.</span> 7179 <span class="c">#</span> 7180 <span class="c"># Key 278 description: O$O</span> 7181 <span class="c">#</span> <a name="_Generate322KeySetKey278-"></a>7182 <span class="k">sub </span><span class="m">_Generate322KeySetKey278</span> <span class="s">{</span> 7183 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7184 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7185 7186 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'O'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7187 <span class="s">}</span> 7188 7189 <span class="c"># Generate 322 keyset key 279 value as 1/0 indicating its presence/absence or</span> 7190 <span class="c"># count of its presence in a molecule.</span> 7191 <span class="c">#</span> 7192 <span class="c"># Key 279 description: O$S</span> 7193 <span class="c">#</span> <a name="_Generate322KeySetKey279-"></a>7194 <span class="k">sub </span><span class="m">_Generate322KeySetKey279</span> <span class="s">{</span> 7195 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7196 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7197 7198 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7199 <span class="s">}</span> 7200 7201 <span class="c"># Generate 322 keyset key 280 value as 1/0 indicating its presence/absence or</span> 7202 <span class="c"># count of its presence in a molecule.</span> 7203 <span class="c">#</span> 7204 <span class="c"># Key 280 description: O$Cl</span> 7205 <span class="c">#</span> <a name="_Generate322KeySetKey280-"></a>7206 <span class="k">sub </span><span class="m">_Generate322KeySetKey280</span> <span class="s">{</span> 7207 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7208 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7209 7210 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7211 <span class="s">}</span> 7212 7213 <span class="c"># Generate 322 keyset key 281 value as 1/0 indicating its presence/absence or</span> 7214 <span class="c"># count of its presence in a molecule.</span> 7215 <span class="c">#</span> 7216 <span class="c"># Key 281 description: O$P</span> 7217 <span class="c">#</span> <a name="_Generate322KeySetKey281-"></a>7218 <span class="k">sub </span><span class="m">_Generate322KeySetKey281</span> <span class="s">{</span> 7219 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7220 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7221 7222 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7223 <span class="s">}</span> 7224 7225 <span class="c"># Generate 322 keyset key 282 value as 1/0 indicating its presence/absence or</span> 7226 <span class="c"># count of its presence in a molecule.</span> 7227 <span class="c">#</span> 7228 <span class="c"># Key 282 description: O$F</span> 7229 <span class="c">#</span> <a name="_Generate322KeySetKey282-"></a>7230 <span class="k">sub </span><span class="m">_Generate322KeySetKey282</span> <span class="s">{</span> 7231 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7232 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7233 7234 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7235 <span class="s">}</span> 7236 7237 <span class="c"># Generate 322 keyset key 283 value as 1/0 indicating its presence/absence or</span> 7238 <span class="c"># count of its presence in a molecule.</span> 7239 <span class="c">#</span> 7240 <span class="c"># Key 283 description: O$Br</span> 7241 <span class="c">#</span> <a name="_Generate322KeySetKey283-"></a>7242 <span class="k">sub </span><span class="m">_Generate322KeySetKey283</span> <span class="s">{</span> 7243 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7244 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7245 7246 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7247 <span class="s">}</span> 7248 7249 <span class="c"># Generate 322 keyset key 284 value as 1/0 indicating its presence/absence or</span> 7250 <span class="c"># count of its presence in a molecule.</span> 7251 <span class="c">#</span> 7252 <span class="c"># Key 284 description: O$Si</span> 7253 <span class="c">#</span> <a name="_Generate322KeySetKey284-"></a>7254 <span class="k">sub </span><span class="m">_Generate322KeySetKey284</span> <span class="s">{</span> 7255 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7256 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7257 7258 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7259 <span class="s">}</span> 7260 7261 <span class="c"># Generate 322 keyset key 285 value as 1/0 indicating its presence/absence or</span> 7262 <span class="c"># count of its presence in a molecule.</span> 7263 <span class="c">#</span> 7264 <span class="c"># Key 285 description: O$I</span> 7265 <span class="c">#</span> <a name="_Generate322KeySetKey285-"></a>7266 <span class="k">sub </span><span class="m">_Generate322KeySetKey285</span> <span class="s">{</span> 7267 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7268 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7269 7270 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7271 <span class="s">}</span> 7272 7273 <span class="c"># Generate 322 keyset key 286 value as 1/0 indicating its presence/absence or</span> 7274 <span class="c"># count of its presence in a molecule.</span> 7275 <span class="c">#</span> 7276 <span class="c"># Key 286 description: O$X</span> 7277 <span class="c">#</span> <a name="_Generate322KeySetKey286-"></a>7278 <span class="k">sub </span><span class="m">_Generate322KeySetKey286</span> <span class="s">{</span> 7279 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7280 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7281 7282 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'O'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7283 <span class="s">}</span> 7284 7285 <span class="c"># Generate 322 keyset key 287 value as 1/0 indicating its presence/absence or</span> 7286 <span class="c"># count of its presence in a molecule.</span> 7287 <span class="c">#</span> 7288 <span class="c"># Key 287 description: S$S</span> 7289 <span class="c">#</span> <a name="_Generate322KeySetKey287-"></a>7290 <span class="k">sub </span><span class="m">_Generate322KeySetKey287</span> <span class="s">{</span> 7291 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7292 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7293 7294 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'S'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7295 <span class="s">}</span> 7296 7297 <span class="c"># Generate 322 keyset key 288 value as 1/0 indicating its presence/absence or</span> 7298 <span class="c"># count of its presence in a molecule.</span> 7299 <span class="c">#</span> 7300 <span class="c"># Key 288 description: S$Cl</span> 7301 <span class="c">#</span> <a name="_Generate322KeySetKey288-"></a>7302 <span class="k">sub </span><span class="m">_Generate322KeySetKey288</span> <span class="s">{</span> 7303 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7304 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7305 7306 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7307 <span class="s">}</span> 7308 7309 <span class="c"># Generate 322 keyset key 289 value as 1/0 indicating its presence/absence or</span> 7310 <span class="c"># count of its presence in a molecule.</span> 7311 <span class="c">#</span> 7312 <span class="c"># Key 289 description: S$P</span> 7313 <span class="c">#</span> <a name="_Generate322KeySetKey289-"></a>7314 <span class="k">sub </span><span class="m">_Generate322KeySetKey289</span> <span class="s">{</span> 7315 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7316 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7317 7318 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7319 <span class="s">}</span> 7320 7321 <span class="c"># Generate 322 keyset key 290 value as 1/0 indicating its presence/absence or</span> 7322 <span class="c"># count of its presence in a molecule.</span> 7323 <span class="c">#</span> 7324 <span class="c"># Key 290 description: S$F</span> 7325 <span class="c">#</span> <a name="_Generate322KeySetKey290-"></a>7326 <span class="k">sub </span><span class="m">_Generate322KeySetKey290</span> <span class="s">{</span> 7327 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7328 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7329 7330 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7331 <span class="s">}</span> 7332 7333 <span class="c"># Generate 322 keyset key 291 value as 1/0 indicating its presence/absence or</span> 7334 <span class="c"># count of its presence in a molecule.</span> 7335 <span class="c">#</span> 7336 <span class="c"># Key 291 description: S$Br</span> 7337 <span class="c">#</span> <a name="_Generate322KeySetKey291-"></a>7338 <span class="k">sub </span><span class="m">_Generate322KeySetKey291</span> <span class="s">{</span> 7339 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7340 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7341 7342 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7343 <span class="s">}</span> 7344 7345 <span class="c"># Generate 322 keyset key 292 value as 1/0 indicating its presence/absence or</span> 7346 <span class="c"># count of its presence in a molecule.</span> 7347 <span class="c">#</span> 7348 <span class="c"># Key 292 description: S$Si</span> 7349 <span class="c">#</span> <a name="_Generate322KeySetKey292-"></a>7350 <span class="k">sub </span><span class="m">_Generate322KeySetKey292</span> <span class="s">{</span> 7351 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7352 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7353 7354 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7355 <span class="s">}</span> 7356 7357 <span class="c"># Generate 322 keyset key 293 value as 1/0 indicating its presence/absence or</span> 7358 <span class="c"># count of its presence in a molecule.</span> 7359 <span class="c">#</span> 7360 <span class="c"># Key 293 description: S$I</span> 7361 <span class="c">#</span> <a name="_Generate322KeySetKey293-"></a>7362 <span class="k">sub </span><span class="m">_Generate322KeySetKey293</span> <span class="s">{</span> 7363 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7364 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7365 7366 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7367 <span class="s">}</span> 7368 7369 <span class="c"># Generate 322 keyset key 294 value as 1/0 indicating its presence/absence or</span> 7370 <span class="c"># count of its presence in a molecule.</span> 7371 <span class="c">#</span> 7372 <span class="c"># Key 294 description: S$X</span> 7373 <span class="c">#</span> <a name="_Generate322KeySetKey294-"></a>7374 <span class="k">sub </span><span class="m">_Generate322KeySetKey294</span> <span class="s">{</span> 7375 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7376 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7377 7378 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'S'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7379 <span class="s">}</span> 7380 7381 <span class="c"># Generate 322 keyset key 295 value as 1/0 indicating its presence/absence or</span> 7382 <span class="c"># count of its presence in a molecule.</span> 7383 <span class="c">#</span> 7384 <span class="c"># Key 295 description: Cl$Cl</span> 7385 <span class="c">#</span> <a name="_Generate322KeySetKey295-"></a>7386 <span class="k">sub </span><span class="m">_Generate322KeySetKey295</span> <span class="s">{</span> 7387 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7388 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7389 7390 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Cl'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7391 <span class="s">}</span> 7392 7393 <span class="c"># Generate 322 keyset key 296 value as 1/0 indicating its presence/absence or</span> 7394 <span class="c"># count of its presence in a molecule.</span> 7395 <span class="c">#</span> 7396 <span class="c"># Key 296 description: Cl$P</span> 7397 <span class="c">#</span> <a name="_Generate322KeySetKey296-"></a>7398 <span class="k">sub </span><span class="m">_Generate322KeySetKey296</span> <span class="s">{</span> 7399 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7400 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7401 7402 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7403 <span class="s">}</span> 7404 7405 <span class="c"># Generate 322 keyset key 297 value as 1/0 indicating its presence/absence or</span> 7406 <span class="c"># count of its presence in a molecule.</span> 7407 <span class="c">#</span> 7408 <span class="c"># Key 297 description: Cl$F</span> 7409 <span class="c">#</span> <a name="_Generate322KeySetKey297-"></a>7410 <span class="k">sub </span><span class="m">_Generate322KeySetKey297</span> <span class="s">{</span> 7411 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7412 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7413 7414 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7415 <span class="s">}</span> 7416 7417 <span class="c"># Generate 322 keyset key 298 value as 1/0 indicating its presence/absence or</span> 7418 <span class="c"># count of its presence in a molecule.</span> 7419 <span class="c">#</span> 7420 <span class="c"># Key 298 description: Cl$Br</span> 7421 <span class="c">#</span> <a name="_Generate322KeySetKey298-"></a>7422 <span class="k">sub </span><span class="m">_Generate322KeySetKey298</span> <span class="s">{</span> 7423 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7424 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7425 7426 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7427 <span class="s">}</span> 7428 7429 <span class="c"># Generate 322 keyset key 299 value as 1/0 indicating its presence/absence or</span> 7430 <span class="c"># count of its presence in a molecule.</span> 7431 <span class="c">#</span> 7432 <span class="c"># Key 299 description: Cl$Si</span> 7433 <span class="c">#</span> <a name="_Generate322KeySetKey299-"></a>7434 <span class="k">sub </span><span class="m">_Generate322KeySetKey299</span> <span class="s">{</span> 7435 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7436 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7437 7438 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7439 <span class="s">}</span> 7440 7441 <span class="c"># Generate 322 keyset key 300 value as 1/0 indicating its presence/absence or</span> 7442 <span class="c"># count of its presence in a molecule.</span> 7443 <span class="c">#</span> 7444 <span class="c"># Key 300 description: Cl$I</span> 7445 <span class="c">#</span> <a name="_Generate322KeySetKey300-"></a>7446 <span class="k">sub </span><span class="m">_Generate322KeySetKey300</span> <span class="s">{</span> 7447 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7448 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7449 7450 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7451 <span class="s">}</span> 7452 7453 <span class="c"># Generate 322 keyset key 301 value as 1/0 indicating its presence/absence or</span> 7454 <span class="c"># count of its presence in a molecule.</span> 7455 <span class="c">#</span> 7456 <span class="c"># Key 301 description: Cl$X</span> 7457 <span class="c">#</span> <a name="_Generate322KeySetKey301-"></a>7458 <span class="k">sub </span><span class="m">_Generate322KeySetKey301</span> <span class="s">{</span> 7459 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7460 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7461 7462 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Cl'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7463 <span class="s">}</span> 7464 7465 <span class="c"># Generate 322 keyset key 302 value as 1/0 indicating its presence/absence or</span> 7466 <span class="c"># count of its presence in a molecule.</span> 7467 <span class="c">#</span> 7468 <span class="c"># Key 302 description: P$P</span> 7469 <span class="c">#</span> <a name="_Generate322KeySetKey302-"></a>7470 <span class="k">sub </span><span class="m">_Generate322KeySetKey302</span> <span class="s">{</span> 7471 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7472 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7473 7474 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'P'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7475 <span class="s">}</span> 7476 7477 <span class="c"># Generate 322 keyset key 303 value as 1/0 indicating its presence/absence or</span> 7478 <span class="c"># count of its presence in a molecule.</span> 7479 <span class="c">#</span> 7480 <span class="c"># Key 303 description: P$F</span> 7481 <span class="c">#</span> <a name="_Generate322KeySetKey303-"></a>7482 <span class="k">sub </span><span class="m">_Generate322KeySetKey303</span> <span class="s">{</span> 7483 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7484 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7485 7486 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7487 <span class="s">}</span> 7488 7489 <span class="c"># Generate 322 keyset key 304 value as 1/0 indicating its presence/absence or</span> 7490 <span class="c"># count of its presence in a molecule.</span> 7491 <span class="c">#</span> 7492 <span class="c"># Key 304 description: P$Br</span> 7493 <span class="c">#</span> <a name="_Generate322KeySetKey304-"></a>7494 <span class="k">sub </span><span class="m">_Generate322KeySetKey304</span> <span class="s">{</span> 7495 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7496 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7497 7498 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7499 <span class="s">}</span> 7500 7501 <span class="c"># Generate 322 keyset key 305 value as 1/0 indicating its presence/absence or</span> 7502 <span class="c"># count of its presence in a molecule.</span> 7503 <span class="c">#</span> 7504 <span class="c"># Key 305 description: P$Si</span> 7505 <span class="c">#</span> <a name="_Generate322KeySetKey305-"></a>7506 <span class="k">sub </span><span class="m">_Generate322KeySetKey305</span> <span class="s">{</span> 7507 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7508 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7509 7510 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7511 <span class="s">}</span> 7512 7513 <span class="c"># Generate 322 keyset key 306 value as 1/0 indicating its presence/absence or</span> 7514 <span class="c"># count of its presence in a molecule.</span> 7515 <span class="c">#</span> 7516 <span class="c"># Key 306 description: P$I</span> 7517 <span class="c">#</span> <a name="_Generate322KeySetKey306-"></a>7518 <span class="k">sub </span><span class="m">_Generate322KeySetKey306</span> <span class="s">{</span> 7519 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7520 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7521 7522 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7523 <span class="s">}</span> 7524 7525 <span class="c"># Generate 322 keyset key 307 value as 1/0 indicating its presence/absence or</span> 7526 <span class="c"># count of its presence in a molecule.</span> 7527 <span class="c">#</span> 7528 <span class="c"># Key 307 description: P$X</span> 7529 <span class="c">#</span> <a name="_Generate322KeySetKey307-"></a>7530 <span class="k">sub </span><span class="m">_Generate322KeySetKey307</span> <span class="s">{</span> 7531 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7532 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7533 7534 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'P'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7535 <span class="s">}</span> 7536 7537 <span class="c"># Generate 322 keyset key 308 value as 1/0 indicating its presence/absence or</span> 7538 <span class="c"># count of its presence in a molecule.</span> 7539 <span class="c">#</span> 7540 <span class="c"># Key 308 description: F$F</span> 7541 <span class="c">#</span> <a name="_Generate322KeySetKey308-"></a>7542 <span class="k">sub </span><span class="m">_Generate322KeySetKey308</span> <span class="s">{</span> 7543 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7544 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7545 7546 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'F'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7547 <span class="s">}</span> 7548 7549 <span class="c"># Generate 322 keyset key 309 value as 1/0 indicating its presence/absence or</span> 7550 <span class="c"># count of its presence in a molecule.</span> 7551 <span class="c">#</span> 7552 <span class="c"># Key 309 description: F$Br</span> 7553 <span class="c">#</span> <a name="_Generate322KeySetKey309-"></a>7554 <span class="k">sub </span><span class="m">_Generate322KeySetKey309</span> <span class="s">{</span> 7555 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7556 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7557 7558 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7559 <span class="s">}</span> 7560 7561 <span class="c"># Generate 322 keyset key 310 value as 1/0 indicating its presence/absence or</span> 7562 <span class="c"># count of its presence in a molecule.</span> 7563 <span class="c">#</span> 7564 <span class="c"># Key 310 description: F$Si</span> 7565 <span class="c">#</span> <a name="_Generate322KeySetKey310-"></a>7566 <span class="k">sub </span><span class="m">_Generate322KeySetKey310</span> <span class="s">{</span> 7567 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7568 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7569 7570 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7571 <span class="s">}</span> 7572 7573 <span class="c"># Generate 322 keyset key 311 value as 1/0 indicating its presence/absence or</span> 7574 <span class="c"># count of its presence in a molecule.</span> 7575 <span class="c">#</span> 7576 <span class="c"># Key 311 description: F$I</span> 7577 <span class="c">#</span> <a name="_Generate322KeySetKey311-"></a>7578 <span class="k">sub </span><span class="m">_Generate322KeySetKey311</span> <span class="s">{</span> 7579 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7580 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7581 7582 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7583 <span class="s">}</span> 7584 7585 <span class="c"># Generate 322 keyset key 312 value as 1/0 indicating its presence/absence or</span> 7586 <span class="c"># count of its presence in a molecule.</span> 7587 <span class="c">#</span> 7588 <span class="c"># Key 312 description: F$X</span> 7589 <span class="c">#</span> <a name="_Generate322KeySetKey312-"></a>7590 <span class="k">sub </span><span class="m">_Generate322KeySetKey312</span> <span class="s">{</span> 7591 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7592 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7593 7594 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'F'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7595 <span class="s">}</span> 7596 7597 <span class="c"># Generate 322 keyset key 313 value as 1/0 indicating its presence/absence or</span> 7598 <span class="c"># count of its presence in a molecule.</span> 7599 <span class="c">#</span> 7600 <span class="c"># Key 313 description: Br$Br</span> 7601 <span class="c">#</span> <a name="_Generate322KeySetKey313-"></a>7602 <span class="k">sub </span><span class="m">_Generate322KeySetKey313</span> <span class="s">{</span> 7603 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7604 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7605 7606 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Br'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7607 <span class="s">}</span> 7608 7609 <span class="c"># Generate 322 keyset key 314 value as 1/0 indicating its presence/absence or</span> 7610 <span class="c"># count of its presence in a molecule.</span> 7611 <span class="c">#</span> 7612 <span class="c"># Key 314 description: Br$Si</span> 7613 <span class="c">#</span> <a name="_Generate322KeySetKey314-"></a>7614 <span class="k">sub </span><span class="m">_Generate322KeySetKey314</span> <span class="s">{</span> 7615 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7616 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7617 7618 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7619 <span class="s">}</span> 7620 7621 <span class="c"># Generate 322 keyset key 315 value as 1/0 indicating its presence/absence or</span> 7622 <span class="c"># count of its presence in a molecule.</span> 7623 <span class="c">#</span> 7624 <span class="c"># Key 315 description: Br$I</span> 7625 <span class="c">#</span> <a name="_Generate322KeySetKey315-"></a>7626 <span class="k">sub </span><span class="m">_Generate322KeySetKey315</span> <span class="s">{</span> 7627 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7628 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7629 7630 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7631 <span class="s">}</span> 7632 7633 <span class="c"># Generate 322 keyset key 316 value as 1/0 indicating its presence/absence or</span> 7634 <span class="c"># count of its presence in a molecule.</span> 7635 <span class="c">#</span> 7636 <span class="c"># Key 316 description: Br$X</span> 7637 <span class="c">#</span> <a name="_Generate322KeySetKey316-"></a>7638 <span class="k">sub </span><span class="m">_Generate322KeySetKey316</span> <span class="s">{</span> 7639 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7640 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7641 7642 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Br'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7643 <span class="s">}</span> 7644 7645 <span class="c"># Generate 322 keyset key 317 value as 1/0 indicating its presence/absence or</span> 7646 <span class="c"># count of its presence in a molecule.</span> 7647 <span class="c">#</span> 7648 <span class="c"># Key 317 description: Si$Si</span> 7649 <span class="c">#</span> <a name="_Generate322KeySetKey317-"></a>7650 <span class="k">sub </span><span class="m">_Generate322KeySetKey317</span> <span class="s">{</span> 7651 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7652 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7653 7654 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Si'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7655 <span class="s">}</span> 7656 7657 <span class="c"># Generate 322 keyset key 318 value as 1/0 indicating its presence/absence or</span> 7658 <span class="c"># count of its presence in a molecule.</span> 7659 <span class="c">#</span> 7660 <span class="c"># Key 318 description: Si$I</span> 7661 <span class="c">#</span> <a name="_Generate322KeySetKey318-"></a>7662 <span class="k">sub </span><span class="m">_Generate322KeySetKey318</span> <span class="s">{</span> 7663 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7664 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7665 7666 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7667 <span class="s">}</span> 7668 7669 <span class="c"># Generate 322 keyset key 319 value as 1/0 indicating its presence/absence or</span> 7670 <span class="c"># count of its presence in a molecule.</span> 7671 <span class="c">#</span> 7672 <span class="c"># Key 319 description: Si$X</span> 7673 <span class="c">#</span> <a name="_Generate322KeySetKey319-"></a>7674 <span class="k">sub </span><span class="m">_Generate322KeySetKey319</span> <span class="s">{</span> 7675 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7676 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7677 7678 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Si'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7679 <span class="s">}</span> 7680 7681 <span class="c"># Generate 322 keyset key 320 value as 1/0 indicating its presence/absence or</span> 7682 <span class="c"># count of its presence in a molecule.</span> 7683 <span class="c">#</span> 7684 <span class="c"># Key 320 description: I$I</span> 7685 <span class="c">#</span> <a name="_Generate322KeySetKey320-"></a>7686 <span class="k">sub </span><span class="m">_Generate322KeySetKey320</span> <span class="s">{</span> 7687 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7688 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7689 7690 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'I'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7691 <span class="s">}</span> 7692 7693 <span class="c"># Generate 322 keyset key 321 value as 1/0 indicating its presence/absence or</span> 7694 <span class="c"># count of its presence in a molecule.</span> 7695 <span class="c">#</span> 7696 <span class="c"># Key 321 description: I$X</span> 7697 <span class="c">#</span> <a name="_Generate322KeySetKey321-"></a>7698 <span class="k">sub </span><span class="m">_Generate322KeySetKey321</span> <span class="s">{</span> 7699 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7700 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7701 7702 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'I'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7703 <span class="s">}</span> 7704 7705 <span class="c"># Generate 322 keyset key 322 value as 1/0 indicating its presence/absence or</span> 7706 <span class="c"># count of its presence in a molecule.</span> 7707 <span class="c">#</span> 7708 <span class="c"># Key 322 description: X$X</span> 7709 <span class="c">#</span> <a name="_Generate322KeySetKey322-"></a>7710 <span class="k">sub </span><span class="m">_Generate322KeySetKey322</span> <span class="s">{</span> 7711 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7712 <span class="k">my</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> = <span class="q">'$'</span><span class="sc">;</span> 7713 7714 <span class="k">return</span> <span class="i">$This</span><span class="i">->_DetectBondKeys</span><span class="s">(</span><span class="q">'Z'</span><span class="cm">,</span> <span class="q">'Z'</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="sc">;</span> 7715 <span class="s">}</span> 7716 7717 <span class="c"># A : Any valid perodic table elemnet symbol</span> <a name="_IsAtom-"></a>7718 <span class="k">sub </span><span class="m">_IsAtom</span> <span class="s">{</span> 7719 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Atom</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7720 7721 <span class="k">return</span> <span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 7722 <span class="s">}</span> 7723 7724 <span class="c"># Q : Hetro atoms; any non-C or non-H atom</span> <a name="_IsHeteroAtom-"></a>7725 <span class="k">sub </span><span class="m">_IsHeteroAtom</span> <span class="s">{</span> 7726 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Atom</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7727 7728 <span class="k">return</span> <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span> =~ <span class="q">/^(1|6)$/</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span> 7729 <span class="s">}</span> 7730 7731 <span class="c"># X : Halogens; F, Cl, Br, I</span> <a name="_IsHalogenAtom-"></a>7732 <span class="k">sub </span><span class="m">_IsHalogenAtom</span> <span class="s">{</span> 7733 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Atom</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7734 7735 <span class="k">return</span> <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span> =~ <span class="q">/^(9|17|35|53)$/</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 7736 <span class="s">}</span> 7737 7738 <span class="c"># Z : Others; other than H, C, N, O, Si, P, S, F, Cl, Br, I</span> <a name="_IsOtherAtom-"></a>7739 <span class="k">sub </span><span class="m">_IsOtherAtom</span> <span class="s">{</span> 7740 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Atom</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7741 7742 <span class="k">return</span> <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetAtomicNumber</span><span class="s">(</span><span class="s">)</span> =~ <span class="q">/^(1|6|7|8|9|14|15|16|17|35|53)$/</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span> 7743 <span class="s">}</span> 7744 7745 <span class="c"># Detect atom keys like Cl, Br and so on...</span> 7746 <span class="c">#</span> <a name="_DetectAtomKeys-"></a>7747 <span class="k">sub </span><span class="m">_DetectAtomKeys</span> <span class="s">{</span> 7748 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$AtomSymbol</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$IsInRing</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7749 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="s">)</span><span class="sc">;</span> 7750 7751 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 7752 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 7753 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$AtomSymbol</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7754 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 7755 <span class="s">}</span> 7756 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$IsInRing</span><span class="s">)</span> && <span class="i">$IsInRing</span> && !<span class="i">$Atom</span><span class="i">->IsInRing</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7757 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 7758 <span class="s">}</span> 7759 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> <span class="s">{</span> 7760 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomMinHydrogenCountMatch</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7761 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 7762 <span class="s">}</span> 7763 <span class="s">}</span> 7764 <span class="i">$KeyValue</span>++<span class="sc">;</span> 7765 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> && <span class="i">$KeyValue</span> < <span class="i">$MinKeyCount</span><span class="s">)</span> <span class="s">{</span> 7766 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 7767 <span class="s">}</span> 7768 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 7769 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 7770 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 7771 <span class="s">}</span> 7772 <span class="s">}</span> 7773 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 7774 <span class="s">}</span> 7775 7776 <span class="c"># Detect bond keys like S-S, N-O and so on...</span> 7777 <span class="c">#</span> <a name="_DetectBondKeys-"></a>7778 <span class="k">sub </span><span class="m">_DetectBondKeys</span> <span class="s">{</span> 7779 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7780 <span class="k">my</span><span class="s">(</span><span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$Atom2</span><span class="cm">,</span> <span class="i">$Bond</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="s">)</span><span class="sc">;</span> 7781 7782 <span class="i">$MatchSpecifiedAtomOrder</span> = <span class="n">0</span><span class="sc">;</span> 7783 7784 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 7785 <span class="j">BOND:</span> <span class="k">for</span> <span class="i">$Bond</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Bonds</span>}}<span class="s">)</span> <span class="s">{</span> 7786 <span class="s">(</span><span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$Atom2</span><span class="s">)</span> = <span class="i">$Bond</span><span class="i">->GetAtoms</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7787 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoBondAtomsMatchBondSymbols</span><span class="s">(</span><span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$Atom2</span><span class="cm">,</span> <span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="cm">,</span> <span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7788 <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> 7789 <span class="s">}</span> 7790 <span class="i">$KeyValue</span>++<span class="sc">;</span> 7791 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> && <span class="i">$KeyValue</span> < <span class="i">$MinKeyCount</span><span class="s">)</span> <span class="s">{</span> 7792 <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> 7793 <span class="s">}</span> 7794 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 7795 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 7796 <span class="k">last</span> <span class="j">BOND</span><span class="sc">;</span> 7797 <span class="s">}</span> 7798 <span class="s">}</span> 7799 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 7800 <span class="s">}</span> 7801 7802 <span class="c"># Detect atom neighborhood keys like ON(C)C, OC(O)O and so on.</span> 7803 <span class="c">#</span> <a name="_DetectAtomNeighborhoodKeys-"></a>7804 <span class="k">sub </span><span class="m">_DetectAtomNeighborhoodKeys</span> <span class="s">{</span> 7805 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$NbrAtomSymbolsRef</span><span class="cm">,</span> <span class="i">$NbrBondSymbolsRef</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$NbrAtomMinHydrogenCountRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7806 <span class="k">my</span><span class="s">(</span><span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$CentralAtom</span><span class="s">)</span><span class="sc">;</span> 7807 7808 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 7809 7810 <span class="j">CENTRALATOM:</span> <span class="k">for</span> <span class="i">$CentralAtom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 7811 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomNeighborhoodMatch</span><span class="s">(</span><span class="i">$CentralAtom</span><span class="cm">,</span> <span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$NbrAtomSymbolsRef</span><span class="cm">,</span> <span class="i">$NbrBondSymbolsRef</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$NbrAtomMinHydrogenCountRef</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7812 <span class="k">next</span> <span class="j">CENTRALATOM</span><span class="sc">;</span> 7813 <span class="s">}</span> 7814 <span class="i">$KeyValue</span>++<span class="sc">;</span> 7815 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> && <span class="i">$KeyValue</span> < <span class="i">$MinKeyCount</span><span class="s">)</span> <span class="s">{</span> 7816 <span class="k">next</span> <span class="j">CENTRALATOM</span><span class="sc">;</span> 7817 <span class="s">}</span> 7818 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 7819 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 7820 <span class="k">last</span> <span class="j">CENTRALATOM</span><span class="sc">;</span> 7821 <span class="s">}</span> 7822 <span class="s">}</span> 7823 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 7824 <span class="s">}</span> 7825 7826 <span class="c"># Detect bond neighborhood keys like A%Anot%A%A and so on.</span> 7827 <span class="c">#</span> <a name="_DetectBondNeighborhoodKeys-"></a>7828 <span class="k">sub </span><span class="m">_DetectBondNeighborhoodKeys</span> <span class="s">{</span> 7829 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$NbrAtomSymbolsRef</span><span class="cm">,</span> <span class="i">$NbrBondSymbolsRef</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$BondAtomMinHydrogenCountRef</span><span class="cm">,</span> <span class="i">$NbrsMinHydrogenCountRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7830 <span class="k">my</span><span class="s">(</span><span class="i">$BondAtomIndex</span><span class="cm">,</span> <span class="i">$BondAtom1</span><span class="cm">,</span> <span class="i">$BondAtom2</span><span class="cm">,</span> <span class="i">$MatchedBondAtom1</span><span class="cm">,</span> <span class="i">$MatchedBondAtom2</span><span class="cm">,</span> <span class="i">$BondAtom</span><span class="cm">,</span> <span class="i">$Bond</span><span class="cm">,</span> <span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$BondAtomSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="cm">,</span> <span class="i">$BondAtom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$BondAtom2MinHydrogenCount</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="cm">,</span> <span class="i">@NbrsToExcludeFromMatch</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrMinHydrogenCount</span><span class="cm">,</span> <span class="s">)</span><span class="sc">;</span> 7831 7832 <span class="i">$MatchSpecifiedAtomOrder</span> = <span class="n">1</span><span class="sc">;</span> 7833 <span class="s">(</span><span class="i">$BondAtom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$BondAtom2MinHydrogenCount</span><span class="s">)</span> = <span class="k">defined</span><span class="s">(</span><span class="i">$BondAtomMinHydrogenCountRef</span><span class="s">)</span> ? <span class="s">(</span> <span class="i">@</span>{<span class="i">$BondAtomMinHydrogenCountRef</span>} <span class="s">)</span> <span class="co">:</span> <span class="s">(</span><span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="sc">;</span> 7834 7835 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 7836 <span class="j">BOND:</span> <span class="k">for</span> <span class="i">$Bond</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Bonds</span>}}<span class="s">)</span> <span class="s">{</span> 7837 <span class="s">(</span><span class="i">$BondAtom1</span><span class="cm">,</span> <span class="i">$BondAtom2</span><span class="s">)</span> = <span class="i">$Bond</span><span class="i">->GetAtoms</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7838 7839 <span class="c"># Match bond first...</span> 7840 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_DoBondAtomsMatchBondSymbols</span><span class="s">(</span><span class="i">$BondAtom1</span><span class="cm">,</span> <span class="i">$BondAtom2</span><span class="cm">,</span> <span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="cm">,</span> <span class="i">$BondAtom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$BondAtom2MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7841 <span class="s">(</span><span class="i">$MatchedBondAtom1</span><span class="cm">,</span> <span class="i">$MatchedBondAtom2</span><span class="s">)</span> = <span class="s">(</span><span class="i">$BondAtom1</span><span class="cm">,</span> <span class="i">$BondAtom2</span><span class="s">)</span><span class="sc">;</span> 7842 <span class="s">}</span> 7843 <span class="k">elsif</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_DoBondAtomsMatchBondSymbols</span><span class="s">(</span><span class="i">$BondAtom2</span><span class="cm">,</span> <span class="i">$BondAtom1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol1</span><span class="cm">,</span> <span class="i">$BondAtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="cm">,</span> <span class="i">$BondAtom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$BondAtom2MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7844 <span class="s">(</span><span class="i">$MatchedBondAtom1</span><span class="cm">,</span> <span class="i">$MatchedBondAtom2</span><span class="s">)</span> = <span class="s">(</span><span class="i">$BondAtom2</span><span class="cm">,</span> <span class="i">$BondAtom1</span><span class="s">)</span><span class="sc">;</span> 7845 <span class="s">}</span> 7846 <span class="k">else</span> <span class="s">{</span> 7847 <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> 7848 <span class="s">}</span> 7849 <span class="c"># Match neighbors of bonded atoms...</span> 7850 <span class="k">for</span> <span class="i">$BondAtomIndex</span> <span class="s">(</span><span class="n">0</span> .. <span class="n">1</span><span class="s">)</span> <span class="s">{</span> 7851 <span class="i">$MinHydrogenCount</span> = <span class="k">undef</span><span class="sc">;</span> 7852 <span class="i">@NbrsToExcludeFromMatch</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7853 7854 <span class="k">if</span> <span class="s">(</span><span class="i">$BondAtomIndex</span> == <span class="n">0</span><span class="s">)</span> <span class="s">{</span> 7855 <span class="i">$BondAtom</span> = <span class="i">$MatchedBondAtom1</span><span class="sc">;</span> 7856 <span class="i">$BondAtomSymbol</span> = <span class="i">$BondAtomSymbol1</span><span class="sc">;</span> 7857 <span class="k">push</span> <span class="i">@NbrsToExcludeFromMatch</span><span class="cm">,</span> <span class="i">$MatchedBondAtom2</span><span class="sc">;</span> 7858 <span class="s">}</span> 7859 <span class="k">elsif</span> <span class="s">(</span><span class="i">$BondAtomIndex</span> == <span class="n">1</span><span class="s">)</span> <span class="s">{</span> 7860 <span class="i">$BondAtom</span> = <span class="i">$MatchedBondAtom2</span><span class="sc">;</span> 7861 <span class="i">$BondAtomSymbol</span> = <span class="i">$BondAtomSymbol2</span><span class="sc">;</span> 7862 <span class="k">push</span> <span class="i">@NbrsToExcludeFromMatch</span><span class="cm">,</span> <span class="i">$MatchedBondAtom1</span><span class="sc">;</span> 7863 <span class="s">}</span> 7864 7865 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrAtomSymbolsRef</span><span class="s">)</span> && <span class="k">defined</span><span class="s">(</span><span class="i">$NbrAtomSymbolsRef</span>->[<span class="i">$BondAtomIndex</span>]<span class="s">)</span><span class="s">)</span> ? <span class="i">@</span>{<span class="i">$NbrAtomSymbolsRef</span>->[<span class="i">$BondAtomIndex</span>]} <span class="co">:</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7866 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrBondSymbolsRef</span><span class="s">)</span> && <span class="k">defined</span><span class="s">(</span><span class="i">$NbrBondSymbolsRef</span>->[<span class="i">$BondAtomIndex</span>]<span class="s">)</span> <span class="s">)</span> ? <span class="i">@</span>{<span class="i">$NbrBondSymbolsRef</span>->[<span class="i">$BondAtomIndex</span>]} <span class="co">:</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7867 <span class="i">@NbrMinHydrogenCount</span> = <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrsMinHydrogenCountRef</span><span class="s">)</span> && <span class="k">defined</span><span class="s">(</span><span class="i">$NbrsMinHydrogenCountRef</span>->[<span class="i">$BondAtomIndex</span>]<span class="s">)</span> <span class="s">)</span> ? <span class="i">@</span>{<span class="i">$NbrsMinHydrogenCountRef</span>->[<span class="i">$BondAtomIndex</span>]} <span class="co">:</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7868 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomNeighborhoodMatch</span><span class="s">(</span><span class="i">$BondAtom</span><span class="cm">,</span> <span class="i">$BondAtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrsToExcludeFromMatch</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7869 <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> 7870 <span class="s">}</span> 7871 <span class="s">}</span> 7872 <span class="i">$KeyValue</span>++<span class="sc">;</span> 7873 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> && <span class="i">$KeyValue</span> < <span class="i">$MinKeyCount</span><span class="s">)</span> <span class="s">{</span> 7874 <span class="k">next</span> <span class="j">BOND</span><span class="sc">;</span> 7875 <span class="s">}</span> 7876 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 7877 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 7878 <span class="k">last</span> <span class="j">BOND</span><span class="sc">;</span> 7879 <span class="s">}</span> 7880 <span class="s">}</span> 7881 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 7882 <span class="s">}</span> 7883 7884 <span class="c"># Detect extended atom neighborhood keys like QHAQH, QHAAQH, and so on...</span> 7885 <span class="c">#</span> <a name="_DetectExtendedAtomNeighborhoodKeys-"></a>7886 <span class="k">sub </span><span class="m">_DetectExtendedAtomNeighborhoodKeys</span> <span class="s">{</span> 7887 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$CentralAtomsSymbolsRef</span><span class="cm">,</span> <span class="i">$CentralAtomsBondSymbolsRef</span><span class="cm">,</span> <span class="i">$CentralAtomsMinHydrogenCountRef</span><span class="cm">,</span> <span class="i">$MinKeyCount</span><span class="cm">,</span> <span class="i">$NbrAtomSymbolsRef</span><span class="cm">,</span> <span class="i">$NbrBondSymbolsRef</span><span class="cm">,</span> <span class="i">$NbrsMinHydrogenCountRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7888 <span class="k">my</span><span class="s">(</span><span class="i">$KeyValue</span><span class="cm">,</span> <span class="i">$Molecule</span><span class="cm">,</span> <span class="i">$FirstCentralAtomIndex</span><span class="cm">,</span> <span class="i">$LastCentralAtomIndex</span><span class="cm">,</span> <span class="i">$NumOfCentralAtoms</span><span class="s">)</span><span class="sc">;</span> 7889 7890 <span class="i">$KeyValue</span> = <span class="n">0</span><span class="sc">;</span> 7891 7892 <span class="i">$Molecule</span> = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7893 <span class="i">$NumOfCentralAtoms</span> = <span class="i">@</span>{<span class="i">$CentralAtomsSymbolsRef</span>}<span class="sc">;</span> 7894 <span class="i">$FirstCentralAtomIndex</span> = <span class="n">0</span><span class="sc">;</span> 7895 <span class="i">$LastCentralAtomIndex</span> = <span class="i">$NumOfCentralAtoms</span> - <span class="n">1</span><span class="sc">;</span> 7896 7897 <span class="c"># Retrieve first central atom information...</span> 7898 <span class="k">my</span><span class="s">(</span><span class="i">$FirstCentralAtomSymbol</span><span class="cm">,</span> <span class="i">$FirstCentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 7899 <span class="i">$FirstCentralAtomSymbol</span> = <span class="i">$CentralAtomsSymbolsRef</span>->[<span class="i">$FirstCentralAtomIndex</span>]<span class="sc">;</span> 7900 <span class="i">$FirstCentralAtomMinHydrogenCount</span> = <span class="k">defined</span><span class="s">(</span><span class="i">$CentralAtomsMinHydrogenCountRef</span><span class="s">)</span> ? <span class="i">$CentralAtomsMinHydrogenCountRef</span>->[<span class="i">$FirstCentralAtomIndex</span>] <span class="co">:</span> <span class="k">undef</span><span class="sc">;</span> 7901 7902 <span class="c"># Retrieve last central atom information...</span> 7903 <span class="k">my</span><span class="s">(</span><span class="i">$LastCentralAtomSymbol</span><span class="cm">,</span> <span class="i">$LastCentralAtomMinHydrogenCount</span><span class="s">)</span><span class="sc">;</span> 7904 <span class="i">$LastCentralAtomSymbol</span> = <span class="i">$CentralAtomsSymbolsRef</span>->[<span class="i">$LastCentralAtomIndex</span>]<span class="sc">;</span> 7905 <span class="i">$LastCentralAtomMinHydrogenCount</span> = <span class="k">defined</span><span class="s">(</span><span class="i">$CentralAtomsMinHydrogenCountRef</span><span class="s">)</span> ? <span class="i">$CentralAtomsMinHydrogenCountRef</span>->[<span class="i">$LastCentralAtomIndex</span>] <span class="co">:</span> <span class="k">undef</span><span class="sc">;</span> 7906 7907 <span class="k">my</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$AtomPathRef</span><span class="cm">,</span> <span class="i">$AtomPathsRef</span><span class="cm">,</span> <span class="i">$FirstAtomIndex</span><span class="cm">,</span> <span class="i">$LastAtomIndex</span><span class="cm">,</span> <span class="i">$AtomIndex</span><span class="cm">,</span> <span class="i">$FirstPathAtom</span><span class="cm">,</span> <span class="i">$LastPathAtom</span><span class="cm">,</span> <span class="i">$FirstPathAtomID</span><span class="cm">,</span> <span class="i">$LastPathAtomID</span><span class="cm">,</span> <span class="i">$DetectedPathID</span><span class="cm">,</span> <span class="i">$PathAtom</span><span class="cm">,</span> <span class="i">$NextPathAtom</span><span class="cm">,</span> <span class="i">$PreviousPathAtom</span><span class="cm">,</span> <span class="i">$AtomSymbol</span><span class="cm">,</span> <span class="i">$NextAtomSymbol</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="cm">,</span> <span class="i">@NbrsToExcludeFromMatch</span><span class="cm">,</span> <span class="i">@NbrAtomSymbols</span><span class="cm">,</span> <span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">@NbrMinHydrogenCount</span><span class="cm">,</span> <span class="i">%AlreadyDetectedPaths</span><span class="s">)</span><span class="sc">;</span> 7908 7909 <span class="c"># Go over all the atoms...</span> 7910 <span class="c">#</span> 7911 <span class="j">ATOM:</span> <span class="k">for</span> <span class="i">$Atom</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}}<span class="s">)</span> <span class="s">{</span> 7912 <span class="c"># Match first central atom...</span> 7913 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomNeighborhoodMatch</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$FirstCentralAtomSymbol</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="i">$FirstCentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7914 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 7915 <span class="s">}</span> 7916 <span class="c"># Get atom paths starting from matched central atom with length equal to NumOfCentralAtoms...</span> 7917 <span class="c">#</span> 7918 <span class="i">$AtomPathsRef</span> = <span class="i">$Molecule</span><span class="i">->GetAllAtomPathsStartingAtWithLength</span><span class="s">(</span><span class="i">$Atom</span><span class="cm">,</span> <span class="i">$NumOfCentralAtoms</span><span class="s">)</span><span class="sc">;</span> 7919 <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$AtomPathsRef</span><span class="s">)</span> && <span class="i">@</span>{<span class="i">$AtomPathsRef</span>}<span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7920 <span class="k">next</span> <span class="j">ATOM</span><span class="sc">;</span> 7921 <span class="s">}</span> 7922 <span class="j">ATOMPATH:</span> <span class="k">for</span> <span class="i">$AtomPathRef</span> <span class="s">(</span><span class="i">@</span>{<span class="i">$AtomPathsRef</span>}<span class="s">)</span> <span class="s">{</span> 7923 <span class="i">$FirstAtomIndex</span> = <span class="n">0</span><span class="sc">;</span> 7924 <span class="i">$FirstPathAtom</span> = <span class="i">$AtomPathRef</span>->[<span class="i">$FirstAtomIndex</span>]<span class="sc">;</span> 7925 <span class="i">$LastAtomIndex</span> = <span class="i">@</span>{<span class="i">$AtomPathRef</span>} - <span class="n">1</span><span class="sc">;</span> 7926 <span class="i">$LastPathAtom</span> = <span class="i">$AtomPathRef</span>->[<span class="i">$LastAtomIndex</span>]<span class="sc">;</span> 7927 7928 <span class="c"># Match last central atom to the last atom in path...</span> 7929 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomNeighborhoodMatch</span><span class="s">(</span><span class="i">$LastPathAtom</span><span class="cm">,</span> <span class="i">$LastCentralAtomSymbol</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="k">undef</span><span class="cm">,</span> <span class="i">$LastCentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="k">undef</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7930 <span class="k">next</span> <span class="j">ATOMPATH</span><span class="sc">;</span> 7931 <span class="s">}</span> 7932 7933 <span class="c"># Match other path atoms with central atoms..</span> 7934 <span class="k">for</span> <span class="i">$AtomIndex</span> <span class="s">(</span><span class="i">$FirstAtomIndex</span> .. <span class="i">$LastAtomIndex</span><span class="s">)</span> <span class="s">{</span> 7935 <span class="i">$PathAtom</span> = <span class="i">$AtomPathRef</span>->[<span class="i">$AtomIndex</span>]<span class="sc">;</span> 7936 <span class="i">$AtomSymbol</span> = <span class="i">$CentralAtomsSymbolsRef</span>->[<span class="i">$AtomIndex</span>]<span class="sc">;</span> 7937 <span class="i">$MinHydrogenCount</span> = <span class="k">defined</span><span class="s">(</span><span class="i">$CentralAtomsMinHydrogenCountRef</span><span class="s">)</span> ? <span class="i">$CentralAtomsMinHydrogenCountRef</span>->[<span class="i">$AtomIndex</span>] <span class="co">:</span> <span class="k">undef</span><span class="sc">;</span> 7938 7939 <span class="i">@NbrsToExcludeFromMatch</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7940 <span class="k">if</span> <span class="s">(</span><span class="i">$AtomIndex</span> == <span class="i">$FirstAtomIndex</span><span class="s">)</span> <span class="s">{</span> 7941 <span class="i">$NextPathAtom</span> = <span class="i">$AtomPathRef</span>->[<span class="i">$AtomIndex</span> + <span class="n">1</span>]<span class="sc">;</span> <span class="i">$PreviousPathAtom</span> = <span class="k">undef</span><span class="sc">;</span> 7942 <span class="k">push</span> <span class="i">@NbrsToExcludeFromMatch</span><span class="cm">,</span> <span class="i">$NextPathAtom</span><span class="sc">;</span> 7943 <span class="s">}</span> 7944 <span class="k">elsif</span> <span class="s">(</span><span class="i">$AtomIndex</span> == <span class="i">$LastAtomIndex</span><span class="s">)</span> <span class="s">{</span> 7945 <span class="i">$NextPathAtom</span> = <span class="k">undef</span><span class="sc">;</span> <span class="i">$PreviousPathAtom</span> = <span class="i">$AtomPathRef</span>->[<span class="i">$AtomIndex</span> - <span class="n">1</span>]<span class="sc">;</span> 7946 <span class="k">push</span> <span class="i">@NbrsToExcludeFromMatch</span><span class="cm">,</span> <span class="i">$PreviousPathAtom</span><span class="sc">;</span> 7947 <span class="s">}</span> 7948 <span class="k">else</span> <span class="s">{</span> 7949 <span class="i">$NextPathAtom</span> = <span class="i">$AtomPathRef</span>->[<span class="i">$AtomIndex</span> + <span class="n">1</span>]<span class="sc">;</span> <span class="i">$PreviousPathAtom</span> = <span class="i">$AtomPathRef</span>->[<span class="i">$AtomIndex</span> - <span class="n">1</span>]<span class="sc">;</span> 7950 <span class="k">push</span> <span class="i">@NbrsToExcludeFromMatch</span><span class="cm">,</span> <span class="s">(</span><span class="i">$PreviousPathAtom</span><span class="cm">,</span> <span class="i">$NextPathAtom</span><span class="s">)</span><span class="sc">;</span> 7951 <span class="s">}</span> 7952 7953 <span class="i">@NbrAtomSymbols</span> = <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrAtomSymbolsRef</span><span class="s">)</span> && <span class="k">defined</span><span class="s">(</span><span class="i">$NbrAtomSymbolsRef</span>->[<span class="i">$AtomIndex</span>]<span class="s">)</span><span class="s">)</span> ? <span class="i">@</span>{<span class="i">$NbrAtomSymbolsRef</span>->[<span class="i">$AtomIndex</span>]} <span class="co">:</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7954 <span class="i">@NbrBondSymbols</span> = <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrBondSymbolsRef</span><span class="s">)</span> && <span class="k">defined</span><span class="s">(</span><span class="i">$NbrBondSymbolsRef</span>->[<span class="i">$AtomIndex</span>]<span class="s">)</span> <span class="s">)</span> ? <span class="i">@</span>{<span class="i">$NbrBondSymbolsRef</span>->[<span class="i">$AtomIndex</span>]} <span class="co">:</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7955 <span class="i">@NbrMinHydrogenCount</span> = <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrsMinHydrogenCountRef</span><span class="s">)</span> && <span class="k">defined</span><span class="s">(</span><span class="i">$NbrsMinHydrogenCountRef</span>->[<span class="i">$AtomIndex</span>]<span class="s">)</span> <span class="s">)</span> ? <span class="i">@</span>{<span class="i">$NbrsMinHydrogenCountRef</span>->[<span class="i">$AtomIndex</span>]} <span class="co">:</span> <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7956 7957 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomNeighborhoodMatch</span><span class="s">(</span><span class="i">$PathAtom</span><span class="cm">,</span> <span class="i">$AtomSymbol</span><span class="cm">,</span> \<span class="i">@NbrAtomSymbols</span><span class="cm">,</span> \<span class="i">@NbrBondSymbols</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrMinHydrogenCount</span><span class="cm">,</span> \<span class="i">@NbrsToExcludeFromMatch</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7958 <span class="k">next</span> <span class="j">ATOMPATH</span><span class="sc">;</span> 7959 <span class="s">}</span> 7960 <span class="c"># Match path bond symbols...</span> 7961 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$CentralAtomsBondSymbolsRef</span><span class="s">)</span> && <span class="s">(</span><span class="i">$AtomIndex</span> < <span class="i">$LastAtomIndex</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7962 <span class="i">$NextAtomSymbol</span> = <span class="i">$CentralAtomsSymbolsRef</span>->[<span class="i">$AtomIndex</span> + <span class="n">1</span>]<span class="sc">;</span> 7963 <span class="i">$BondSymbol</span> = <span class="i">$CentralAtomsBondSymbolsRef</span>->[<span class="i">$AtomIndex</span>]<span class="sc">;</span> 7964 <span class="i">$MatchSpecifiedAtomOrder</span> = <span class="n">1</span><span class="sc">;</span> 7965 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoBondAtomsMatchBondSymbols</span><span class="s">(</span><span class="i">$PathAtom</span><span class="cm">,</span> <span class="i">$NextPathAtom</span><span class="cm">,</span> <span class="i">$AtomSymbol</span><span class="cm">,</span> <span class="i">$NextAtomSymbol</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 7966 <span class="k">next</span> <span class="j">ATOMPATH</span><span class="sc">;</span> 7967 <span class="s">}</span> 7968 <span class="s">}</span> 7969 <span class="s">}</span> 7970 <span class="c"># Keep track of the first and last atom ID in the matched path to avoid double counting of paths...</span> 7971 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> || !<span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 7972 <span class="i">$FirstPathAtomID</span> = <span class="i">$FirstPathAtom</span><span class="i">->GetID</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> <span class="i">$LastPathAtomID</span> = <span class="i">$LastPathAtom</span><span class="i">->GetID</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 7973 <span class="i">$DetectedPathID</span> = <span class="s">(</span><span class="i">$FirstPathAtomID</span> < <span class="i">$LastPathAtomID</span><span class="s">)</span> ? <span class="q">"${FirstPathAtomID}-${LastPathAtomID}"</span> <span class="co">:</span> <span class="q">"${LastPathAtomID}-${FirstPathAtomID}"</span><span class="sc">;</span> 7974 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$AlreadyDetectedPaths</span>{<span class="i">$DetectedPathID</span>}<span class="s">)</span> <span class="s">{</span> 7975 <span class="i">$AlreadyDetectedPaths</span>{<span class="i">$DetectedPathID</span>} += <span class="n">1</span><span class="sc">;</span> 7976 <span class="k">next</span> <span class="j">ATOMPATH</span><span class="sc">;</span> 7977 <span class="s">}</span> 7978 <span class="i">$AlreadyDetectedPaths</span>{<span class="i">$DetectedPathID</span>} = <span class="n">1</span><span class="sc">;</span> 7979 <span class="s">}</span> 7980 7981 <span class="i">$KeyValue</span>++<span class="sc">;</span> 7982 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MinKeyCount</span><span class="s">)</span> && <span class="i">$KeyValue</span> < <span class="i">$MinKeyCount</span><span class="s">)</span> <span class="s">{</span> 7983 <span class="k">next</span> <span class="j">ATOMPATH</span><span class="sc">;</span> 7984 <span class="s">}</span> 7985 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">KeyBits</span>}<span class="s">)</span> <span class="s">{</span> 7986 <span class="i">$KeyValue</span> = <span class="n">1</span><span class="sc">;</span> 7987 <span class="k">last</span> <span class="j">ATOM</span><span class="sc">;</span> 7988 <span class="s">}</span> 7989 <span class="s">}</span> 7990 <span class="s">}</span> 7991 <span class="k">return</span> <span class="i">$KeyValue</span><span class="sc">;</span> 7992 <span class="s">}</span> 7993 7994 <span class="c"># Go over the atoms attached to central atom and match 'em against specified</span> 7995 <span class="c"># neighborhood atom symbol and bond symbols...</span> 7996 <span class="c">#</span> <a name="_DoesAtomNeighborhoodMatch-"></a>7997 <span class="k">sub </span><span class="m">_DoesAtomNeighborhoodMatch</span> <span class="s">{</span> 7998 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$CentralAtom</span><span class="cm">,</span> <span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$NbrAtomSymbolsRef</span><span class="cm">,</span> <span class="i">$NbrBondSymbolsRef</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$NbrAtomMinHydrogenCountRef</span><span class="cm">,</span> <span class="i">$NbrsToExcludeRef</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 7999 8000 <span class="c"># Match central atom first...</span> 8001 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$CentralAtom</span><span class="cm">,</span> <span class="i">$CentralAtomSymbol</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8002 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8003 <span class="s">}</span> 8004 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span> <span class="s">{</span> 8005 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomMinHydrogenCountMatch</span><span class="s">(</span><span class="i">$CentralAtom</span><span class="cm">,</span> <span class="i">$CentralAtomMinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8006 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8007 <span class="s">}</span> 8008 <span class="s">}</span> 8009 <span class="k">if</span> <span class="s">(</span>!<span class="k">defined</span> <span class="i">$NbrAtomSymbolsRef</span><span class="s">)</span> <span class="s">{</span> 8010 <span class="c"># No neighbors to match...</span> 8011 <span class="k">return</span> <span class="n">1</span><span class="sc">;</span> 8012 <span class="s">}</span> 8013 8014 <span class="c"># Match neighbors...</span> 8015 <span class="k">my</span><span class="s">(</span><span class="i">$NbrAtom</span><span class="cm">,</span> <span class="i">$Index</span><span class="cm">,</span> <span class="i">$NbrAtomSymbol</span><span class="cm">,</span> <span class="i">$NbrBondSymbol</span><span class="cm">,</span> <span class="i">$NbrAtomMinHydrogenCount</span><span class="cm">,</span> <span class="i">$NbrAtomMatchCount</span><span class="cm">,</span> <span class="i">$MinNbrAtomMatchCount</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="cm">,</span> <span class="i">@CentralAtomNeighbors</span><span class="cm">,</span> <span class="i">%NbrAtomAlreadyMatchedMap</span><span class="s">)</span><span class="sc">;</span> 8016 8017 <span class="i">$MinNbrAtomMatchCount</span> = <span class="i">@$NbrAtomSymbolsRef</span><span class="sc">;</span> 8018 <span class="k">if</span> <span class="s">(</span>!<span class="i">$MinNbrAtomMatchCount</span><span class="s">)</span> <span class="s">{</span> 8019 <span class="c"># No neighbors to match...</span> 8020 <span class="k">return</span> <span class="n">1</span><span class="sc">;</span> 8021 <span class="s">}</span> 8022 8023 <span class="i">$NbrAtomMatchCount</span> = <span class="n">0</span><span class="sc">;</span> 8024 8025 <span class="i">%NbrAtomAlreadyMatchedMap</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 8026 <span class="i">$MatchSpecifiedAtomOrder</span> = <span class="n">1</span><span class="sc">;</span> 8027 8028 <span class="i">@CentralAtomNeighbors</span> = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 8029 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrsToExcludeRef</span><span class="s">)</span> && <span class="i">@</span>{<span class="i">$NbrsToExcludeRef</span>}<span class="s">)</span> <span class="s">{</span> 8030 <span class="k">push</span> <span class="i">@CentralAtomNeighbors</span><span class="cm">,</span> <span class="i">$CentralAtom</span><span class="i">->GetNeighbors</span><span class="s">(</span><span class="i">@</span>{<span class="i">$NbrsToExcludeRef</span>}<span class="s">)</span><span class="sc">;</span> 8031 <span class="s">}</span> 8032 <span class="k">else</span> <span class="s">{</span> 8033 <span class="k">push</span> <span class="i">@CentralAtomNeighbors</span><span class="cm">,</span> <span class="i">$CentralAtom</span><span class="i">->GetNeighbors</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 8034 <span class="s">}</span> 8035 8036 <span class="j">NBRATOM:</span> <span class="k">for</span> <span class="i">$NbrAtom</span> <span class="s">(</span><span class="i">@CentralAtomNeighbors</span><span class="s">)</span> <span class="s">{</span> 8037 <span class="j">NBRATOMSYMBOL:</span> <span class="k">for</span> <span class="i">$Index</span> <span class="s">(</span><span class="n">0</span> .. <span class="s">(</span><span class="i">$MinNbrAtomMatchCount</span> - <span class="n">1</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8038 <span class="k">if</span> <span class="s">(</span><span class="k">exists</span> <span class="i">$NbrAtomAlreadyMatchedMap</span>{<span class="i">$Index</span>}<span class="s">)</span> <span class="s">{</span> 8039 <span class="k">next</span> <span class="j">NBRATOMSYMBOL</span><span class="sc">;</span> 8040 <span class="s">}</span> 8041 <span class="i">$NbrAtomSymbol</span> = <span class="i">$NbrAtomSymbolsRef</span>->[<span class="i">$Index</span>]<span class="sc">;</span> 8042 <span class="i">$NbrBondSymbol</span> = <span class="i">$NbrBondSymbolsRef</span>->[<span class="i">$Index</span>]<span class="sc">;</span> 8043 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoBondAtomsMatchBondSymbols</span><span class="s">(</span><span class="i">$CentralAtom</span><span class="cm">,</span> <span class="i">$NbrAtom</span><span class="cm">,</span> <span class="i">$CentralAtomSymbol</span><span class="cm">,</span> <span class="i">$NbrAtomSymbol</span><span class="cm">,</span> <span class="i">$NbrBondSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8044 <span class="k">next</span> <span class="j">NBRATOMSYMBOL</span><span class="sc">;</span> 8045 <span class="s">}</span> 8046 8047 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$NbrAtomMinHydrogenCountRef</span><span class="s">)</span> && <span class="i">$NbrAtomMinHydrogenCountRef</span>->[<span class="i">$Index</span>]<span class="s">)</span> <span class="s">{</span> 8048 <span class="i">$NbrAtomMinHydrogenCount</span> = <span class="i">$NbrAtomMinHydrogenCountRef</span>->[<span class="i">$Index</span>]<span class="sc">;</span> 8049 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomMinHydrogenCountMatch</span><span class="s">(</span><span class="i">$NbrAtom</span><span class="cm">,</span> <span class="i">$NbrAtomMinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8050 <span class="k">next</span> <span class="j">NBRATOMSYMBOL</span><span class="sc">;</span> 8051 <span class="s">}</span> 8052 <span class="s">}</span> 8053 <span class="i">$NbrAtomAlreadyMatchedMap</span>{<span class="i">$Index</span>} = <span class="i">$Index</span><span class="sc">;</span> 8054 <span class="i">$NbrAtomMatchCount</span>++<span class="sc">;</span> 8055 8056 <span class="k">if</span> <span class="s">(</span><span class="i">$NbrAtomMatchCount</span> == <span class="i">$MinNbrAtomMatchCount</span><span class="s">)</span> <span class="s">{</span> 8057 <span class="k">last</span> <span class="j">NBRATOM</span><span class="sc">;</span> 8058 <span class="s">}</span> 8059 <span class="k">next</span> <span class="j">NBRATOM</span><span class="sc">;</span> 8060 <span class="s">}</span> 8061 <span class="s">}</span> 8062 8063 <span class="k">return</span> <span class="s">(</span><span class="i">$NbrAtomMatchCount</span> == <span class="i">$MinNbrAtomMatchCount</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 8064 <span class="s">}</span> 8065 8066 <span class="c"># Checks whether bond atoms match bond symbols...</span> 8067 <span class="c">#</span> <a name="_DoBondAtomsMatchBondSymbols-"></a>8068 <span class="k">sub </span><span class="m">_DoBondAtomsMatchBondSymbols</span> <span class="s">{</span> 8069 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$Atom2</span><span class="cm">,</span> <span class="i">$AtomSymbol1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="cm">,</span> <span class="i">$MatchSpecifiedAtomOrder</span><span class="cm">,</span> <span class="i">$Atom1MinHydrogenCount</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 8070 <span class="k">my</span><span class="s">(</span><span class="i">$Status</span><span class="cm">,</span> <span class="i">$ReverseMinHydrogenCountMatch</span><span class="s">)</span><span class="sc">;</span> 8071 8072 <span class="i">$ReverseMinHydrogenCountMatch</span> = <span class="n">0</span><span class="sc">;</span> 8073 8074 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MatchSpecifiedAtomOrder</span><span class="s">)</span> && <span class="i">$MatchSpecifiedAtomOrder</span><span class="s">)</span> <span class="s">{</span> 8075 <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$AtomSymbol1</span><span class="s">)</span> && <span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$Atom2</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="s">)</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8076 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8077 <span class="s">}</span> 8078 <span class="s">}</span> 8079 <span class="k">else</span> <span class="s">{</span> 8080 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$AtomSymbol1</span><span class="s">)</span> && <span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$Atom2</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8081 <span class="i">$ReverseMinHydrogenCountMatch</span> = <span class="n">0</span><span class="sc">;</span> 8082 <span class="s">}</span> 8083 <span class="k">elsif</span> <span class="s">(</span><span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$AtomSymbol2</span><span class="s">)</span> && <span class="i">$This</span><span class="i">->_DoesAtomMatchesSymbol</span><span class="s">(</span><span class="i">$Atom2</span><span class="cm">,</span> <span class="i">$AtomSymbol1</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8084 <span class="i">$ReverseMinHydrogenCountMatch</span> = <span class="n">1</span><span class="sc">;</span> 8085 <span class="s">}</span> 8086 <span class="k">else</span> <span class="s">{</span> 8087 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8088 <span class="s">}</span> 8089 <span class="s">}</span> 8090 8091 <span class="c"># Match any hydrogen count...</span> 8092 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$Atom1MinHydrogenCount</span><span class="s">)</span> || <span class="k">defined</span><span class="s">(</span><span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8093 <span class="k">my</span><span class="s">(</span><span class="i">$MinHydrogenCountMatchAtom1</span><span class="cm">,</span> <span class="i">$MinHydrogenCountMatchAtom2</span><span class="s">)</span><span class="sc">;</span> 8094 8095 <span class="s">(</span><span class="i">$MinHydrogenCountMatchAtom1</span><span class="cm">,</span> <span class="i">$MinHydrogenCountMatchAtom2</span><span class="s">)</span> = <span class="i">$ReverseMinHydrogenCountMatch</span> ? <span class="s">(</span><span class="i">$Atom2</span><span class="cm">,</span> <span class="i">$Atom1</span><span class="s">)</span> <span class="co">:</span> <span class="s">(</span><span class="i">$Atom1</span><span class="cm">,</span> <span class="i">$Atom2</span><span class="s">)</span><span class="sc">;</span> 8096 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span> <span class="i">$Atom1MinHydrogenCount</span> <span class="s">)</span> <span class="s">{</span> 8097 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomMinHydrogenCountMatch</span><span class="s">(</span><span class="i">$MinHydrogenCountMatchAtom1</span><span class="cm">,</span> <span class="i">$Atom1MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8098 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8099 <span class="s">}</span> 8100 <span class="s">}</span> 8101 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span> <span class="i">$Atom2MinHydrogenCount</span> <span class="s">)</span> <span class="s">{</span> 8102 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesAtomMinHydrogenCountMatch</span><span class="s">(</span><span class="i">$MinHydrogenCountMatchAtom2</span><span class="cm">,</span> <span class="i">$Atom2MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8103 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8104 <span class="s">}</span> 8105 <span class="s">}</span> 8106 <span class="s">}</span> 8107 8108 <span class="k">if</span> <span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$BondSymbol</span><span class="s">)</span> && <span class="i">$BondSymbol</span><span class="s">)</span> <span class="s">{</span> 8109 <span class="k">my</span><span class="s">(</span><span class="i">$Bond</span><span class="s">)</span><span class="sc">;</span> 8110 <span class="i">$Bond</span> = <span class="i">$Atom1</span><span class="i">->GetBondToAtom</span><span class="s">(</span><span class="i">$Atom2</span><span class="s">)</span><span class="sc">;</span> 8111 <span class="k">if</span> <span class="s">(</span>!<span class="i">$This</span><span class="i">->_DoesBondMatchesSymbol</span><span class="s">(</span><span class="i">$Bond</span><span class="cm">,</span> <span class="i">$BondSymbol</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8112 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8113 <span class="s">}</span> 8114 <span class="s">}</span> 8115 <span class="k">return</span> <span class="n">1</span><span class="sc">;</span> 8116 <span class="s">}</span> 8117 8118 <span class="c"># Match both implicit and explicit hydrogens on central atom...</span> <a name="_DoesAtomMinHydrogenCountMatch-"></a>8119 <span class="k">sub </span><span class="m">_DoesAtomMinHydrogenCountMatch</span> <span class="s">{</span> 8120 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Atom</span><span class="cm">,</span> <span class="i">$MinHydrogenCount</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 8121 8122 <span class="k">if</span> <span class="s">(</span>!<span class="s">(</span><span class="k">defined</span><span class="s">(</span><span class="i">$MinHydrogenCount</span><span class="s">)</span> && <span class="i">$MinHydrogenCount</span><span class="s">)</span><span class="s">)</span> <span class="s">{</span> 8123 <span class="k">return</span> <span class="n">0</span><span class="sc">;</span> 8124 <span class="s">}</span> 8125 <span class="k">return</span> <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetNumOfHydrogens</span><span class="s">(</span><span class="s">)</span> < <span class="i">$MinHydrogenCount</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span> 8126 <span class="s">}</span> 8127 8128 <span class="c"># Checks whether atom matches supported symbol...</span> 8129 <span class="c">#</span> <a name="_DoesAtomMatchesSymbol-"></a>8130 <span class="k">sub </span><span class="m">_DoesAtomMatchesSymbol</span> <span class="s">{</span> 8131 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Atom</span><span class="cm">,</span> <span class="i">$Symbol</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 8132 <span class="k">my</span><span class="s">(</span><span class="i">$Status</span><span class="s">)</span><span class="sc">;</span> 8133 8134 <span class="i">$Status</span> = <span class="n">0</span><span class="sc">;</span> 8135 <span class="j">SYMBOL:</span> <span class="s">{</span> 8136 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^Q$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$This</span><span class="i">->_IsHeteroAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8137 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^X$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$This</span><span class="i">->_IsHalogenAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8138 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^Z$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$This</span><span class="i">->_IsOtherAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8139 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^A$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$This</span><span class="i">->_IsAtom</span><span class="s">(</span><span class="i">$Atom</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8140 <span class="i">$Status</span> = <span class="s">(</span><span class="i">$Atom</span><span class="i">->GetAtomSymbol</span><span class="s">(</span><span class="s">)</span> =~ <span class="q">/^$Symbol$/i</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> 8141 <span class="s">}</span> 8142 <span class="k">return</span> <span class="i">$Status</span><span class="sc">;</span> 8143 <span class="s">}</span> 8144 8145 <span class="c"># Checks whether bond matches supported symbol...</span> 8146 <span class="c">#</span> <a name="_DoesBondMatchesSymbol-"></a>8147 <span class="k">sub </span><span class="m">_DoesBondMatchesSymbol</span> <span class="s">{</span> 8148 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="cm">,</span> <span class="i">$Bond</span><span class="cm">,</span> <span class="i">$Symbol</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 8149 <span class="k">my</span><span class="s">(</span><span class="i">$Status</span><span class="cm">,</span> <span class="i">$BondOrder</span><span class="s">)</span><span class="sc">;</span> 8150 8151 <span class="i">$Status</span> = <span class="n">0</span><span class="sc">;</span> 8152 <span class="j">SYMBOL:</span> <span class="s">{</span> 8153 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(1|-)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsSingle</span><span class="s">(</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8154 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(2|=)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsDouble</span><span class="s">(</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8155 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(3|#|T)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsTriple</span><span class="s">(</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8156 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(1.5|%)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsAromatic</span><span class="s">(</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8157 8158 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^\~$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsSingle</span><span class="s">(</span><span class="s">)</span> || <span class="i">$Bond</span><span class="i">->IsDouble</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8159 8160 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^\$$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsInRing</span><span class="s">(</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8161 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^\!$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsInRing</span><span class="s">(</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8162 8163 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(\$-)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsInRing</span><span class="s">(</span><span class="s">)</span> && <span class="i">$Bond</span><span class="i">->IsSingle</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8164 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(\$=)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsInRing</span><span class="s">(</span><span class="s">)</span> && <span class="i">$Bond</span><span class="i">->IsDouble</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8165 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(\$#|\$T)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsInRing</span><span class="s">(</span><span class="s">)</span> && <span class="i">$Bond</span><span class="i">->IsTriple</span><span class="s">(</span><span class="s">)</span><span class="s">)</span> ? <span class="n">1</span> <span class="co">:</span> <span class="n">0</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8166 8167 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(not%)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsAromatic</span><span class="s">(</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8168 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(not%not-)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsAromatic</span><span class="s">(</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsSingle</span><span class="s">(</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8169 <span class="k">if</span> <span class="s">(</span><span class="i">$Symbol</span> =~ <span class="q">/^(not%not=)$/i</span><span class="s">)</span> <span class="s">{</span> <span class="i">$Status</span> = <span class="i">$Bond</span><span class="i">->IsAromatic</span><span class="s">(</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="s">(</span><span class="i">$Bond</span><span class="i">->IsDouble</span><span class="s">(</span><span class="s">)</span> ? <span class="n">0</span> <span class="co">:</span> <span class="n">1</span><span class="s">)</span><span class="sc">;</span> <span class="k">last</span> <span class="j">SYMBOL</span><span class="sc">;</span> <span class="s">}</span> 8170 8171 <span class="i">$Status</span> = <span class="n">0</span><span class="sc">;</span> 8172 <span class="s">}</span> 8173 <span class="k">return</span> <span class="i">$Status</span><span class="sc">;</span> 8174 <span class="s">}</span> 8175 8176 <span class="c"># Cache appropriate molecule data...</span> 8177 <span class="c">#</span> <a name="_SetupMoleculeDataCache-"></a>8178 <span class="k">sub </span><span class="m">_SetupMoleculeDataCache</span> <span class="s">{</span> 8179 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 8180 8181 <span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}} = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="i">->GetAtoms</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 8182 <span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Bonds</span>}} = <span class="i">$This</span><span class="i">->GetMolecule</span><span class="s">(</span><span class="s">)</span><span class="i">->GetBonds</span><span class="s">(</span><span class="s">)</span><span class="sc">;</span> 8183 8184 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 8185 <span class="s">}</span> 8186 8187 <span class="c"># Clear cached molecule data...</span> 8188 <span class="c">#</span> <a name="_ClearMoleculeDataCache-"></a>8189 <span class="k">sub </span><span class="m">_ClearMoleculeDataCache</span> <span class="s">{</span> 8190 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 8191 8192 <span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Atoms</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 8193 <span class="i">@</span>{<span class="i">$This</span>->{<span class="w">Bonds</span>}} = <span class="s">(</span><span class="s">)</span><span class="sc">;</span> 8194 8195 <span class="k">return</span> <span class="i">$This</span><span class="sc">;</span> 8196 <span class="s">}</span> 8197 8198 <span class="c"># Return a string containg data for MACCSKeys object...</span> <a name="StringifyMACCSKeys-"></a>8199 <span class="k">sub </span><span class="m">StringifyMACCSKeys</span> <span class="s">{</span> 8200 <span class="k">my</span><span class="s">(</span><span class="i">$This</span><span class="s">)</span> = <span class="i">@_</span><span class="sc">;</span> 8201 <span class="k">my</span><span class="s">(</span><span class="i">$MACCSKeysString</span><span class="s">)</span><span class="sc">;</span> 8202 8203 <span class="c"># Type of Keys...</span> 8204 <span class="i">$MACCSKeysString</span> = <span class="q">"Type: $This->{Type}; Size: $This->{Size}"</span><span class="sc">;</span> 8205 8206 <span class="k">if</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Type</span>} =~ <span class="q">/^MACCSKeyBits$/i</span><span class="s">)</span> <span class="s">{</span> 8207 <span class="i">$MACCSKeysString</span> .= <span class="q">"; FingerprintsBitVector: < $This->{FingerprintsBitVector} >"</span><span class="sc">;</span> 8208 <span class="s">}</span> 8209 <span class="k">elsif</span> <span class="s">(</span><span class="i">$This</span>->{<span class="w">Type</span>} =~ <span class="q">/^MACCSKeyCount$/i</span><span class="s">)</span> <span class="s">{</span> 8210 <span class="i">$MACCSKeysString</span> .= <span class="q">"; FingerprintsVector: < $This->{FingerprintsVector} >"</span><span class="sc">;</span> 8211 <span class="s">}</span> 8212 8213 <span class="k">return</span> <span class="i">$MACCSKeysString</span><span class="sc">;</span> 8214 <span class="s">}</span> 8215 <a name="EOF-"></a></pre> <p> </p> <br /> <center> <img src="../../../images/h2o2.png"> </center> </body> </html>