From: Josh Vermaas (
Date: Thu Nov 05 2020 - 14:24:19 CST

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.


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,
        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

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")
        ref = Molecule()
        refsel = atomsel("all")
        for j, dlgtype in enumerate(['CUDAout', 'CUDAout10', 'OpenCLout',
                for k in range(3):
                        dlgfile = d + dlgtype + "-%d.dlg" % k
                        energies = dlg_to_energy(dlgfile)
                        fout = open(d+dlgtype+"-%d.pdb" % k, "w")
                        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(),

On Thu, Nov 5, 2020 at 10:14 AM John Stone <> 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
> 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
> Phone: 217-244-3349