1
2
3
4
5
6
7
8
9
10
11 import random
12 from rdkit import Chem
13
15 splitB = molB.split('\n')
16 res = []
17 res.extend(splitB[0:3])
18 idx = 3
19 inL = splitB[idx]
20 res.append(inL)
21 nAts = int(inL[0:3])
22 nBonds = int(inL[3:6])
23
24 idx+=1
25 atLines = splitB[idx:idx+nAts]
26
27 order = range(nAts)
28 random.shuffle(order)
29
30 for i in order:
31 res.append(atLines[i])
32
33
34 idx += nAts
35 for i in range(nBonds):
36 inL = splitB[idx]
37 idx1 = int(inL[0:3])-1
38 idx2 = int(inL[3:6])-1
39 idx1 = order.index(idx1)
40 idx2 = order.index(idx2)
41 inL = '% 3d% 3d'%(idx1+1,idx2+1)+inL[6:]
42 res.append(inL)
43 idx += 1
44 res.append('M END')
45 return '\n'.join(res)
46
54
62
63
64
65 if __name__=='__main__':
66 from rdkit.Chem import Randomize
67 CheckCanonicalization(Chem.MolFromSmiles('CON'))
68 CheckCanonicalization(Chem.MolFromSmiles('c1ccccn1'))
69 CheckCanonicalization(Chem.MolFromSmiles('C/C=C/F'))
70