rdworks 0.25.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. rdworks/__init__.py +35 -0
  2. rdworks/autograph/__init__.py +4 -0
  3. rdworks/autograph/autograph.py +184 -0
  4. rdworks/autograph/centroid.py +90 -0
  5. rdworks/autograph/dynamictreecut.py +135 -0
  6. rdworks/autograph/nmrclust.py +123 -0
  7. rdworks/autograph/rckmeans.py +74 -0
  8. rdworks/bitqt/__init__.py +1 -0
  9. rdworks/bitqt/bitqt.py +355 -0
  10. rdworks/conf.py +374 -0
  11. rdworks/descriptor.py +36 -0
  12. rdworks/display.py +206 -0
  13. rdworks/ionized.py +170 -0
  14. rdworks/matchedseries.py +260 -0
  15. rdworks/mol.py +1522 -0
  16. rdworks/mollibr.py +887 -0
  17. rdworks/pka.py +38 -0
  18. rdworks/predefined/Asinex_fragment.xml +20 -0
  19. rdworks/predefined/Astex_RO3.xml +16 -0
  20. rdworks/predefined/Baell2010_PAINS/Baell2010A.xml +52 -0
  21. rdworks/predefined/Baell2010_PAINS/Baell2010B.xml +169 -0
  22. rdworks/predefined/Baell2010_PAINS/Baell2010C.xml +1231 -0
  23. rdworks/predefined/Baell2010_PAINS/PAINS-less-than-015-hits.xml +2048 -0
  24. rdworks/predefined/Baell2010_PAINS/PAINS-less-than-150-hits.xml +278 -0
  25. rdworks/predefined/Baell2010_PAINS/PAINS-more-than-150-hits.xml +83 -0
  26. rdworks/predefined/Baell2010_PAINS/makexml.py +70 -0
  27. rdworks/predefined/Brenk2008_Dundee/makexml.py +21 -0
  28. rdworks/predefined/CNS.xml +18 -0
  29. rdworks/predefined/ChEMBL_Walters/BMS.xml +543 -0
  30. rdworks/predefined/ChEMBL_Walters/Dundee.xml +318 -0
  31. rdworks/predefined/ChEMBL_Walters/Glaxo.xml +168 -0
  32. rdworks/predefined/ChEMBL_Walters/Inpharmatica.xml +276 -0
  33. rdworks/predefined/ChEMBL_Walters/LINT.xml +174 -0
  34. rdworks/predefined/ChEMBL_Walters/MLSMR.xml +351 -0
  35. rdworks/predefined/ChEMBL_Walters/PAINS.xml +1446 -0
  36. rdworks/predefined/ChEMBL_Walters/SureChEMBL.xml +501 -0
  37. rdworks/predefined/ChEMBL_Walters/makexml.py +40 -0
  38. rdworks/predefined/Hann1999_Glaxo/Hann1999.xml +168 -0
  39. rdworks/predefined/Hann1999_Glaxo/Hann1999Acid.xml +102 -0
  40. rdworks/predefined/Hann1999_Glaxo/Hann1999Base.xml +6 -0
  41. rdworks/predefined/Hann1999_Glaxo/Hann1999ElPh.xml +6 -0
  42. rdworks/predefined/Hann1999_Glaxo/Hann1999NuPh.xml +6 -0
  43. rdworks/predefined/Hann1999_Glaxo/makexml.py +83 -0
  44. rdworks/predefined/Kazius2005/Kazius2005.xml +114 -0
  45. rdworks/predefined/Kazius2005/makexml.py +66 -0
  46. rdworks/predefined/ZINC_druglike.xml +24 -0
  47. rdworks/predefined/ZINC_fragment.xml +14 -0
  48. rdworks/predefined/ZINC_leadlike.xml +15 -0
  49. rdworks/predefined/fragment.xml +7 -0
  50. rdworks/predefined/ionized/simple_smarts_pattern.csv +57 -0
  51. rdworks/predefined/ionized/smarts_pattern.csv +107 -0
  52. rdworks/predefined/misc/makexml.py +119 -0
  53. rdworks/predefined/misc/reactive-part-2.xml +104 -0
  54. rdworks/predefined/misc/reactive-part-3.xml +74 -0
  55. rdworks/predefined/misc/reactive.xml +321 -0
  56. rdworks/readin.py +312 -0
  57. rdworks/rgroup.py +2173 -0
  58. rdworks/scaffold.py +520 -0
  59. rdworks/std.py +143 -0
  60. rdworks/stereoisomers.py +127 -0
  61. rdworks/tautomers.py +20 -0
  62. rdworks/units.py +63 -0
  63. rdworks/utils.py +495 -0
  64. rdworks/xml.py +260 -0
  65. rdworks-0.25.7.dist-info/METADATA +37 -0
  66. rdworks-0.25.7.dist-info/RECORD +69 -0
  67. rdworks-0.25.7.dist-info/WHEEL +5 -0
  68. rdworks-0.25.7.dist-info/licenses/LICENSE +21 -0
  69. rdworks-0.25.7.dist-info/top_level.txt +1 -0
