ccsb-scripps / AutoDock-Vina

AutoDock Vina
http://vina.scripps.edu
Apache License 2.0
624 stars 210 forks source link

PDBQT parsing error: Atom type D is not a valid AutoDock type (atom types are case-sensitive). #99

Closed anaome closed 2 years ago

anaome commented 2 years ago

Dear All,

I am trying to dock a ligand containing a dummy atom (no interaction whatsoever). For this I have added the following line in a local copy of AD4_parameters.dat:

atom_par D 0.00 0.000 00.0000 -0.00000 0.0 0.0 0 0 0 0 X # Dummy

In the ligand PDBQT file:

ATOM 1 X UNL 1 1.374 0.008 0.068 1.00 0.00 0.000 D

In the GPF file:

parameter_file AD4_parameters.dat

Autogrid (v 4.2.7.x.2019-07-11) successfully created a receptor_rigid.D.map with zeroes.

Unfortunately when running Vina: ./vina_1.2.3_linux_x86_64 --ligand dummy.pdbqt --flex receptor_flex.pdbqt --maps receptor_rigid --scoring ad4 --out dummy_testout.pdbqt

Reading AD4.2 maps ... done.

PDBQT parsing error: Atom type D is not a valid AutoDock type (atom types are case-sensitive).

ATOM 1 X UNL 1 1.374 0.008 0.068 1.00 0.00 0.000 D

What is the proper way to add new atom types definitions for use with Vina and AD4 scoring, if any ?

Thank you for your time and help !

Regards

diogomart commented 2 years ago

Hi,

You could type your dummy atoms as G0.

Type G0 is for dummy atoms that assist in closing cyclic molecules (macrocycles). G0 atoms don't interact with the receptor. They do interact with other ligand atoms, which is a bug I just found and will fix soon. The intended implementation is that G0 interacts only with CG0.

Vina does not read "AD4_parameters.dat" and all atom types are hard-coded.

diogomart commented 2 years ago

6af928b9d5f772d26f7f02f7f219e1ea7d97ed05 removes the interactions between G0 and any atom that is not CG0. This applies to Gn/CGn for n = 0, 1, 2, or 3. Thus G0, G1, G2, and G3 act as dummy atoms if their CGn counterparts are absent.

By the way, meeko can add dummy atoms based on SMARTS and some geometry specifications, maybe it can be useful. Let us know if you'd be interested in an example.

ale94mleon commented 2 years ago

Hello, I have some issues with the Gn/CGn atoms, and I see that @diogomart already comment about it, but still I can not figure it out what is the problem in my case (vina version perhaps?... no sure). Here is my example:

from rdkit import Chem
from rdkit.Chem import AllChem
from meeko import MoleculePreparation

smiles = 'Cc1oc(-c2ccc(CCNC(=O)CCNC(=O)NC3CC3)cc2)nc1-c1cccc(OC2CCCCCC2)c1'
mol = Chem.AddHs(Chem.MolFromSmiles(smiles))
AllChem.EmbedMolecule(mol)
AllChem.MMFFOptimizeMolecule(mol)
preparator = MoleculePreparation()
preparator.prepare(mol)
pdbqt_string = preparator.write_pdbqt_string()
print(pdbqt_string)

When I perform docking with that pdbqt, I get the following error:

Parse error on line 39 in file "lig.pdbqt": ATOM syntax incorrect: "CG0" is not a valid AutoDock type. Note that AutoDock atom types are case-sensitive.

I installed vina throgh conda as:

conda install -c conda-forge vina

I am working in linux. The result of vina --version is: AutoDock Vina dbf9226-mod.

diogomart commented 2 years ago

I can't find commit dbf9226 in our repository. Not sure what is going on. @jeeberhardt do you know if this is normal?

We stopped distributing on conda some time ago, so most likely you have an older version. The easiest is to download the executable from the releases page and/or install the python bindings from PyPI.

diogomart commented 2 years ago

Just tested a ligand with CG0 atoms and it worked fine with vina installed from conda-forge.

The ligand: cycle.pdbqt.txt

diogomart commented 2 years ago

It is also possible that the Vina version in Python is older (if you were running Vina from Python)

jeeberhardt commented 2 years ago

For information @ale94mleon, the version of Vina you have corresponds to this one: https://github.com/conda-forge/vina-feedstock/commit/dbf9226ec5d58e0d32a633bdd2128de2e5691446