Guest User

Untitled

a guest
Jul 18th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. import numpy as np
  2. from rdkit import Chem
  3.  
  4. # examples
  5. # C=[NH+]C
  6. component = "C=[NH+]"
  7. component = "[NH+]C"
  8.  
  9. # C[S+](C)C
  10. component = "C[S+]"
  11.  
  12.  
  13. print(component)
  14.  
  15. mc = Chem.MolFromSmiles(component)
  16. n_atoms = mc.GetNumAtoms()
  17. n_bonds = len(mc.GetBonds())
  18.  
  19. charges = np.zeros(n_atoms, dtype=int)
  20.  
  21. for idx in range(n_atoms):
  22. atom = mc.GetAtomWithIdx(idx)
  23. atom.SetNumExplicitHs(0)
  24. charge = atom.GetFormalCharge()
  25. charges[idx] = charge
  26. atom.SetFormalCharge(0)
  27.  
  28. component = Chem.MolToSmiles(mc, canonical=False)
  29. component = component.replace("[", "").replace("]","")
  30.  
  31. mc = Chem.MolFromSmiles(component)
  32.  
  33. for idx, charge in zip(range(n_atoms), charges):
  34. atom = mc.GetAtomWithIdx(idx)
  35. atom.SetFormalCharge(charge)
  36.  
  37. component = Chem.MolToSmiles(mc)
  38. print(component)
Add Comment
Please, Sign In to add comment