rdworks/pka.py ADDED
@@ -0,0 +1,38 @@
1
+ """This module is an implementation in progress of the decision tree method for pKa prediction.
2
+
3
+ Crippen, J. Chem. Inf. Model., Vol. 48, No. 10, 2008, 2042-2053.
4
+
5
+ The SMARTS patterns and pKa values were taken from the supporting information of the paper.
6
+ These "MOE SMARTS" were converted to generic SMARTS which relied on use of some recursive SMARTS patterns.
7
+ The first data row then describes nodes 1, and then the tree expands out based on decisions of SMARTS-matching:
8
+ if node 2 is yes to pattern [#8,#16,#34,#52,#84;H]C(=O) - giving pKa 3.68 and range 5.96
9
+ node 3 is no to the same pattern - giving pKa 7.21 and range 17.32
10
+ Then nodes 4,5 are under 2 and 6,7 are under 3, etc, etc until the leaf nodes are reached
11
+ """
12
+
13
+
14
+ import importlib.resources
15
+ from collections import namedtuple
16
+ from typing import Union
17
+
18
+ from rdkit import Chem
19
+ from rdkit.Chem import AllChem
20
+
21
+ datadir = importlib.resources.files('rdworks.predefined')
22
+ DecisionTreeNode = namedtuple('DecisionTree', ('node', 'parent', 'child', 'FP', 'SMARTS', 'YN', 'pKa', 'pKa_range'))
23
+ decision_tree = []
24
+ with open(datadir / "pKa_decision_tree.ext", "r") as f:
25
+ for line in f:
26
+ if (not line) or line.startswith('#'):
27
+ continue
28
+ decision_tree.append(DecisionTreeNode(line.strip().split()))
29
+
30
+
31
+ def decision_tree_pKa(rdmol:Chem.Mol) -> Union[float, None]:
32
+ pKa = None
33
+ for _ in decision_tree:
34
+ patt = Chem.MolFromSmarts(_.SMARTS) # make an RDKit query molecule
35
+ match = rdmol.HasSubstructMatch(patt) # check if we have a match for our test molecule
36
+ # pKa = float(values[6])
37
+ # pKa_range = float(values[7])
38
+ return pKa
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" ?>
2
+ <Asinext_Fragment combine='AND'>
3
+ <descriptor name="MolWt">
4
+ <min>120</min>
5
+ <max>250</max>
6
+ </descriptor>
7
+ <descriptor name="LogP">
8
+ <max>2.5</max>
9
+ </descriptor>
10
+ <descriptor name="HAC">
11
+ <min>9</min>
12
+ <max>18</max>
13
+ </descriptor>
14
+ <descriptor name="HBA">
15
+ <max>7</max>
16
+ </descriptor>
17
+ <descriptor name="HBD">
18
+ <max>4</max>
19
+ </descriptor>
20
+ </Asinext_Fragment>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" ?>
2
+ <Astext_RO3 combine='AND'>
3
+ <!--Astex Rule of 3 -->
4
+ <descriptor name="MolWt">
5
+ <max>300</max>
6
+ </descriptor>
7
+ <descriptor name="LogP">
8
+ <max>3.0</max>
9
+ </descriptor>
10
+ <descriptor name="HBD">
11
+ <max>3</max>
12
+ </descriptor>
13
+ <descriptor name="HBA">
14
+ <max>3</max>
15
+ </descriptor>
16
+ </Astext_RO3>
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" ?>
2
+ <PAINS combine='OR'>
3
+ <!--Filter Family A p.S23-->
4
+ <substructure name="(1) ene_six_het_A(483)">
5
+ <SMARTS>[#6]-1(-[#6](~[!#6&amp;!#1]~[#6]-[!#6&amp;!#1]-[#6]-1=[!#6&amp;!#1])~[!#6&amp;!#1])=[#6;!R]-[#1]</SMARTS>
6
+ </substructure>
7
+ <substructure name="(2) hzone_phenol_A(479)">
8
+ <SMARTS>c:1:c:c(:c(:c:c:1)-[#6]=[#7]-[#7])-[#8]-[#1]</SMARTS>
9
+ </substructure>
10
+ <substructure name="(3) anil_di_alk_A(478)">
11
+ <SMARTS>[#6](-[#1])(-[#1])-[#7](-[#6](-[#1])-[#1])-c:1:c:c(:c(:c(:c:1)-[$([#1]),$([#6](-[#1])-[#1]),$([#8]-[#6](-[#1])(-[#1])-[#6](-[#1])-[#1])])-[#7])-[#1]</SMARTS>
12
+ </substructure>
13
+ <substructure name="(4) indol_3yl_alk(461)">
14
+ <SMARTS>n:1(c(c(c:2:c:1:c:c:c:c:2-[#1])-[#6;X4]-[#1])-[$([#6](-[#1])-[#1]),$([#6]=,:[!#6&amp;!#1]),$([#6](-[#1])-[#7]),$([#6](-[#1])(-[#6](-[#1])-[#1])-[#6](-[#1])(-[#1])-[#7](-[#1])-[#6](-[#1])-[#1])])-[$([#1]),$([#6](-[#1])-[#1])]</SMARTS>
15
+ </substructure>
16
+ <substructure name="(5) quinone_A(370)">
17
+ <SMARTS>[!#6&amp;!#1]=[#6]-1-[#6]=,:[#6]-[#6](=[!#6&amp;!#1])-[#6]=,:[#6]-1</SMARTS>
18
+ </substructure>
19
+ <substructure name="(6) azo_A(324)">
20
+ <SMARTS>[#7;!R]=[#7]</SMARTS>
21
+ </substructure>
22
+ <substructure name="(7) imine_one_A(321)">
23
+ <SMARTS>[#6]-[#6](=[!#6&amp;!#1;!R])-[#6](=[!#6&amp;!#1;!R])-[$([#6]),$([#16](=[#8])=[#8])]</SMARTS>
24
+ </substructure>
25
+ <substructure name="(8) mannich_A(296)">
26
+ <SMARTS>[#7]-[#6;X4]-c:1:c:c:c:c:c:1-[#8]-[#1]</SMARTS>
27
+ </substructure>
28
+ <substructure name="(9) anil_di_alk_B(251)">
29
+ <SMARTS>c:1:c:c(:c:c:c:1-[#7](-[#6;X4])-[#6;X4])-[#6]=[#6]</SMARTS>
30
+ </substructure>
31
+ <substructure name="(10) anil_di_alk_C(246)">
32
+ <SMARTS>c:1:c:c(:c:c:c:1-[#8]-[#6;X4])-[#7](-[#6;X4])-[$([#1]),$([#6;X4])]</SMARTS>
33
+ </substructure>
34
+ <substructure name="(11) ene_rhod_A(235)">
35
+ <SMARTS>[#7]-1-[#6](=[#16])-[#16]-[#6](=[#6])-[#6]-1=[#8]</SMARTS>
36
+ </substructure>
37
+ <substructure name="(12) hzone_phenol_B(215)">
38
+ <SMARTS>c:1(:c:c:c(:c:c:1)-[#6]=[#7]-[#7])-[#8]-[#1]</SMARTS>
39
+ </substructure>
40
+ <substructure name="(13) ene_five_het_A(201)">
41
+ <SMARTS>[#6]-1(=[#6])-[#6]=[#7]-[!#6&amp;!#1]-[#6]-1=[#8]</SMARTS>
42
+ </substructure>
43
+ <substructure name="(14) anil_di_alk_D(198)">
44
+ <SMARTS>c:1:c:c(:c:c:c:1-[#7](-[#6;X4])-[#6;X4])-[#6;X4]-[$([#8]-[#1]),$([#6]=[#6]-[#1]),$([#7]-[#6;X4])]</SMARTS>
45
+ </substructure>
46
+ <substructure name="(15) imine_one_isatin(189)">
47
+ <SMARTS>[#8]=[#6]-2-[#6](=!@[#7]-[#7])-c:1:c:c:c:c:c:1-[#7]-2</SMARTS>
48
+ </substructure>
49
+ <substructure name="(16) anil_di_alk_E(186)">
50
+ <SMARTS>[#6](-[#1])-[#7](-[#6](-[#1])-[#1])-c:1:c(:c(:c(:c(:c:1-[#1])-[$([#1]),$([#6](-[#1])-[#1])])-[#6](-[#1])-[$([#1]),$([#6]-[#1])])-[#1])-[#1]</SMARTS>
51
+ </substructure>
52
+ </PAINS>
@@ -0,0 +1,169 @@
1
+ <?xml version="1.0" ?>
2
+ <PAINSb>
3
+ <!--Filter Family B S23-S25-->
4
+ <substructure name="(1) thiaz_ene_A(128)">
5
+ <SMARTS>[#6]-1(=[#6](-[$([#1]),$([#6](-[#1])-[#1]),$([#6]=[#8])])-[#16]-[#6](-[#7]-1-[$([#1]),$([#6]-[#1]),$([#6]:[#6])])=[#7;!R])-[$([#6](-[#1])-[#1]),$([#6]:[#6])]</SMARTS>
6
+ </substructure>
7
+ <substructure name="(2) pyrrole_A(118)">
8
+ <SMARTS>n2(-[#6]:1:[!#1]:[#6]:[#6]:[#6]:[#6]:1)c(cc(c2-[#6;X4])-[#1])-[#6;X4]</SMARTS>
9
+ </substructure>
10
+ <substructure name="(3) catechol_A(92)">
11
+ <SMARTS>c:1:c:c(:c(:c:c:1)-[#8]-[#1])-[#8]-[#1]</SMARTS>
12
+ </substructure>
13
+ <substructure name="(4) ene_five_het_B(90)">
14
+ <SMARTS>[#6]-1(=[#6])-[#6](-[#7]=[#6]-[#16]-1)=[#8]</SMARTS>
15
+ </substructure>
16
+ <substructure name="(5) imine_one_fives(89)">
17
+ <SMARTS>[#6]-1=[!#1]-[!#6&amp;!#1]-[#6](-[#6]-1=[!#6&amp;!#1;!R])=[#8]</SMARTS>
18
+ </substructure>
19
+ <substructure name="(6) ene_five_het_C(85)">
20
+ <SMARTS>[#6]-1(-[#6](-[#6]=[#6]-[!#6&amp;!#1]-1)=[#6])=[!#6&amp;!#1]</SMARTS>
21
+ </substructure>
22
+ <substructure name="(7) hzone_pipzn(79)">
23
+ <SMARTS>[#6]-[#7]-1-[#6](-[#1])(-[#1])-[#6](-[#1])(-[#1])-[#7](-[#6](-[#1])(-[#1])-[#6]-1(-[#1])-[#1])-[#7]=[#6](-[#1])-[#6]:[!#1]</SMARTS>
24
+ </substructure>
25
+ <substructure name="(8) keto_keto_beta_A(68)">
26
+ <SMARTS>c:1-2:c(:c:c:c:c:1)-[#6](=[#8])-[#6;X4]-[#6]-2=[#8]</SMARTS>
27
+ </substructure>
28
+ <substructure name="(9) hzone_pyrrol(64)">
29
+ <SMARTS>n1(-[#6])c(c(-[#1])c(c1-[#6]=[#7]-[#7])-[#1])-[#1]</SMARTS>
30
+ </substructure>
31
+ <substructure name="(10) ene_one_ene_A(57)">
32
+ <SMARTS>[#6]=!@[#6](-[!#1])-@[#6](=!@[!#6&amp;!#1])-@[#6](=!@[#6])-[!#1]</SMARTS>
33
+ </substructure>
34
+ <substructure name="(11) cyano_ene_amine_A(56)">
35
+ <SMARTS>[#6](-[#6]#[#7])(-[#6]#[#7])-[#6](-[#7](-[#1])-[#1])=[#6]-[#6]#[#7]</SMARTS>
36
+ </substructure>
37
+ <substructure name="(12) ene_five_one_A(55)">
38
+ <SMARTS>c:1-2:c(:c:c:c:c:1)-[#6](=[#8])-[#6](=[#6])-[#6]-2=[#8]</SMARTS>
39
+ </substructure>
40
+ <substructure name="(13) cyano_pyridone_A(54)">
41
+ <SMARTS>[#6]-1(=[!#1]-[!#1]=[!#1]-[#7](-[#6]-1=[#16])-[#1])-[#6]#[#7]</SMARTS>
42
+ </substructure>
43
+ <substructure name="(14) anil_alk_ene(51)">
44
+ <SMARTS>c:1:c:c-2:c(:c:c:1)-[#6]-3-[#6](-[#6]-[#7]-2)-[#6]-[#6]=[#6]-3</SMARTS>
45
+ </substructure>
46
+ <substructure name="(15) amino_acridine_A(46)">
47
+ <SMARTS>c:1:c:2:c(:c:c:c:1):n:c:3:c(:c:2-[#7]):c:c:c:c:3</SMARTS>
48
+ </substructure>
49
+ <substructure name="(16) ene_five_het_D(46)">
50
+ <SMARTS>[#6]-1(=[#6])-[#6](=[#8])-[#7]-[#7]-[#6]-1=[#8]</SMARTS>
51
+ </substructure>
52
+ <substructure name="(17) thiophene_amino_Aa(45)">
53
+ <SMARTS>[#7](-[#1])(-[#1])-c:1:c(:c(:c(:s:1)-[!#1])-[!#1])-[#6]=[#8]</SMARTS>
54
+ </substructure>
55
+ <substructure name="(18) ene_five_het_E(44)">
56
+ <SMARTS>[#7]-[#6]=!@[#6]-2-[#6](=[#8])-c:1:c:c:c:c:c:1-[!#6&amp;!#1]-2</SMARTS>
57
+ </substructure>
58
+ <substructure name="(19) sulfonamide_A(43)">
59
+ <SMARTS>c:1(:c(:c(:c(:c(:c:1-[#8]-[#1])-[F,Cl,Br,I])-[#1])-[F,Cl,Br,I])-[#1])-[#16](=[#8])(=[#8])-[#7]</SMARTS>
60
+ </substructure>
61
+ <substructure name="(20) thio_ketone(43)">
62
+ <SMARTS>[#6]-[#6](=[#16])-[#6]</SMARTS>
63
+ </substructure>
64
+ <substructure name="(21) sulfonamide_B(41)">
65
+ <SMARTS>c:1:c:c(:c:c:c:1-[#8]-[#1])-[#7](-[#1])-[#16](=[#8])=[#8]</SMARTS>
66
+ </substructure>
67
+ <substructure name="(22) anil_no_alk(40)">
68
+ <SMARTS>c:1(:c(:c(:c(:c(:c:1-[#1])-[#1])-[$([#8]),$([#7]),$([#6](-[#1])-[#1])])-[#1])-[#1])-[#7](-[#1])-[#1]</SMARTS>
69
+ </substructure>
70
+ <substructure name="(23) thiophene_amino_Ab(40)">
71
+ <SMARTS>[$([#1]),$([#6](-[#1])-[#1]),$([#6]:[#6])]-c:1:c(:c(:c(:s:1)-[#7](-[#1])-[#6](=[#8])-[#6])-[#6](=[#8])-[#8])-[$([#6]:1:[#6]:[#6]:[#6]:[#6]:[#6]:1),$([#6]:1:[#16]:[#6]:[#6]:[#6]:1)]</SMARTS>
72
+ </substructure>
73
+ <substructure name="(24) het_pyridiniums_A(39)">
74
+ <SMARTS>[#7+]:1(:[#6]:[#6]:[!#1]:c:2:c:1:c(:c(-[$([#1]),$([#7])]):c:c:2)-[#1])-[$([#6](-[#1])(-[#1])-[#1]),$([#8;X1]),$([#6](-[#1])(-[#1])-[#6](-[#1])=[#6](-[#1])-[#1]),$([#6](-[#1])(-[#1])-[#6](-[#1])(-[#1])-[#8]-[#1]),$([#6](-[#1])(-[#1])-[#6](=[#8])-[#6]),$([#6](-[#1])(-[#1])-[#6](=[#8])-[#7](-[#1])-[#6]:[#6]),$([#6](-[#1])(-[#1])-[#6](-[#1])(-[#1])-[#1])]</SMARTS>
75
+ </substructure>
76
+ <substructure name="(25) anthranil_one_A(38)">
77
+ <SMARTS>c:1:c:c:c:c(:c:1-[#7](-[#1])-[!$([#6]=[#8])])-[#6](-[#6]:[#6])=[#8]</SMARTS>
78
+ </substructure>
79
+ <substructure name="(26) cyano_imine_A(37)">
80
+ <SMARTS>[#7](-[#1])-[#7]=[#6](-[#6]#[#7])-[#6]=[!#6&amp;!#1;!R]</SMARTS>
81
+ </substructure>
82
+ <substructure name="(27) diazox_sulfon_A(36)">
83
+ <SMARTS>[#7](-c:1:c:c:c:c:c:1)-[#16](=[#8])(=[#8])-[#6]:2:[#6]:[#6]:[#6]:[#6]:3:[#7]:[$([#8]),$([#16])]:[#7]:[#6]:2:3</SMARTS>
84
+ </substructure>
85
+ <substructure name="(28) hzone_anil_di_alk(35)">
86
+ <SMARTS>[#6](-[#1])(-[#1])-[#7](-[#6](-[#1])-[#1])-c:1:c(:c(:c(:c(:c:1-[#1])-[#1])-[#6](-[#1])=[#7]-[#7]-[$([#6](=[#8])-[#6](-[#1])(-[#1])-[#16]-[#6]:[#7]),$([#6](=[#8])-[#6](-[#1])(-[#1])-[!#1]:[!#1]:[#7]),$([#6](=[#8])-[#6]:[#6]-[#8]-[#1]),$([#6]:[#7]),$([#6](-[#1])(-[#1])-[#6](-[#1])-[#8]-[#1])])-[#1])-[#1]</SMARTS>
87
+ </substructure>
88
+ <substructure name="(29) rhod_sat_A(33)">
89
+ <SMARTS>[#7]-1-[#6](=[#16])-[#16]-[#6;X4]-[#6]-1=[#8]</SMARTS>
90
+ </substructure>
91
+ <substructure name="(30) hzone_enamin(30)">
92
+ <SMARTS>[#7](-[#1])-[#7]=[#6]-[#6](-[$([#1]),$([#6])])=[#6](-[#6])-!@[$([#7]),$([#8]-[#1])]</SMARTS>
93
+ </substructure>
94
+ <substructure name="(31) pyrrole_B(29)">
95
+ <SMARTS>n2(-[#6]:1:[!#1]:[#6]:[#6]:[#6]:[#6]:1)c(cc(c2-[#6]:[#6])-[#1])-[#6;X4]</SMARTS>
96
+ </substructure>
97
+ <substructure name="(32) thiophene_hydroxy(28)">
98
+ <SMARTS>s1ccc(c1)-[#8]-[#1]</SMARTS>
99
+ </substructure>
100
+ <substructure name="(33) cyano_pyridone_B(27)">
101
+ <SMARTS>[#6]-1(=[#6](-[#6](=[#8])-[#7]-[#6](=[#7]-1)-[!#6&amp;!#1])-[#6]#[#7])-[#6]</SMARTS>
102
+ </substructure>
103
+ <substructure name="(34) imine_one_sixes(27)">
104
+ <SMARTS>[#6]-1(-[#6](=[#8])-[#7]-[#6](=[#8])-[#7]-[#6]-1=[#8])=[#7]</SMARTS>
105
+ </substructure>
106
+ <substructure name="(35) dyes5A(27)">
107
+ <SMARTS>[#6](-[#1])(-[#1])-[#7]([#6]:[#6])~[#6][#6]=,:[#6]-[#6]~[#6][#7]</SMARTS>
108
+ </substructure>
109
+ <substructure name="(36) naphth_amino_A(25)">
110
+ <SMARTS>c:2:c:1:c:c:c:c-3:c:1:c(:c:c:2)-[#7]-[#6]=[#7]-3</SMARTS>
111
+ </substructure>
112
+ <substructure name="(37) naphth_amino_B(25)">
113
+ <SMARTS>c:2:c:1:c:c:c:c-3:c:1:c(:c:c:2)-[#7](-[#6;X4]-[#7]-3-[#1])-[#1]</SMARTS>
114
+ </substructure>
115
+ <substructure name="(38) ene_one_ester(24)">
116
+ <SMARTS>[#6]-[#6](=[#8])-[#6](-[#1])=[#6](-[#7](-[#1])-[#6])-[#6](=[#8])-[#8]-[#6]</SMARTS>
117
+ </substructure>
118
+ <substructure name="(39) thio_dibenzo(23)">
119
+ <SMARTS>[#16]=[#6]-1-[#6]=,:[#6]-[!#6&amp;!#1]-[#6]=,:[#6]-1</SMARTS>
120
+ </substructure>
121
+ <substructure name="(40) cyano_cyano_A(23)">
122
+ <SMARTS>[#6](-[#6]#[#7])(-[#6]#[#7])-[#6](-[$([#6]#[#7]),$([#6]=[#7])])-[#6]#[#7]</SMARTS>
123
+ </substructure>
124
+ <substructure name="(41) hzone_acyl_naphthol(22)">
125
+ <SMARTS>c:1:2:c(:c(:c(:c(:c:1:c(:c(:c(:c:2-[#1])-[#8]-[#1])-[#6](=[#8])-[#7](-[#1])-[#7]=[#6])-[#1])-[#1])-[#1])-[#1])-[#1]</SMARTS>
126
+ </substructure>
127
+ <substructure name="(42) het_65_A(21)">
128
+ <SMARTS>[#8]=[#6]-c2c1nc(-[#6](-[#1])-[#1])cc(-[#8]-[#1])n1nc2</SMARTS>
129
+ </substructure>
130
+ <substructure name="(43) imidazole_A(19)">
131
+ <SMARTS>n:1:c(:n(:c(:c:1-c:2:c:c:c:c:c:2)-c:3:c:c:c:c:c:3)-[#1])-[#6]:[!#1]</SMARTS>
132
+ </substructure>
133
+ <substructure name="(44) ene_cyano_A(19)">
134
+ <SMARTS>[#6](-[#6]#[#7])(-[#6]#[#7])=[#6]-c:1:c:c:c:c:c:1</SMARTS>
135
+ </substructure>
136
+ <substructure name="(45) anthranil_acid_A(19)">
137
+ <SMARTS>c:1(:c:c:c:c:c:1-[#7](-[#1])-[#7]=[#6])-[#6](=[#8])-[#8]-[#1]</SMARTS>
138
+ </substructure>
139
+ <substructure name="(46) dyes3A(19)">
140
+ <SMARTS>[#7+]([#6]:[#6])=,:[#6]-[#6](-[#1])=[#6]-[#7](-[#6;X4])-[#6]</SMARTS>
141
+ </substructure>
142
+ <substructure name="(47) dhp_bis_amino_CN(19)">
143
+ <SMARTS>[#7](-[#1])(-[#1])-[#6]-1=[#6](-[#6]#[#7])-[#6](-[#1])(-[#6]:[#6])-[#6](=[#6](-[#7](-[#1])-[#1])-[#16]-1)-[#6]#[#7]</SMARTS>
144
+ </substructure>
145
+ <substructure name="(48) het_6_tetrazine(18)">
146
+ <SMARTS>[#7]~[#6]:1:[#7]:[#7]:[#6](:[$([#7]),$([#6]-[#1]),$([#6]-[#7]-[#1])]:[$([#7]),$([#6]-[#7])]:1)-[$([#7]-[#1]),$([#8]-[#6](-[#1])-[#1])]</SMARTS>
147
+ </substructure>
148
+ <substructure name="(49) ene_one_hal(17)">
149
+ <SMARTS>[#6]-[#6]=[#6](-[F,Cl,Br,I])-[#6](=[#8])-[#6]</SMARTS>
150
+ </substructure>
151
+ <substructure name="(50) cyano_imine_B(17)">
152
+ <SMARTS>[#6](-[#6]#[#7])(-[#6]#[#7])=[#7]-[#7](-[#1])-c:1:c:c:c:c:c:1</SMARTS>
153
+ </substructure>
154
+ <substructure name="(51) thiaz_ene_B(17)">
155
+ <SMARTS>[#6]-1(=[#6](-!@[#6](=[#8])-[#7]-[#6](-[#1])-[#1])-[#16]-[#6](-[#7]-1-[$([#6](-[#1])(-[#1])-[#6](-[#1])=[#6](-[#1])-[#1]),$([#6]:[#6])])=[#16])-[$([#7]-[#6](=[#8])-[#6]:[#6]),$([#7](-[#1])-[#1])]</SMARTS>
156
+ </substructure>
157
+ <substructure name="(52) ene_rhod_B(16)">
158
+ <SMARTS>[#16]-1-[#6](=[#8])-[#7]-[#6](=[#8])-[#6]-1=[#6](-[#1])-[$([#6]-[#35]),$([#6]:[#6](-[#1]):[#6](-[F,Cl,Br,I]):[#6]:[#6]-[F,Cl,Br,I]),$([#6]:[#6](-[#1]):[#6](-[#1]):[#6]-[#16]-[#6](-[#1])-[#1]),$([#6]:[#6]:[#6]:[#6]:[#6]:[#6]:[#6]:[#6]:[#6]:[#6]-[#8]-[#6](-[#1])-[#1]),$([#6]:1:[#6](-[#6](-[#1])-[#1]):[#7](-[#6](-[#1])-[#1]):[#6](-[#6](-[#1])-[#1]):[#6]:1)]</SMARTS>
159
+ </substructure>
160
+ <substructure name="(53) thio_carbonate_A(15)">
161
+ <SMARTS>[#8]-1-[#6](-[#16]-c:2:c-1:c:c:c(:c:2)-[$([#7]),$([#8])])=[$([#8]),$([#16])]</SMARTS>
162
+ </substructure>
163
+ <substructure name="(54) anil_di_alk_furan_A(15)">
164
+ <SMARTS>[#7](-[#6](-[#1])-[#1])(-[#6](-[#1])-[#1])-c:1:c(:c(:c(:o:1)-[#6]=[#7]-[#7](-[#1])-[#6]=[!#6&amp;!#1])-[#1])-[#1]</SMARTS>
165
+ </substructure>
166
+ <substructure name="(55) ene_five_het_F(15)">
167
+ <SMARTS>c:1(:c:c:c:c:c:1)-[#6](-[#1])=!@[#6]-3-[#6](=[#8])-c:2:c:c:c:c:c:2-[#16]-3</SMARTS>
168
+ </substructure>
169
+ </PAINSb>