Error in 3D conversion from smiles to pdbqt

The format conversion from smiles to pdbqt does not work. Giving 10 compounds results in the following:

  • pdbqt files were generated for only 1 of the 10 compounds
  • Unintentionally generates multiple pdbqt files with multiple conformers (3D coordinates) for the one compound
  • No value in q (partial charge) for any of the conformer pdbqt files

How do I modify it to generate one pdbqt file with partial charge for each of the 10 compounds given? Could you please advise if there is a solution to this problem?

$ pwd
/shared/VFLP/input-files/collections/AA/AAAA
$ ls
0000 0000.tar.gz 0000.txt.gz
$ cd 0000
$ ls
PV-002844111784.smi PV-009095522958.smi Z4496448804.smi Z7363077019.smi PV-003477850680.smi PV-009234181902.smi Z5067467525.smi PV-008660388768.smi Z4428721271.smi Z7289498217.smi
$ cat PV-002844111784.smi PV-008660388768.smi
CC(C)C(NC(C)C1C2CC3C(C2)C31)C(C)C
CC(N[C@H]1[C@@H]2C[C@H]1N[C@@H]2C)C1C(C)(C)C1(C)C |&1:3,4,6,8|

$ pwd
/shared/VFLP/workflow/complete/pdbqt/AA/AAAA/0000
$ ls
PV-008660388768_S12_T0.pdbqt PV-008660388768_S20_T0.pdbqt PV-008660388768_S28_T0.pdbqt PV-008660388768_S13_T0.pdbqt PV-008660388768_S21_T0.pdbqt PV-008660388768_S29_T0.pdbqt PV-008660388768_S18_T0.pdbqt PV-008660388768_S26_T0.pdbqt PV-008660388768_S19_T0.pdbqt PV-008660388768_S27_T0.pdbqt

PV-008660388768_S12_T0.pdbqt (3.1 KB)
PV-008660388768_S13_T0.pdbqt (3.1 KB)
all.ctrl (24.9 KB)
todo.all (16 Bytes)
vflp_submit_jobs.py (7.7 KB)

I was wondering if this would help solve the above problem, additional setting of conformation_program_2=molconvert will terminate the process with an error related to Nailgun.

Error: Could not find or load main class com.martiansoftware.nailgun.NGServer
Caused by: java.lang.ClassNotFoundException: com.martiansoftware.nailgun.NGServer

OSError: [Errno 8] Exec format error: ‘ng’

Can you please advise if there is a solution to this problem that arises when using Nailgun as well?

Java ver. 21.0.0
Jchemsuite ver. 23.14.0
Nailgun ver. 1.0.0

all.ctrl (24.9 KB)
3_0.err.txt (5.3 KB)
3_0.out.txt (7.1 KB)

Hi y-komuro and welcome to our community!

A possible cause for Unintentionally generates multiple pdbqt files with multiple conformers (3D coordinates) for the one compound might be this setting from your all.ctrl file, which I would change to false, just to try and troubleshoot.

****** Stereoisomer Generation

stereoisomer_generation=true
# Possible values:
#   * false
#   * true

Looking at the *.err file you sent, I can see this line:

subprocess.TimeoutExpired: Command ‘[‘obabel’, ‘–gen3d’, ‘-ismi’, ‘/tmp/xgey42fp/obabel.conf.PV-009095522958_S0_T0_input.smi’, ‘-opdb’, ‘-O’, ‘/tmp/xgey42fp/intermediate/AA/AAAA/0000/PV-009095522958/PV-009095522958_S0_T0/gen.pdb.tmp’]’ timed out after 15 seconds

This leads me to think that obabel simply might not have enough time to convert, because of this setting in the all.ctrl file:


obabel_conformation_timeout=15
# Time in seconds to wait to timeout

I would set this to a much higher value to troubleshoot, say =300 .You can test this on a local machine or VM with a similar configuration to see how much time (on average) it takes obabel to convert (for e.g. using time if you are running linux)

Let me know if this solves the problem!

Kind regards,

Sorin

I unintentionally omitted one of your questions:

  • No value in q (partial charge) for any of the conformer pdbqt files

