AutoDock-Vina
AutoDock-Vina copied to clipboard
How to set vina score to dock complex with metals?
I heard that there is some sf than can be used in metal ions(Mg,Se,Zn...) docking in AutoDock Vina, But I couldn't find it in manual.
Is there anything to do with v = Vina(sf_name='vina')
?
The vina scoring function, which is the default (e.g., v = Vina()
), handles metals. There's zinc specific potentials but that is for the autodock4 scoring function.
Though the default scoring function can deal with metals, the protein.pdb
cannot be converted into pdbqt file
if they have Zn,Mg...
for example, 1ew9_pocket.pdb consists of Zn and Mg, and the Error is like:
/ADFRsuite_x86_64Linux_1.0/bin/prepare_receptor -r 1ew9_pocket.pdb -A hydrogens -o 1ew9_pocket.pdbqt
' ' apparently composed of not std residues. Deleting
Traceback (most recent call last):
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/Utilities24/prepare_receptor4.py", line 216, in <module>
dict=dictionary)
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 558, in __init__
version=version, delete_single_nonstd_residues=delete_single_nonstd_residues)
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 124, in __init__
self.repairMol(mol, self.repair_type_list)
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 174, in repairMol
self.newHs = self.addHydrogens(mol)
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 187, in addHydrogens
HB.addHydrogens(mol)
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/MolKit/hydrogenBuilder.py", line 61, in addHydrogens
babel.assignHybridization(mol.allAtoms)
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 136, in assignHybridization
self.valence_three()
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 236, in valence_three
elif self.count_free_ox(a) >= 2: a.babel_type="Cac"
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 167, in count_free_ox
self.count_heavy_atoms(bonded_atom) == 1:
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 157, in count_heavy_atoms
if bonded_atom.babel_type[0] == 'H': count = count + 1
File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/MolKit/molecule.py", line 409, in __getattr__
raise AttributeError('member %s not found'%member)
AttributeError: member babel_type not found
Though the default scoring function can deal with metals, the
protein.pdb
cannot be converted intopdbqt file
if they have Zn,Mg...for example, 1ew9_pocket.pdb consists of Zn and Mg, and the Error is like:
/ADFRsuite_x86_64Linux_1.0/bin/prepare_receptor -r 1ew9_pocket.pdb -A hydrogens -o 1ew9_pocket.pdbqt ' ' apparently composed of not std residues. Deleting Traceback (most recent call last): File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/Utilities24/prepare_receptor4.py", line 216, in <module> dict=dictionary) File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 558, in __init__ version=version, delete_single_nonstd_residues=delete_single_nonstd_residues) File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 124, in __init__ self.repairMol(mol, self.repair_type_list) File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 174, in repairMol self.newHs = self.addHydrogens(mol) File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/AutoDockTools/MoleculePreparation.py", line 187, in addHydrogens HB.addHydrogens(mol) File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/MolKit/hydrogenBuilder.py", line 61, in addHydrogens babel.assignHybridization(mol.allAtoms) File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 136, in assignHybridization self.valence_three() File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 236, in valence_three elif self.count_free_ox(a) >= 2: a.babel_type="Cac" File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 167, in count_free_ox self.count_heavy_atoms(bonded_atom) == 1: File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/PyBabel/atomTypes.py", line 157, in count_heavy_atoms if bonded_atom.babel_type[0] == 'H': count = count + 1 File "/data2/rjli/ADFRsuite-1.0/ADFRsuite_x86_64Linux_1.0/CCSBpckgs/MolKit/molecule.py", line 409, in __getattr__ raise AttributeError('member %s not found'%member) AttributeError: member babel_type not found
If so, how can we use vina to dock protein with metals? We even cannot get their pdbqt files!
@diogomart Dear developer, I met the same questions. When there is metal ions such as Mg, the ADFR can't convert it into pdbqt file. So it is impossible to use vina to dock complex with metal.
Hi @Kerro-junior and @Dadiao-shuai, You should be able to get passed the issue if you are not adding hydrogens in prepare_receptor. I am not entirely sure how hydrogens are added, but the coordinate covalent bonds in your system may cause issues in a lot of modeling programs that were initially developed for standard, metal-free proteins. How to model metalloproteins is more of a scientific problem than just a technical problem.
As a walkaround, please see an example here: https://github.com/ccsb-scripps/AutoDock-Vina/issues/241#issuecomment-1734266302 If you think your problem is structure-specific, it would be really helpful if you could share your files so others can reproduce the error.
Edits: One possible issue you might encounter with the unprocessed PDB 1EW9 is overlapping Zn and Mg. You will have to either remove Mg or Zn to be able to get a valid structure and generate a PDBQT file for it.