1
2
3
4
5
6
7 """ Calculation of Lipinski parameters for molecules
8
9 """
10
11 import Chem
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 HDonorSmarts = Chem.MolFromSmarts('[$([N;!H0;v3]),$([N;!H0;+1;v4]),$([O,S;H1;+0]),$([n;H1;+0])]')
30 HAcceptorSmarts = Chem.MolFromSmarts('[$([O,S;H1;v2]-[!$(*=[O,N,P,S])]),$([O,S;H0;v2]),$([O,S;-]),$([N&v3;H1,H2]-[!$(*=[O,N,P,S])]),$([N;v3;H0]),$([n,o,s;+0]),F]')
31 HeteroatomSmarts = Chem.MolFromSmarts('[!#6;!#1]')
32
33
34
35
36 RotatableBondSmarts = Chem.MolFromSmarts('[!$(*#*)&!D1]-&!@[!$(*#*)&!D1]')
37 NHOHSmarts = Chem.MolFromSmarts('[#8H1,#7H1,#7H2,#7H3]')
38 NOCountSmarts = Chem.MolFromSmarts('[#7,#8]')
39
40
43
44 NumHDonors = lambda x,y=HDonorSmarts:_NumMatches(x,y)
45 NumHDonors.__doc__="Number of Hydrogen Bond Donors"
46 NumHDonors.version="1.0.0"
47 _HDonors = lambda x,y=HDonorSmarts:x.GetSubstructMatches(y,uniquify=1)
48 NumHAcceptors = lambda x,y=HAcceptorSmarts:_NumMatches(x,y)
49 NumHAcceptors.__doc__="Number of Hydrogen Bond Acceptors"
50 NumHAcceptors.version="1.0.0"
51 _HAcceptors = lambda x,y=HAcceptorSmarts:x.GetSubstructMatches(y,uniquify=1)
52 NumHeteroatoms = lambda x,y=HeteroatomSmarts:_NumMatches(x,y)
53 NumHeteroatoms.__doc__="Number of Heteroatoms"
54 NumHeteroatoms.version="1.0.0"
55 _Heteroatoms = lambda x,y=HeteroatomSmarts:x.GetSubstructMatches(y,uniquify=1)
56 NumRotatableBonds = lambda x,y=RotatableBondSmarts:_NumMatches(x,y)
57 NumRotatableBonds.__doc__="Number of Rotatable Bonds"
58 NumRotatableBonds.version="1.0.0"
59 _RotatableBonds = lambda x,y=RotatableBondSmarts:x.GetSubstructMatches(y,uniquify=1)
60 NOCount = lambda x,y=NOCountSmarts:_NumMatches(x,y)
61 NOCount.__doc__="Number of Nitrogens and Oxygens"
62 NOCount.version="1.0.0"
63 NHOHCount = lambda x,y=NHOHSmarts:_NumMatches(x,y)
64 NHOHCount.__doc__="Number of NHs or OHs"
65 NHOHCount.version="1.0.0"
66