Mercurial > repos > deepakjadmin > mayatool3_test3
diff mayachemtools/docs/modules/html/code/MACCSKeys.html @ 0:73ae111cf86f draft
Uploaded
author | deepakjadmin |
---|---|
date | Wed, 20 Jan 2016 11:55:01 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mayachemtools/docs/modules/html/code/MACCSKeys.html Wed Jan 20 11:55:01 2016 -0500 @@ -0,0 +1,8236 @@ +<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>