9
|
1 #Comments after SMARTS
|
|
2 # Extracted from RDKit Jul 2008 release (r747) Python/Chem/MACCSKeys.py
|
|
3 #
|
|
4 # Copyright (C) 2001-2006 greg Landrum and Rational Discovery LLC
|
|
5 #
|
|
6 # @@ All Rights Reserved @@
|
|
7 #
|
|
8 #Redistribution and use in source and binary forms, with or without
|
|
9 #modification, are permitted provided that the following conditions are
|
|
10 #met:
|
|
11 #
|
|
12 # * Redistributions of source code must retain the above copyright
|
|
13 # notice, this list of conditions and the following disclaimer.
|
|
14 # * Redistributions in binary form must reproduce the above
|
|
15 # copyright notice, this list of conditions and the following
|
|
16 # disclaimer in the documentation and/or other materials provided
|
|
17 # with the distribution.
|
|
18 # * Neither the name of Rational Discovery nor the names of its
|
|
19 # contributors may be used to endorse or promote products derived
|
|
20 # from this software without specific prior written permission.
|
|
21 #
|
|
22 #THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23 #"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24 #LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
25 #A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
26 #OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
27 #SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
28 #LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
29 #DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
30 #THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
31 #(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
32 #OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
33
|
|
34 # these are SMARTS patterns corresponding to the MDL MACCS keys
|
|
35 1:('?',0), # ISOTOPE
|
|
36 #2:('[#103,#104,#105,#106,#107,#106,#109,#110,#111,#112]',0), # ISOTOPE Not complete
|
|
37 2:('[#103,#104]',0), # ISOTOPE Not complete
|
|
38 3:('[Ge,As,Se,Sn,Sb,Te,Tl,Pb,Bi]',0), # Group IVa,Va,VIa Periods 4-6 (Ge...) *NOTE* spec wrong
|
|
39 4:('[Ac,Th,Pa,U,Np,Pu,Am,Cm,Bk,Cf,Es,Fm,Md,No,Lr]',0), # actinide
|
|
40 5:('[Sc,Ti,Y,Zr,Hf]',0), # Group IIIB,IVB (Sc...) *NOTE* spec wrong
|
|
41 6:('[La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu]',0), # Lanthanide
|
|
42 7:('[V,Cr,Mn,Nb,Mo,Tc,Ta,W,Re]',0), # Group VB,VIB,VIIB (V...) *NOTE* spec wrong
|
|
43 8:('[!C;!c;!#1]1~*~*~*~*1',0), # QAAA@1
|
|
44 9:('[Fe,Co,Ni,Ru,Rh,Pd,Os,Ir,Pt]',0), # Group VIII (Fe...)
|
|
45 10:('[Be,Mg,Ca,Sr,Ba,Ra]',0), # Group IIa (Alkaline earth)
|
|
46 11:('*1~*~*~*~*1',0), # 4M Ring *NOTE* Was '*1~*~*~*~1' This and 9 others changed by CM because OB didn't like it
|
|
47 12:('[Cu,Zn,Ag,Cd,Au,Hg]',0), # Group IB,IIB (Cu..)
|
|
48 13:('[O,o]~[N,n](~[C,c])~[C,c]',0), # ON(C)C
|
|
49 14:('[S,s]-[S,s]',0), # S-S
|
|
50 15:('[O,o]~[C,c](~[O,o])~[O,o]',0), # OC(O)O
|
|
51 16:('[!C;!c;!#1]1~*~*~*1',0), # QAA@1
|
|
52 17:('[C,c]#[C,c]',0), #CTC
|
|
53 18:('[B,Al,Ga,In,Tl]',0), # Group IIIA (B...) *NOTE* spec wrong
|
|
54 19:('*1~*~*~*~*~*~*~*1',0), # 7M Ring
|
|
55 20:('[Si]',0), #Si
|
|
56 21:('[C,c]=[C,c](~[!C;!c;!#1])~[!C;!c;!#1]',0), # C=C(Q)Q
|
|
57 22:('*1~*~*~*1',0), # 3M Ring
|
|
58 23:('[N,n]~[C,c](~[O,o])~[O,o]',0), # NC(O)O
|
|
59 24:('[N,n]-[O,o]',0), # N-O
|
|
60 25:('[N,n]~[C,c](~[N,n])~[N,n]',0), # NC(N)N
|
|
61 26:('[C,c]=;@[C,c](@*)@*',0), # C$=C($A)$A
|
|
62 27:('[I]',0), # I
|
|
63 28:('[!C;!c;!#1]~[CH2]~[!C;!c;!#1]',0), # QCH2Q
|
|
64 29:('P',0),# P
|
|
65 30:('[C,c]~[!C;!c;!#1](~[C,c])(~[C,c])~*',0), # CQ(C)(C)A
|
|
66 31:('[!C;!c;!#1]~[F,Cl,Br,I]',0), # QX
|
|
67 32:('[C,c]~[S,s]~[N,n]',0), # CSN
|
|
68 33:('[N,n]~[S,s]',0), # NS
|
|
69 34:('[CH2]=*',0), # CH2=A
|
|
70 35:('[Li,Na,K,Rb,Cs,Fr]',0), # Group IA (Alkali Metal)
|
|
71 36:('[$(S@*),$(s@*)]',0), # S Heterocycle
|
|
72 37:('[N,n]~[C,c](~[O,o])~[N,n]',0), # NC(O)N
|
|
73 38:('[N,n]~[C,c](~[C,c])~[N,n]',0), # NC(C)N
|
|
74 39:('[O,o]~[S,s](~[O,o])~[O,o]',0), # OS(O)O
|
|
75 40:('[S,s]-[O,o]',0), # S-O
|
|
76 41:('[C,c]#[N,n]',0), # CTN
|
|
77 42:('F',0), # F
|
|
78 43:('[!C;!c;!#1;H,H2,H3,H4]~*~[!C;!c;!#1;H,H2,H3,H4]',0), # QHAQH FIX: possibly incomplete
|
|
79 44:('?',0), # OTHER
|
|
80 45:('[C,c]=[C,c]~[N,n]',0), # C=CN
|
|
81 46:('Br',0), # BR
|
|
82 47:('[S,s]~*~[N,n]',0), # SAN
|
|
83 48:('[O,o]~[!C;!c;!#1](~[O,o])(~[O,o])~*',0), # OQ(O)O
|
|
84 49:('[-,-2,-3,-4,+,+2,+3,+4]',0), # CHARGE FIX: possibly incomplete
|
|
85 50:('[C,c]=[C,c](~[C,c])~[C,c]',0), # C=C(C)C
|
|
86 51:('[C,c]~[S,s]~[O,o]',0), # CSO
|
|
87 52:('[N,n]~[N,n]',0), # NN
|
|
88 53:('[!#6;!#1;!H0]~*~*~*~[!#6;!#1;!H0]',0), # QHAAAQH FIX: possibly incomplete
|
|
89 54:('[!#6;!#1;!H0]~*~*~[!#6;!#1;!H0]',0), # QHAAQH FIX: possibly incomplete
|
|
90 55:('[O,o]~[S,s]~[O,o]',0), #OSO
|
|
91 56:('[O,o]~[N,n](~[O,o])~[C,c]',0), # ON(O)C
|
|
92 57:('[$(O@*),$(o@*)]',0), # O Heterocycle
|
|
93 58:('[!C;!c;!#1]~[S,s]~[!C;!c;!#1]',0), # QSQ
|
|
94 59:('[S,s]!:*:*',0), # Snot%A%A
|
|
95 60:('[S,s]=[O,o]',0), # S=O
|
|
96 61:('*~[S,s](~*)~*',0), # AS(A)A
|
|
97 62:('*@*!@*@*',0), # A$!A$A
|
|
98 63:('[N,n]=[O,o]',0), # N=O
|
|
99 64:('*@*!@[S,s]',0), # A$A!S
|
|
100 65:('[C,c]:[N,n]',0), # C%N
|
|
101 66:('[C,c]~[C,c](~[C,c])(~[C,c])~*',0), # CC(C)(C)A
|
|
102 67:('[!C;!c;!#1]~[S,s]',0), # QS
|
|
103 68:('[!#6;!#1;!H0]~[!#6;!#1;!H0]',0), # QHQH FIX: possibly incomplete
|
|
104 69:('[!C;!c;!#1]~[!#6;!#1;!H0]',0), # QQH FIX: possibly incomplete
|
|
105 70:('[!C;!c;!#1]~[N,n]~[!C;!c;!#1]',0), # QNQ
|
|
106 71:('[N,n]~[O,o]',0), # NO
|
|
107 72:('[O,o]~*~*~[O,o]',0), # OAAO
|
|
108 73:('[S,s]=*',0), # S=A
|
|
109 74:('[CH3]~*~[CH3]',0), # CH3ACH3
|
|
110 75:('*!@[N,n]@*',0), # A!N$A
|
|
111 76:('[C,c]=[C,c](~*)~*',0), # C=C(A)A
|
|
112 77:('[N,n]~*~[N,n]',0), # NAN
|
|
113 78:('[C,c]=[N,n]',0), # C=N
|
|
114 79:('[N,n]~*~*~[N,n]',0), # NAAN
|
|
115 80:('[N,n]~*~*~*~[N,n]',0), # NAAAN
|
|
116 81:('[S,s]~*(~*)~*',0), # SA(A)A
|
|
117 82:('*~[CH2]~[!#6;!#1;!H0]',0), # ACH2QH
|
|
118 83:('[!C;!c;!#1]1~*~*~*~*~*1',0), # QAAAA@1
|
|
119 84:('[NH2]',0), #NH2
|
|
120 85:('[C,c]~[N,n](~[C,c])~[C,c]',0), # CN(C)C
|
|
121 86:('[CH2][!C;!c;!#1][CH2]',0), # CH2QCH2
|
|
122 87:('[F,Cl,Br,I]!@*@*',0), # X!A$A
|
|
123 88:('[S,s]',0), # S
|
|
124 89:('[O,o]~*~*~*~[O,o]',0), # OAAAO
|
|
125 90:('[!#6;!#1;!H0]~*~*~[CH2]~*',0), # QHAACH2A
|
|
126 91:('[!#6;!#1;!H0]~*~*~*~[CH2]~*',0), # QHAAACH2A
|
|
127 92:('[O,o]~[C,c](~[N,n])~[C,c]',0), # OC(N)C
|
|
128 93:('[!C;!c;!#1]~[CH3]',0), # QCH3
|
|
129 94:('[!C;!c;!#1]~[N,n]',0), # QN
|
|
130 95:('[N,n]~*~*~[O,o]',0), # NAAO
|
|
131 96:('*1~*~*~*~*~*1',0), # 5 M ring
|
|
132 97:('[N,n]~*~*~*~[O,o]',0), # NAAAO
|
|
133 98:('[!C;!c;!#1]1~*~*~*~*~*~*1',0), # QAAAAA@1
|
|
134 99:('[C,c]=[C,c]',0), # C=C
|
|
135 100:('*~[CH2]~[N,n]',0), # ACH2N
|
|
136 101:('[r8,r9,r10,r11,r12]',0), # 8M Ring or larger FIX: This is not exhaustive and it appears that oelib doesn't do this right
|
|
137 102:('[!C;!c;!#1]~[O,o]',0), # QO
|
|
138 103:('Cl',0), # CL
|
|
139 104:('[!#6;!#1;!H0]~*~[CH2]~*',0), # QHACH2A
|
|
140 105:('[!C;!c;!#1]@*(@*)@*',0), # A$A($A)$A
|
|
141 106:('[!C;!c;!#1]~*(~[!C;!c;!#1])~[!C;!c;!#1]',0), # QA(Q)Q
|
|
142 107:('[F,Cl,Br,I]~*(~*)~*',0), # XA(A)A
|
|
143 108:('[CH3]~*~*~*~[CH2]~*',0), # CH3AAACH2A
|
|
144 109:('*~[CH2]~[O,o]',0), # ACH2O
|
|
145 110:('[N,n]~[C,c]~[O,o]',0), # NCO
|
|
146 111:('[N,n]~*~[CH2]~*',0), # NACH2A
|
|
147 112:('*~*(~*)(~*)~*',0), # AA(A)(A)A
|
|
148 113:('[O,o]!:*:*',0), # Onot%A%A
|
|
149 114:('[CH3]~[CH2]~*',0), # CH3CH2A
|
|
150 115:('[CH3]~*~[CH2]~*',0), # CH3ACH2A
|
|
151 116:('[CH3]~*~*~[CH2]~*',0), # CH3AACH2A
|
|
152 117:('[N,n]~*~[O,o]',0), # NAO
|
|
153 118:('*~[CH2]~[CH2]~*',1), # ACH2CH2A > 1
|
|
154 119:('[N,n]=*',0), # N=A
|
|
155 120:('[!C;!c;R]',1), # Heterocyclic atom > 1
|
|
156 121:('[$(N@*),$(n@*)]',0), # N Heterocycle
|
|
157 122:('*~[N,n](~*)~*',0), # AN(A)A
|
|
158 123:('[O,o]~[C,c]~[O,o]',0), # OCO
|
|
159 124:('[!C;!c;!#1]~[!C;!c;!#1]',0), # QQ
|
|
160 125:('?',0), # Aromatic Ring > 1
|
|
161 126:('*!@[O,o]!@*',0), # A!O!A
|
|
162 127:('*@*!@[O,o]',1), # A$A!O > 1
|
|
163 128:('*~[CH2]~*~*~*~[CH2]~*',0), # ACH2AAACH2A
|
|
164 129:('*~[CH2]~*~*~[CH2]~*',0), # ACH2AACH2A
|
|
165 130:('[!C;!c;!#1]~[!C;!c;!#1]',1), # QQ > 1 (&...)
|
|
166 131:('[!#6;!#1;!H0]',1), # QH > 1
|
|
167 132:('[O,o]~*~[CH2]~*',0), # OACH2A
|
|
168 133:('*@*!:[N,n]',0), # A$A!N
|
|
169 134:('[F,Cl,Br,I]',0), # X (HALOGEN)
|
|
170 135:('[N,n]!:*:*',0), # Nnot%A%A
|
|
171 136:('[O,o]=*',1), # O=A>1 FIX: maybe not right key
|
|
172 137:('[!C;!c;R]',0), # Heterocycle
|
|
173 138:('[!C;!c;!#1]~[CH2]~*',1), # QCH2A>1 (&...)
|
|
174 139:('[OH,OH2,OH3]',0), # OH
|
|
175 140:('[O,o]',3), # O > 3
|
|
176 141:('[CH3]',2), # CH3 > 2
|
|
177 142:('[N,n]',1), # N > 1
|
|
178 143:('*@*!@[O,o]',0), # A$A!O
|
|
179 144:('*!:*:*!:*',0), # Anot%A%Anot%A
|
|
180 145:('*1~*~*~*~*~*~*1',1), # 6M ring > 1
|
|
181 146:('[O,o]',2), # O > 2
|
|
182 147:('*~[CH2]~[CH2]~*',0), # ACH2CH2A
|
|
183 148:('*~[!C;!c;!#1](~*)~*',0), # AQ(A)A
|
|
184 149:('[CH3]',1), # CH3 > 1
|
|
185 150:('*!@*@*!@*',0), # A!A$A!A
|
|
186 151:('[N!H0]',0), # NH
|
|
187 152:('[O,o]~[C,c](~[C,c])~[C,c]',0), # OC(C)C
|
|
188 153:('[!C;!c;!#1]~[CH2]~*',0), # QCH2A
|
|
189 154:('[C,c]=[O,o]',0), # C=O
|
|
190 155:('*!@[CH2]!@*',0), # A!CH2!A
|
|
191 156:('[N,n]~*(~*)~*',0), # NA(A)A
|
|
192 157:('[C,c]-[O,o]',0), # C-O
|
|
193 158:('[C,c]-[N,n]',0), # C-N
|
|
194 159:('[O,o]',1), # O>1
|
|
195 160:('[CH3]',0), #CH3
|
|
196 161:('[N,n]',0), # N
|
|
197 162:('a',0), # Aromatic
|
|
198 163:('*1~*~*~*~*~*~*1',0), # 6M Ring
|
|
199 164:('[O,o]',0), # O
|
|
200 165:('[R]',0), # Ring
|
|
201 166:('?',0), # Fragments FIX: this should be (*).(*), but that doesn't work properly in oelib
|
|
202
|
|
203 # Output with SMILES "CNO"
|
|
204 #> 24: N-O 68: QHQH 69: QQH 71: NO 93: QCH3 94: QN 102: QO
|
|
205 #124: QQ 131: QH > 1*2 139: OH 151: NH 158: C-N 160: CH3 161: N 164: O
|