AutoDockTools is implemented in the object-oriented programming language Python and is build from reusable software components15 ,16 . The easy-to-use graphical user interface has a gentle learning curve and an effective self-taught tutorial is available online. Reusable software components are used to represent the flexible ligand, the sets of parameters and the docking calculation, enabling a range of uses from a single use to thousands of docking experiments involving many different sets of molecules, facilitating automated high-throughput applications. For example, converting the NCI diversity database of small molecules into AutoDock-formatted ligand files was possible with a short Python script of less than 20 lines by leveraging the existing software components underlying AutoDockTools.
AutoDockTools exists in the context of a rich set of tools for molecular modeling, the Python Molecular Viewer (PMV)16 ,17 (link). PMV is a freely distributed Python-based molecular viewer. It is built with a component-based architecture with the following software components: ViewerFramework, a generic OpenGL-based 3-dimensional viewing component; and MolKit, a hierarchical data representation of molecules. AutoDockTools consists of a set of commands dynamically extending PMV with commands specific to the preparation, launching and analysis of AutoDock calculations. Hence, all PMV commands (such as reading/writing files, calculating and displaying secondary structure, adding or deleting hydrogens, calculating charges and molecular surfaces, and many others) are also naturally available in AutoDockTools. PMV also provides access to the Python-interpreter so that commands or scripts can be called interactively. PMV commands log themselves, producing a session file that can be rerun. In summary, AutoDockTools is an example of a specialization of the generic molecular viewer PMV for the specific application of AutoDock.