INTRODUCTION
============
NOTE: The latest version of AutoGrow can be found at https://git.durrantlab.com/jdurrant/autogrow
AutoGrow 3.1.1 is a genetic algorithm that attempts to automate the small-molecule inhibitor identification/optimization process. Though no substitute for the medicinal chemist, AutoGrow 3.1.1 can produce chemically feasible drug-like molecules that may supplement the chemist's efforts. Version 3 is significantly improved over previous versions. AutoGrow 1.0 and 2.0 simply replace selected hydrogen atoms with molecular fragments, often leading to molecules that are not easy to synthesize; AutoGrow 3 adds fragments using the AutoClickChem algorithm, thus mimicking the many reactions of click chemistry in silico and producing molecules that can actually be synthesized. Additionally, AutoGrow 1.0 and 2.0 add fragments without regard for the drug-like properties of the growing ligands, often leading to compounds that are not necessarily lead like; AutoGrow 3, in contrast, assesses the generated ligands for drug-like properties at each generation, discarding any compounds that do not meet the appropriate criteria.
COMMAND LINE PARAMETERS
=======================
PARAMETER DEFAULT DESCRIPTION
--------- ------- -----------
-directory_of_source_compounds ./ A directory containing the
initial population of ligands
to optimize, in PDB format.
-directory_of_fragments {AUTOGROW_HOME}/fragments/MW_250/ A properly formatted directory
containing fragments that can
be added to the evolving
ligands.
-filename_of_receptor ./ The filename of the receptor into
which the evolving ligands
will be docked, in PDB format.
-number_of_mutants 40 The number of 'mutant' ligands to
create per generation.
-number_of_crossovers_first_generation 0 The number of 'crossover' ligands
to create in the first
generation. If only one or a
few ligands are present in the
directory specified by the
-directory_of_source_compounds
tag, it may not be possible to
generate many crossover
ligands in the first
generation.
-number_of_mutants_first_generation 0 The number of 'mutant' ligands to
create in the first
generation. If only one or a
few ligands are present in the
directory specified by the
-directory_of_source_compounds
tag, it may not be possible to
generate many crossover
ligands in the first
generation.
-number_of_crossovers 0 The number of 'crossover' ligands
to create in subsequent
generations.
-top_ones_to_advance_to_next_generation 10 The number of best-scoring
ligands selected to serve as
the founders of the next
generation.
-num_generations 10 The number of generations to run.
-max_seconds_per_generation 1000000 The program is terminated if a
generation runs for longer
than the number of seconds
specified by this tag.
-center_x 0.0 The x-coordinate of the center of
the AutoDock-Vina box used for
docking, typically
corresponding to the location
of the the active site.
-center_y 0.0 The y-coordinate of the center of
the AutoDock-Vina box used for
docking, typically
corresponding to the location
of the the active site.
-center_z 0.0 The z-coordinate of the center of
the AutoDock-Vina box used for
docking, typically
corresponding to the location
of the the active site.
-num_processors all_processors The number of processors to use,
for use on multi-core
machines.
-size_x 30.0 The size of the AutoDock-Vina
docking box along the x axis.
-size_y 30.0 The size of the AutoDock-Vina
docking box along the y axis.
-size_z 30.0 The size of the AutoDock-Vina
docking box along the z axis.
-output_dir ./output/ The output directory to which all
docking and scoring output
files are written.
-vina_executable (no default) The absolute path to the AutoDock
Vina executable. The location
of this executable can also be
specified by modifying the
variable definition near the
beginning of this script.
Example: /home/myname/autodock
_vina_1_1_2_linux_x86/bin/vina
-openbabel_bin_directory (no default) The absolute path to the Open
Babel bin directory. The
location of this directory can
also be specified by modifying
the variable definition near
the beginning of this script.
Example: /home/myname/openbabe
l-2.2.0/bin/
-obprop_executable (no default) AutoGrow attempts to locate the
obprop executable based on the
directory specified by the
-openbabel_bin_directory tag,
but, if desired, the location
of this executable can be
specified explicitly.
-babel_executable (no default) AutoGrow attempts to locate the
babel executable based on the
directory specified by the
-openbabel_bin_directory tag,
but, if desired, the location
of this executable can be
specified explicitly.
-mgltools_directory (no default) The absolute path to the main
directory of MGLTools. The
location of this directory can
also be specified by modifying
the variable definition near
the beginning of this script.
Example:
/home/myname/MGLTools-1.5.4/
-prepare_ligand4.py (no default) AutoGrow attempts to locate the
prepare_ligand4.py script
based on the directory
specified by the
-mgltools_directory tag, but,
if desired, the location of
this script can be specified
explicitly.
-prepare_receptor4.py (no default) AutoGrow attempts to locate the
prepare_receptor4.py script
based on the directory
specified by the
-mgltools_directory tag, but,
if desired, the location of
this script can be specified
explicitly.
-mgl_python (no default) AutoGrow attempts to locate the
python executable distributed
with MGLTools based on the
directory specified by the
-mgltools_directory tag, but,
if desired, the location of
this executable can be
specified explicitly.
-autoclickchem_script {AUTOGROW_HOME}/support/ The absolute path to the main
autoclickchem/autoclickchem.py AutoClickChem python file, in
case you don't want to use the
version that ships with
AutoGrow.
-nn1_script {AUTOGROW_HOME}/support/NNScore/ The absolute path to the main
NNScore_1.0/NNScore.py NNScore 1.0 python file, in
case you don't want to use the
version of NNScore 1.0 that
ships with AutoGrow.
-nn2_script {AUTOGROW_HOME}/support/NNScore/ The absolute path to the main
NNScore_2.01/NNScore2.01.py NNScore 2.0 python file, in
case you don't want to use the
version of NNScore 2.0 that
ships with AutoGrow. Note that
if NNScore 2.0 is used, the
-vina_executable command-line
parameter must point to a copy
of Vina 1.1.2 specifically.
-scoring_function VINA Which scoring function to use
when determining the best-
binding ligands of each
generation. Acceptable values
are "VINA", "NN1", and "NN2"
for the AutoDock Vina, NNScore
1.0, and NNScore 2.0 scoring
functions, respectively. Note
that if NNScore 2.0 is used,
the -vina_executable command-
line parameter must point to a
copy of Vina 1.1.2
specifically.
-use_lipinski_filter TRUE Only advance ligands judged
druglike because they satisfy
Lipinski's Rule of Five
(Lipinski, C. A., F. Lombardo,
et al. 2001. "Experimental and
computational approaches to
estimate solubility and
permeability in drug discovery
and development settings." Adv
Drug Deliv Rev 46: 3-26).
Allow for one violation, per
Lipinski's recommendations.
Acceptable values are "TRUE"
and "FALSE".
-use_strict_lipinski_filter TRUE Only advance ligands judged
druglike because they satisfy
Lipinski's Rule of Five
(Lipinski, C. A., F. Lombardo,
et al. 2001. "Experimental and
computational approaches to
estimate solubility and
permeability in drug discovery
and development settings." Adv
Drug Deliv Rev 46: 3-26).
Ignoring Lipinski's
recommendations (which allow
for one violation), permit no
violations. Acceptable values
are "TRUE" and "FALSE".
-use_ghose_filter FALSE Only advance ligands judged
druglike based on the criteria
proposed by Ghose et al.
(Ghose, A. K., V. N.
Viswanadhan, et al. 1999. "A
knowledge-based approach in
designing combinatorial or
medicinal chemistry libraries
for drug discovery. 1. A
qualitative and quantitative
characterization of known drug
databases." J Comb Chem 1:
55-68). Acceptable values are
"TRUE" and "FALSE".
-score_by_ligand_efficiency FALSE Use ligand efficiency (predicted
binding affinity divided by
the number of heavy atoms in
the ligand) instead of the
predicted binding affinity
alone to assess the goodness
of binding. Acceptable values
are "TRUE" and "FALSE".
-allow_modification_without_frag_addition FALSE Do not use those AutoClickChem
reactions that modify
compounds without adding new
fragments. For example,
converting a halide to an
azide is considered a
modification. On the other
hand, merging two compounds
via an azide-alkyne
cycloaddition is a fragment
addition. Acceptable values
are "TRUE" and "FALSE".
-maintain_core FALSE Sometimes users may wish to
ensure that selected atoms
from the starting compounds
are always present in all
ligands subsequently
generated. For example,
perhaps the starting compounds
are known inhibitors, and a
certain chemical moiety that
is common among them is known
to be critical for binding and
so should not be modified.
These "core" atoms are marked
by placing a single
exclamation mark in the atom
name of the associated PDB
file. If the -maintain_core
flag is set to TRUE, AutoGrow
will only generate compounds
that contain a certain number
of marked, "core" atoms. The
minimum number of marked atoms
permissible is set by the
-minimum_core_atoms_required
flag. Acceptable values are
"TRUE" and "FALSE".
-minimum_core_atoms_required 1 This flag is only used if the
-maintain_core flag is set to
TRUE. AutoGrow will only
generate compounds that
contain at the very least this
number of atoms marked by
placing a single exclamation
point in the atom name. To
protect a deprotonated
carboxylate group from being
converted to an amide, for
example, the user could mark
the associated carbon and
oxygen atoms by putting an "!"
in their atom names. The
minimum_core_atoms_required
tag could then be set to 3,
thus requiring that all these
carboxylate atoms be present
in every generated ligand,
thereby preventing AutoGrow
from converting this
carboxylate group into an
amide.
-additional_autoclickchem_parameters If you'd like to pass specific
commandline parameters to
AutoClickChem (e.g., to limit
the types of click-chemistry
reactions performed), used
this parameter. Enclose
AutoClickChem parameters in
quotes.
EXAMPLE
=======
python autogrow_3_1_1.py -number_of_mutants 20 -number_of_crossovers 10 -top_ones_to_advance_to_next_generation 10 -center_x 37.641998
-center_y 25.400999 -center_z 15.80400 -size_x 30.0 -size_y 30.0 -size_z 30. -directory_of_source_compounds ./benzenes/
-directory_of_fragments ./fragments/MW_150/ -filename_of_receptor ./receptors/myreceptor.pdb -output_dir ./output/ -mgltools_directory
/.../mgltools_x86_64Linux2_1.5.4 -vina_executable /.../autodock_vina_1_1_2/bin/vina -obprop_executable /.../obprop -openbabel_bin_directory
/.../bin -num_generations 10 -use_strict_lipinski_filter TRUE -use_ghose_filter FALSE -allow_modification_without_frag_addition TRUE
-maintain_core FALSE
TUTORIAL
========
# AutoGrow 3.1 includes a subdirectory called tutorial with files that show how to
# use the software.
#
# Step 1: Begin by changing to the tutorial directory:
#
# cd /PATH/TO/AUTOGROW3/tutorial/
#
# Step 2: AutoGrow 3.1 can be run from this directory thusly:
#
# python ../autogrow_3_1_1.py
#
# Step 3: Specify a PDB model of the target protein receptor. In this tutorial, a
# model of TbREL1 (PDB ID: 1XDN), a potential African-sleep-sickness drug target,
# will be used. The center of the TbREL1 active site is roughly located at (39.5,
# 23.7, 15.0). A box 30.0 x 30.0 x 20.0 centered on that point should encompass
# the entire site. These are the AutoGrow 3.1 parameters required:
#
# -filename_of_receptor 1xdn_receptor.pdb -center_x 39.5 -center_y 23.7 -center_z
# 15.0 -size_x 30.0 -size_y 30.0 -size_z 20.0
#
# Step 4: Specify which click-chemisty reactions to use in ligand building. In
# this example, we'll use the azide-alkyne Huisgen cycloaddition. Though it's a
# bit redundant here, we'll also tell AutoGrow 3.1 to avoid click-chemistry
# reactions that merely swap compound moieties (e.g., Br => azide), favoring
# instead joining reactions that actually add new fragments.
#
# -additional_autoclickchem_parameters "-all_reactions +azide_and_alkyne_to_azole"
# -allow_modification_without_frag_addition FALSE
#
# Step 5: Specify the source compounds that will be optimized into predicted
# ligands. The tutorial directory contains a subdirectory called
# starting_compounds with 117 naphthalene PDB files chosen because a number of
# experimentally validated TbREL1 inhibitors contain naphthalene substructures.
# Additionally, these naphthalene models contain azide and/or alkyne groups, so
# they can participate in the azide-alkyne Huisgen cycloaddition. The fragments
# that will be added to these naphthalene building blocks via this cycloaddition
# reaction will be drawn from one of the AutoGrow 3.1 default fragment libraries.
#
# -directory_of_source_compounds ./starting_compounds/ -directory_of_fragments
# ../fragments/MW_250/
#
# Step 6: A number of parameters must also be included to control the behavior of
# the genetic algorithm. Note that the first generation is special in that it can
# have a different number of mutants and crossovers than subsequent generations.
#
# -number_of_mutants_first_generation 10 -number_of_crossovers_first_generation 10
# -number_of_mutants 10 -number_of_crossovers 10
# -top_ones_to_advance_to_next_generation 5 -num_generations 2
# -max_seconds_per_generation 1000000
#
# Step 7: Aside from judging ligand fitness by the docking score, AutoGrow 3.1 can
# be instructed to selectively advance only drug-like compounds to subsequent
# generations. In the current example, we're going to require that ligands satisfy
# Lipinski's Rule of Fives as well as the drug-like criteria described by Ghose et
# al. We're also going to evaluate compound fitness using the AutoDock Vina
# scoring function. The actual docking score will be used, rather than ligand
# efficiency (score / number of heavy atoms).
#
# -use_lipinski_filter TRUE -use_strict_lipinski_filter TRUE -use_ghose_filter
# TRUE -scoring_function VINA -score_by_ligand_efficiency FALSE
#
# Step 8: AutoGrow 3.1 can be instructed to favor compounds that contain certain
# key moieties. In the current example, however, we do not need this
# functionality.
#
# -maintain_core FALSE -minimum_core_atoms_required 0
#
# Step 9: AutoGrow 3.1 requires a number of additional open-source programs. The
# locations of these programs and/or their directories must also be specified.
# Take care to specify the correct paths here. -vina_executable should point to
# the actual vina executable, not a directory. In contrast,
# -openbabel_bin_directory points to a directory that contains the executable
# files babel and obprop, and -mgltools_directory points to a directory that
# contains subdirectories with names like bin and MGLToolsPckgs.
#
# -vina_executable /PATH/TO/VINA/EXECUTABLE/vina -openbabel_bin_directory
# /PATH/TO/OPENBABEL/BIN/DIR/bin/ -mgltools_directory
# /PATH/TO/MGLTOOLS/DIRECTORY/MGLTools-1.5.4/
#
# Step 10: AutoGrow 3.1 runs much faster on multiple processors.
#
# -num_processors 4
#
# Step 11: Finally, the user must specify the directory where the AutoGrow 3.1
# output will be written.
#
# -output_dir ./autogrow_output/
#
# So, putting all this together, we have the following command line:
# python ../autogrow_3_1_1.py -filename_of_receptor 1xdn_receptor.pdb -center_x 39.5 -center_y 23.7 -center_z 15.0 -size_x 30.0 -size_y 30.0 -size_z 20.0 -additional_autoclickchem_parameters "-all_reactions +azide_and_alkyne_to_azole" -allow_modification_without_frag_addition FALSE -directory_of_source_compounds ./starting_compounds/ -directory_of_fragments ../fragments/MW_250/ -number_of_mutants_first_generation 10 -number_of_crossovers_first_generation 10 -number_of_mutants 10 -number_of_crossovers 10 -top_ones_to_advance_to_next_generation 5 -num_generations 2 -max_seconds_per_generation 1000000 -use_lipinski_filter TRUE -use_strict_lipinski_filter TRUE -use_ghose_filter TRUE -scoring_function VINA -score_by_ligand_efficiency FALSE -maintain_core FALSE -minimum_core_atoms_required 0 -vina_executable /PATH/TO/VINA/EXECUTABLE/vina -openbabel_bin_directory /PATH/TO/OPENBABEL/BIN/DIR/bin/ -mgltools_directory /PATH/TO/MGLTOOLS/DIRECTORY/MGLTools-1.5.4/ -num_processors 4 -output_dir ./autogrow_output/
# Some users may find it convenient to break this command into multiple lines
# and to store it in an executable file for subsequent reference.
python ../autogrow_3_1_1.py \
-filename_of_receptor 1xdn_receptor.pdb \
-center_x 39.5 -center_y 23.7 -center_z 15.0 \
-size_x 30.0 -size_y 30.0 -size_z 20.0 \
-additional_autoclickchem_parameters "-all_reactions +azide_and_alkyne_to_azole" \
-allow_modification_without_frag_addition FALSE \
-directory_of_source_compounds ./starting_compounds/ \
-directory_of_fragments ../fragments/MW_250/ \
-number_of_mutants_first_generation 10 -number_of_crossovers_first_generation 10 \
-number_of_mutants 10 -number_of_crossovers 10 \
-top_ones_to_advance_to_next_generation 5 -num_generations 2 \
-max_seconds_per_generation 1000000 \
-use_lipinski_filter TRUE -use_strict_lipinski_filter TRUE -use_ghose_filter TRUE \
-scoring_function VINA -score_by_ligand_efficiency FALSE \
-maintain_core FALSE -minimum_core_atoms_required 0 \
-vina_executable /PATH/TO/VINA/EXECUTABLE/vina \
-openbabel_bin_directory /PATH/TO/OPENBABEL/BIN/DIR/bin/ \
-mgltools_directory /PATH/TO/MGLTOOLS/DIRECTORY/MGLTools-1.5.4/ \
-num_processors 4 \
-output_dir ./autogrow_output/