Good day,
I would like to simulate the small positive charge on halides (Chlorine, Bromine and Iodine, but not Fluorine) on ligands for docking (Autodock) and molecular dynamics simulations (Gromacs, AMBER, using acpype for ligand preparation).
When preparing a batch of ligands for these simulations I would like to add an Extra Point (EP) of Charge to halides (similar to how hydrogens are added to structures). The idea is for the EPs to have the following properties and labels (From article: Molecular Mechanical Study of Halogen Bonding in Drug Discovery):
For Chlorine and EP (XCl):
Bond lenght (Cl - XCl = 1.95A
Angle (X - Cl - XCl) = 180 degrees
For Bromine and EP (XBr):
Bond lenght (Br - XBr = 2.22A
Angle (X - Br - XBr) = 180 degrees
For iodine and EP (XI):
Bond lenght (CI - XI = 12.35A
Angle (X - CI - XI) = 180 degrees
I have attached a modified element.txt from Open Babel 2.3.2 (running on Ubuntu 14.04 Linux) that includes the properties XCl, XBr and XI.
I tried to modify the mol.cpp, mol.h, openbabel-python.cpp, openbabel.py and pybel.py files (also attached) to include a new function called AddX (same functionality as AddHydrogens for now, just different name). After sucessfully compiling the modified mol.cpp and mol.h files I then used pycharm and a simple pyhton script to see if it worked. I first tried:
import openbabel, pybel
mol = pybel.readfile("pdb", "~/Documents/test/Chlroroquine.pdb").next()
print len(mol.atoms), mol.molwt
mol.OBMol.AddHydrogens()
print len(mol.atoms), mol.molwt
pybelmol = pybel.Molecule(mol)
pybelmol.write("pdb", "~/Documents/test/Chlroroquine_test.pdb", overwrite=True)
With the following output:
22 319.87214
48 319.87214
Then I tried the following::
import openbabel, pybel
mol = pybel.readfile("pdb", "/home/xeonbas/Documents/MGLTools_test/test/Chlrooquine.pdb").next()
print len(mol.atoms), mol.molwt
mol.OBMol.AddX()
print len(mol.atoms), mol.molwt
pybelmol = pybel.Molecule(mol)
pybelmol.write("pdb", "/home/xeonbas/Documents/MGLTools_test/test/Chlrooquine_test.pdb", overwrite=True)
With the following output:
Traceback (most recent call last):
22 319.87214
File "~/PycharmProjects/untitled3/test.py", line 4, in <module>
mol.OBMol.AddX()
AttributeError: 'OBMol' object has no attribute 'AddX'
I am not a programmer so my programming skills are virtually non-existent. Any kind of assistance will be greatly appreaciated.
Thank you
Best regards
Andre