File: test3D_old.py

package info (click to toggle)
rdkit 202503.1-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 220,160 kB
  • sloc: cpp: 399,240; python: 77,453; ansic: 25,517; java: 8,173; javascript: 4,005; sql: 2,389; yacc: 1,565; lex: 1,263; cs: 1,081; makefile: 580; xml: 229; fortran: 183; sh: 105
file content (113 lines) | stat: -rw-r--r-- 3,488 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import time

from rdkit import Chem, rdBase
from rdkit.Chem import AllChem
from rdkit.Chem import rdMolDescriptors as rdMD
from rdkit.Chem.EState import AtomTypes, EStateIndices

print(rdBase.rdkitVersion)
print(rdBase.boostVersion)


def getEState(mol):

  return EStateIndices(mol)


def localopt(mol, steps=500):
  if mol.GetNumConformers() == 0:
    mol = make3D(mol)
  AllChem.MMFFOptimizeMolecule(mol, maxIters=steps)
  return mol


def make3D(mol, steps=50):
  mol = Chem.AddHs(mol)
  success = AllChem.EmbedMolecule(mol)
  if success == -1:  # Failed
    success = AllChem.EmbedMolecule(mol, useRandomCoords=True)
    if success == -1:
      raise (Error, "Embedding failed!")
  mol = localopt(mol, steps)
  return mol


def get3D(m, is3d):
  if not is3d:
    m = Chem.AddHs(m)
    AllChem.EmbedMolecule(m)
    AllChem.MMFFOptimizeMolecule(m)
  r = rdMD.CalcAUTOCORR3D(m) + rdMD.CalcRDF(m) + rdMD.CalcMORSE(m) + rdMD.CalcWHIM(
    m) + rdMD.CalcGETAWAY(m)
  return r


def generateALL():
  m = Chem.MolFromSmiles('Cc1ccccc1')
  thefile = open('testAC.txt', 'w')
  filename = "/Users/mbp/Github/rdkit_mine/Code/GraphMol/Descriptors/test_data/PBF_egfr.sdf"
  suppl = Chem.SDMolSupplier(filename, removeHs=False)
  mols = [x for x in suppl]
  start = time.time()
  for m in mols:
    r = get3D(m, True)
    for item in r:
      thefile.write("%.3f," % item)
    thefile.write("\n")

  end = time.time()
  print(end - start)


thefile = open('testSMWHIM.txt', 'w')
writer = Chem.SDWriter('3Dsmallmol.sdf')
A = [
  '[H][H]', 'B', 'O=O', 'C', 'CC', 'CCC', 'CCCC', 'CCCCC', 'CCCCCC', 'CO', 'CCO', 'CCCO', 'CCCCO',
  'CCCCCO', 'CCCCCCO', 'CCl', 'CCCl', 'CCCCl', 'CCCCCl', 'CCCCCCl', 'CCCCCCCl', 'CBr', 'CCBr',
  'CCCBr', 'CCCCBr', 'CCCCCBr', 'CCCCCCBr', 'CI', 'CCI', 'CCCI', 'CCCCI', 'CCCCCI', 'CCCCCCI', 'CF',
  'CCF', 'CCCF', 'CCCCF', 'CCCCCF', 'CCCCCCF', 'CS', 'CCS', 'CCCS', 'CCCCS', 'CCCCCS', 'CCCCCCS',
  'CN', 'CCN', 'CCCN', 'CCCCN', 'CCCCCN', 'CCCCCCN'
]
for smi in A:
  m = Chem.MolFromSmiles(smi)
  m = localopt(m, 100)
  #r=get3D(m,True)
  print(smi)
  print("---------")
  r = rdMD.CalcWHIM(m)
  print("Ei:" + str(r[0]) + "," + str(r[1]) + "," + str(r[2]) + "\n")
  print("Gi:" + str(r[5]) + "," + str(r[6]) + "," + str(r[7]) + "\n")
  print("SI:" + str(rdMD.CalcSpherocityIndex(m)))
  print("AS:" + str(rdMD.CalcAsphericity(m)))
  print("EX:" + str(rdMD.CalcEccentricity(m)))
  for item in r:
    thefile.write("%.3f," % item)
  thefile.write("\n")
  #m.SetProp("smi", smi)
  #writer.write(m)

thefile = open('testBPA.txt', 'w')
writer = Chem.SDWriter('3DBPAmol.sdf')
B = [
  'CN(C)CC(Br)c1ccccc1', 'CN(C)CC(Br)c1ccc(F)cc1', 'CN(C)CC(Br)c1ccc(Cl)cc1',
  'CN(C)CC(Br)c1ccc(Cl)cc1', 'CN(C)CC(Br)c1ccc(I)cc1', 'CN(C)CC(Br)c1ccc(C)cc1',
  'CN(C)CC(Br)c1cccc(F)c1', 'CN(C)CC(Br)c1cccc(Cl)c1', 'CN(C)CC(Br)c1cccc(Br)c1',
  'CN(C)CC(Br)c1cccc(I)c1', 'CN(C)CC(Br)c1cccc(C)c1', 'CN(C)CC(Br)c1ccc(F)c(Cl)c1',
  'CN(C)CC(Br)c1ccc(F)c(Br)c1', 'CN(C)CC(Br)c1ccc(F)c(C)c1', 'CN(C)CC(Br)c1ccc(Cl)c(Cl)c1',
  'CN(C)CC(Br)c1ccc(Cl)c(Br)c1', 'CN(C)CC(Br)c1ccc(Cl)c(C)c1', 'CN(C)CC(Br)c1ccc(Br)c(Cl)c1',
  'CN(C)CC(Br)c1ccc(Br)c(Br)c1', 'CN(C)CC(Br)c1ccc(Br)c(C)c1', 'CN(C)CC(Br)c1ccc(C)c(C)c1',
  'CN(C)CC(Br)c1ccc(C)c(Br)c1'
]
for smi in B:
  m = Chem.MolFromSmiles(smi)
  m = localopt(m, 100)
  #r=get3D(m,True)
  r = rdMD.CalcWHIM(m)
  for item in r:
    thefile.write("%.3f," % item)
  thefile.write("\n")
  #m.SetProp("smi", smi)
  #writer.write(m)

A = "G1w,G2w,G3w,Gw"
print(dir(rdMD))