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