Skip to content


The basic idea behind taco is to pass it a verb, and modify the interpretation of the verb using command line flags.

The user will defines their Snakemake workflows in a way that keeps them general and utilizes user-provided parameters. taco then reads these workflows, determines what rules exist and what rules were specified by the user, and runs the workflows using the user-provided parameters.

Remember, you can always get help by running:

$ taco --help


Run the taco command line tool like this:

$ ./taco <verb> [--FLAGS]

taco has two main actions:

  • taco ls [<worfklow>] - lists the available workflows, or the available rules in a given workflow

  • taco <worfklow> - runs the specified workflow

Each workflow must specify a set of workflow configuration variables (names of files or Snakemake rules to run) and workflow parameters (parameters used by the workflows themselves). These control the details of the workflow.


The principal way to modify taco workflows is to use external YAML or JSON files.

To specify the configuration file, which tells taco which files to create or which rules to run, use:

  • (--config-json | --config-yaml) - flags specifying the path to the JSON or YAML file to use for the workflow configuration.

To specify the parameters file, which controls the settings and details of each workflow step, use:

  • (--params-json | --params-yaml) - flags specifying the path to the JSON or YAML file to use for the workflow parameters.


By default, taco will create a working directory called data/ in your current working directory, and it will put all generated files in that directory.

You can change this location using the --prefix command line option. For example, to make a big mess in the current directory, you could leave prefix empty and run taco like this:

taco --prefix= <rest of args>

You can specify relative paths:

taco --prefix=scratch/ <rest of args>

or absolute paths:

taco --prefix=/tmp <rest of args>