is there a particular reason why you would want partial charges in this case? Assuming that you are using Vina (or forks) to dock your library, these charges are not needed.

AutoDock Vina ignores the user-supplied partial charges. It has its own way of dealing with the electrostatic interactions through the hydrophobic and the hydrogen bonding terms.

Hope this helps, let me know how it went!

Kind regards,

Sorin

Hi Sorin,

Thank you for your reply and advice! I made the following changes to the all.ctrl and ran it.

****** Stereoisomer Generation

#stereoisomer_generation=true
stereoisomer_generation=fase

obabel_conformation_timeout=300
#Time in seconds to wait to timeout

Then the attached workflow/workunits/1/*.err and workflow/complete/status/AA/AAAA/*.json were exported, but the pdbqt file was not generated. Are there any additional possible modifications?
0000.json (20.2 KB)
4_0.err (2.5 KB)
4_0.out (8.2 KB)
all.ctrl (25.0 KB)

I was trying to generate a pdbqt file for the purpose of using Quick Vina2, but I understand that partial charges do not need to be assigned. Thank you very much.

Hi y-komuro,

Thank you for trying the suggested modifications.

Looking at the all.ctrl file a bit more carefully, there might be a problem with this value here:

molconvert_3D_options=-3:{fine}
# Setting only required if conformation_generation=true and one of the programs used is molconvert
# 3D conformation generation options for molconvert.
# See also the help text printed by molconvert for additional information
# Possible values:
#   * -3           Defaults to value 3{fast}
#   *  3{fine}     Find low energy conformer Leave failed fragments intact
#   *  3{fast}     Fast clean, if failed, perform fine clean, accept any generated structure (default)
#   *  3{nofaulty} Same as S{fast}, but leave failed fragments intact.

From what I see, there is no -3:{fine}. Could you swith to 3{fine} or alternatively -3 (so that it defaults to 3{fast})?

This would most likely explain the errors in the *.err file you attached:

ERROR:root:conformation_generation failed for PV-002844111784_S0_T0

Can you please try this and let me know if the problem is fixed?

Kind regards,

Sorin

Hi Sorin,

Thank you for the reply and detailed confirmation! I tried the following modification:

molconvert_3D_options=3{fine}

but the error message of the last part in the attached *.err file was as follows:

Traceback (most recent call last):
  File "./vflp_run.py", line 2695, in <module>
    main()
  File "./vflp_run.py", line 2685, in main
    process(ctx)
  File "./vflp_run.py", line 2341, in process
    process_collection(ctx, collection_key, collection, collection_data)
  File "./vflp_run.py", line 2381, in process_collection
    res = pool.map(process_ligand, tasklist)
  File "/usr/lib64/python3.7/multiprocessing/pool.py", line 268, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/usr/lib64/python3.7/multiprocessing/pool.py", line 657, in get
    raise self._value
OSError: [Errno 8] Exec format error: 'ng'

Also, for reference, the description of paths in the ~/.bashrc is as follows:

export PATH="/shared/VFTools/bin:$PATH"
export PATH="/shared/src/cmake-3.25.2/cmake/bin:$PATH"
export PATH="/shared/src/openbabel-3.1.1/bin/bin:$PATH"
export PATH="/shared/VFLP/tools/packages/java/bin:$PATH"
export PATH="/shared/VFLP/tools/packages/jchemsuite/bin:$PATH"
export PATH="/shared/VFLP/tools/packages/nailgun/nailgun-client/c:$PATH"
export PYTHONPATH="/shared/VFLP/tools/packages/nailgun/nailgun-client/py:$PYTHONPATH"
export PYTHONPATH="/shared/src/openbabel-3.1.1/bin/bin:$PYTHONPATH"

Please let us know if you notice anything. I am willing to try.

8_0.err.txt (5.3 KB)
8_0.out.txt (7.5 KB)
all.ctrl (25.1 KB)

Best regards,
y-komuro

Hey @y-komuro any luck with preparing ligands through VFLP?
Thanks

Hi @har_vf

Thank you for your message. I have not worked on the VFLP since then, so there is no update. For the time being, we have decided to use the preset Enamine REAL.