run_command()
run_command(name, run, parallelizable=False, args=[], options={}, deps=[])
A run_command() task runs the command specified in the run argument. The
difference between this task type and
run_experiment() is that the outputs from this
task are not versioned (nor are they archivable). A run_command() task is
usually well-suited for orchestrating the environment setup and data
transformation steps of your research computing pipeline (e.g., compiling
executables or generating figures from benchmark results).
All files that this task produces should be written to the path given in the
COND_OUT environment variable. This ensures that other tasks that depend on
this task can find this task's produced files.
Arguments
name
Type: String (required)
The task's name. This name must be unique within the task's COND file. A task
name can only contain letters, numbers, hyphens (-), and underscores (_).
run
Type: String (required)
The command to execute when running this task. This command will be executed
using bash, with the location of the task's COND file as the shell's working
directory. In other words, any relative paths in the command will be interpreted
as relative to the directory containing the task's COND file.
Conductor uses the exit code of the command to determine whether it succeeded or
failed. If the command succeeds, it should exit with an exit code of 0.
Conductor interprets any non-zero exit code as a failure. If a task fails, it
prevents any other tasks that depend on it from executing (see the reference for
cond run).
parallelizable
Type: Boolean (default: False)
If set to True, Conductor may launch this task while other parallelizable
tasks are running. You should set this argument to True if it is okay for this
task to execute while other tasks are also running.
By default, tasks are not parallelizable, and so Conductor will not launch a
new task until the previously launched task has completed (or failed).
args
Type: List of primitive types (default: [])
A list of ordered arguments that should be passed to the command string
specified in run. The arguments will be passed to the command in the order
they are listed in args. The primitive types supported in args are strings,
Booleans, integers, and floating point numbers.
Example
run_command(
name="example",
run="./run.sh",
args=["arg1", "arg2", 123, True, 0.3],
)
Conductor will execute the task shown above by running ./run.sh arg1 arg2 123 true 0.3 in bash.
options
Type: Dictionary mapping string keys to primitive values (default: {})
A map of string keys to primitive values that should be passed to the command
string specified in run. Conductor treats these options as command line
"flags" and will pass them to the run command using --key=value syntax. Like
args, the primitive types supported in options are strings, Booleans,
integers, and floating point numbers. When args and options are both
non-empty, args are always passed first before options.
Example
run_command(
name="example",
run="./run.sh",
args=["arg1"],
options={
"foo": 3,
"bar": True,
},
)
Conductor will execute the task shown above by running ./run.sh arg1 --foo=3 --bar=true in bash.
deps
Type: List of task identifiers (default: [])
A list of task identifiers that this task should depend on. Conductor will ensure that all dependencies execute successfully before launching this task.
When depending on tasks defined in the same COND file, you can just specify
the task's name prefixed by a colon (e.g., :compile would refer to a task
named compile defined in the same file). If you need to depend on a task
defined in a different COND file, you must specify the fully qualified task
identifier (e.g., //experiments:benchmark would refer to a task named
benchmark defined in the COND file in the experiments directory).
Usage Example
run_command(
name="figures",
run="python make_figures.py",
parallelizable=True,
deps=[
":benchmark",
],
)