Workflow configuration files
Users can configure HADDOCK3 workflows through human-readable text files. The
configuration file is divided into two sections. The first contains the general
mandatory and optional parameters. The second section contains the
configuration parameters for each step in the workflow. The workflow steps
are defined by a title header with the module’s name to execute followed by its
parameters. The parameter = value
pair definitions follow strictly the TOML
syntax. However, contrarily to TOML, in HADDOCK3 configuration files can have
headers with repeated names.
# first section: general parameters =======
# mandatory parameters
run_dir = "run1-test"
molecules = [
"data/mol1.pdb",
"data/mol2.pdb"
]
# optional parameters
ncores = 40
# second section: step parameters =======
# each workflow step executes a HADDOCK3 module
# the step's header is the name of the module
# the step's paramereters are defined below its header
[topoaa]
autohis = false
[topoaa.mol1]
nhisd = 0
nhise = 1
hise_1 = 75
[topoaa.mol2]
nhisd = 1
hisd_1 = 76
nhise = 1
hise_1 = 15
[rigidbody]
tolerance = 20
ambig_fname = "data/mol1.tbl"
sampling = 20
[caprieval]
reference_fname = "data/mol1-mol2.pdb"
Note
If you are a developer and wish to know more details, see the
haddock.gear.config
module.
Each module does have default parameters defined and HADDOCK3 will use those default values unless those are specified and changed by the user in the configuration file.
To obtain the list of all parameters for each module, you can use the
haddock-cfg
command-line. For example, to list all parameters from the
All-atom topology module (topoaa
):
haddock-cfg -m topoaa
# or to write the output to a file
haddock-cfg -m topoaa > topoaa_defaults.cfg
# obtain help on `haddoc-cfg` CLI
haddock-cfg -h
The HADDOCK3 workflow will follow the order of the steps defined in the
configuration file, reading from top to bottom. For the example above, that
would be: topoaa
, rigidbody
, caprieval
. Therefore, to edit/add/remove
steps in a HADDOCK3 workflow, you simply need to add/remove/edit the text blocks
referring to each module.
Moreover, you can define the general optional parameters in the global scope of the workflow or specifically for each module. Optional parameters defined in the general scope of the configuration files affect all modules. While those described inside a step will affect only that step. For example:
run_dir = "run1-test"
molecules = [
"data/mol1.pdb",
"data/mol2.pdb"
]
# each .job will produce 5 (or less) models
mode = "batch"
concat = 5
[topoaa]
autohis = false
[rigidbody]
ambig_fname = "data/mol1.tbl"
sampling = 20
[caprieval]
reference_fname = "data/mol1-mol2.pdb"
[flexref]
# flexref jobs are bound to generate one model per job
# therefore, we can specify the 'concat' parameter specifically for flexref
concat = 1
ambig_fname = "data/mol1.tbl"
[caprieval]
reference_fname = "data/mol1-mol2.pdb"
Inside the examples subfolders you will
a panoply of examples of workflow configuration files (.cfg
).
Here is a list of all available Modules.
Finally, if you are a developer and wish to use HADDOCK3 as a library to read and write configuration files please see the related Python modules:
For example, to read a workflow configuration file:
from pathlib import Path
from haddock.gear.config import load
config_path = Path("path", "to", "config.cfg")
config_dict = load(config_path)
Compatibility with TOML
HADDOCK3 actually uses TOML to read the configuration files. However, some additional features are introduced to enhance user experience. For example, the capability to repeat header names. Hence, HADDOCK3 can also read pure TOML files as workflow configuration files. For those cases, repeated modules should have a trailing integer in their definition:
[topoaa]
# parameters here...
[rigidbody]
# parameters here...
[caprieval]
# parameters here...
[flexref]
# parameters here...
['caprieval.2']
# parameters here...
The exact trailing integer is irrelevant as long as headers are not repeated. HADDOCK3 will normalize the integers when reading the config file. For example, the example below is the same as the above example. What matters is the order in which the steps are presented in the configuration file.
[topoaa]
# parameters here...
[rigidbody]
# parameters here...
['caprieval.10'] # <- mind the 10 here
# parameters here...
[flexref]
# parameters here...
['caprieval.2']
# parameters here...