AutoDock-Vina icon indicating copy to clipboard operation
AutoDock-Vina copied to clipboard

How to set vina score to dock complex with metals?

Open Dadiao-shuai opened this issue 1 year ago • 5 comments

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')?

Dadiao-shuai avatar Sep 19 '23 07:09 Dadiao-shuai

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.

diogomart avatar Sep 25 '23 06:09 diogomart

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

Kerro-junior avatar Sep 25 '23 06:09 Kerro-junior

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

If so, how can we use vina to dock protein with metals? We even cannot get their pdbqt files!

Dadiao-shuai avatar Sep 25 '23 08:09 Dadiao-shuai

@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.

RJ-Li avatar Sep 25 '23 08:09 RJ-Li

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.

1ew9H_A_with_Mg.pdb.txt 1ew9H_A.pdbqt.txt

rwxayheee avatar Sep 25 '23 18:09 rwxayheee