Configuration

General configuration

The majority of the work in setting up a new project is in the configuration – which samples to run, where the data files are located, which references are needed, etc.

The entry point for configuration is in the config/config.yaml file found in each workflow directory. See Config YAML for more.

The references section of the config file configures the genomes, transcriptomes, and annotations to be used. See References config for more.

The sample table, lists sample IDs, filenames, and other metadata. Its path is specified in the config file. See Sample tables for more.

A patterns file only needs to be edited if you’re doing custom work. It determines the patterns of files that will be created by the workflow. See Patterns and targets for more.

Running on a cluster

The example commands in Getting started describe running Snakemake locally. For larger data sets, you’ll want to run them on an HPC cluster. Snakemake supports arbitrary cluster commands, making it easy to run these workflows on many different cluster environments.

Snakemake and these workflows are designed to decouple the code from the configuration. Each rule has resources specified. When running with a cluster-specific Snakemake profile, these resources are translated into cluster-specific commands.

Setting up a cluster profile

To run on a cluster, you need a Snakemake profile for your specific cluster environment.

Typically this is set up by the cluster admins, but you can find some existing profiles for common submission systems in the Snakemake-Profiles project.

The profile, in turn, may require additional snakemake plugins to be installed. These would need to go into the main environment; you can use the --additional-main argument for deploy.py if/when you know the package in advance. Otherwise, install the required plugin into the main environment.

Then set the LCDBWF_SNAKEMAKE_PROFILE and LCDBWF_SNAKEMAKE_PROFILE_V8 env vars to point to the <8 and >8 profiles respectively.

For NIH’s Biowulf cluster

On NIH’s Biowulf HPC cluster, use the Biowulf profile. For recent versions of lcdb-wf, you need the snakemake8 branch of the profile:

git clone https://github.com/NIH-HPC/snakemake_profile ~/snakemake_profile_v8
cd ~/snakemake_profile_v8
git checkout snakemake8

# Set the environment variable (add to your ~/.bashrc for persistence)
export LCDBWF_SNAKEMAKE_PROFILE_V8=~/snakemake_profile_v8

Running on a cluster

In general, we should avoid running long-running Snakemake workflows on the login node of a cluster. lcdb-wf comes with a wrapper script, include/WRAPPER_SLURM, that runs Snakemake as a batch job on Slurm.

To run a workflow on a Slurm cluster, from the workflow directory (e.g., workflows/rnaseq), and with the main environment activated, run:

sbatch ../../include/WRAPPER_SLURM

The environment is inherited, and the version of Snakemake is detected so that the appropriate profile can be used. Then Snakemake is run. Via the profile, the main Snakemake process started by the initial WRAPPER_SLURM batch job will automatically submit jobs to the cluster.

You can keep an eye on Snakefile.log to watch progress (e.g. tail -f Snakefile.log).

For other cluster environments, consult the Snakemake documentation on: - Cluster execution - Cloud execution