From: Jeff Saxon (jmsstarlight_at_gmail.com)
Date: Thu Nov 05 2020 - 16:44:03 CST

Dear All,
thank you very much for your quick responses!
Indeed I have already tried to analyse those DLG by ADT, combining
several DLGs (of the same system) and recluster the results based on
RMSD of the ligand and show the population of the clusters according
to the predicted energy of binding. Now I've decided to customize it
to select some particular atoms of the ligand or its COM, which is not
possible with ADT.
Then I converted those DLGs to PDBs and did it via gromacs but the
energy term was lost so I could see only population of the clusters
w/o arranging according to the predicted energies.
So VMD may be a great solution, since It can set very complex atomic
selections and do clusterizations of the trajectories ... The only
thing is to associate it with DLG in order to take into account the
energies of binding predicted by AD.

Josh, I am going to test your script tomorrow and I will let you know
then, thank you anyway!
Cheers,
J

чт, 5 нояб. 2020 г. в 21:24, Josh Vermaas <joshua.vermaas_at_gmail.com>:
>
> Hi Jeff,
>
> While there isn't a plugin, it is pretty straightforward to convert a DLG file to a multiframe pdb file. This is a script I put together to do some analysis, and is written in python to interpret AutoDock-GPU outputs (which match AutoDock's as far as I can tell). The key function for you in this case would be dlg_to_multiframepdb.
>
> -Josh
>
> import glob
> import os
> import subprocess
> import numpy as np
> import vmdnumpy as vnp
> from Molecule import *
> from atomsel import *
> def dlg_to_multiframepdb(fname):
> inputstrings = subprocess.check_output("grep \"DOCKED:\" %s" % fname, shell=True).split("\n")
> output = ""
> for s in inputstrings:
> if s[8:12] == "ATOM" or s[8:12] == "HETA":
> output += s[8:] + "\n"
> elif s[8:14] == "ENDMDL":
> output += "ENDMDL\n"
> return output
> def dlg_to_energy(fname):
> inputstrings = subprocess.check_output("grep \"Estimated\" %s | sed 's/=//g' | awk '{print $8}'" % fname, shell=True).split("\n")[:-1]
> energies = np.array(inputstrings).astype(np.float)
> return energies
> def pdbqt_to_pdb(fname):
> inputstrings = subprocess.check_output("cat %s" % fname, shell=True).split("\n")
> output = ""
> for s in inputstrings:
> if s[:4] == "ATOM" or s[:4] == "HETA":
> output += s + "\n"
> elif s[:6] == "ENDMDL":
> output += "ENDMDL\n"
> return output
>
> os.chdir("data")
> dirlist = glob.glob("*/")
> print dirlist
> results = np.empty((len(dirlist), 4, 3), dtype=np.float)
> for i, d in enumerate(dirlist):
> fout = open(d+"xray.pdb", "w")
> fout.write(pdbqt_to_pdb(d+"flex-xray.pdbqt"))
> fout.close()
> ref = Molecule()
> ref.load(d+"xray.pdb")
> refsel = atomsel("all")
> for j, dlgtype in enumerate(['CUDAout', 'CUDAout10', 'OpenCLout', 'OpenCLout10']):
> for k in range(3):
> dlgfile = d + dlgtype + "-%d.dlg" % k
> energies = dlg_to_energy(dlgfile)
> fout = open(d+dlgtype+"-%d.pdb" % k, "w")
> fout.write(dlg_to_multiframepdb(dlgfile))
> fout.close()
> mol = Molecule()
> mol.load(d+dlgtype+"-%d.pdb" % k)
> sel = atomsel("all", frame=np.argmin(energies))
> print d, sel.rmsd(refsel)
> results[i][j][k] = sel.rmsd(refsel)
> print results
> np.savez("../dockedrmsds.npz", cuda10=results[:,1,:].flatten(), cuda100=results[:,0,:].flatten(), opencl10=results[:,3,:].flatten(), opencl100=results[:,2,:].flatten())
> exit()
>
> On Thu, Nov 5, 2020 at 10:14 AM John Stone <johns_at_ks.uiuc.edu> wrote:
>>
>> Hi,
>> There isn't an existing DLG plugin for VMD, but this seems like
>> it would be a great thing for someone to write. The AutoDock
>> pages suggest using "ADT" (autodock tools) to work with these files.
>> That being said, if you are willing to share complete example file
>> sets for one of your autodock runs, I would love to collect those
>> with the hope that we would be able to find someone to look into
>> developing such a plugin down the road.
>>
>> Best regards,
>> John Stone
>> vmd_at_ks.uiuc.edu
>>
>> On Thu, Nov 05, 2020 at 05:45:19PM +0100, Jeff Saxon wrote:
>> > Dear VMD users!
>> > Could you tell me whether there is some vmd's plugin that allows me to
>> > read directly DLG filles (produced by autodock) and make some basic
>> > operations on the conformational ensembles of the ligand?
>> > I've tried to load directly DLG files from terminal command line
>> > vmd *.dlg
>> > but it recognized it as an attempt to load PDB files and eventually did nothing.
>> >
>> > Thank you for your help
>> > J.
>>
>> --
>> NIH Center for Macromolecular Modeling and Bioinformatics
>> Beckman Institute for Advanced Science and Technology
>> University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801
>> http://www.ks.uiuc.edu/~johns/ Phone: 217-244-3349
>> http://www.ks.uiuc.edu/Research/vmd/
>>