LazypipeX is available to users with a CSC account as a preinstalled dataset module on
For questions related to LazypipeX and LazypipeX Roihu module please contact our research group:
For questions related to Roihu projects, disk quotas and other technical matter please contact the CSC service desk:
On this page:
To analyse more than a handful of samples, continue to
The dataset directory is not on the module search path by default, so two commands are needed — module load lazypipe alone will report that the module does not exist:
module use /dataset/project_2020379/modulefiles
module load lazypipe/3.1
Do not load other modules on top of lazypipe. The modulefile already loads every tool the pipeline needs, at the versions the reference databases were built against. A separately loaded diamond or blast module will shadow the shipped build and can produce results that do not match the installed databases.
The dataset project supplies files only: it has no compute allocation and no writable space. Run jobs from your own CSC project, bill them to that project, and write the output there. The examples use the placeholders $project_id and $project_name; replace them with a real CSC project id (of the form project_1234567) and a working directory name that means something to you.
PROJDIR=/scratch/$project_id/$project_name
mkdir -p $PROJDIR && cd $PROJDIR
lazypipe.pl -p main --hostgen Homo_sapiens --anns vi.chain3.env -1 reads_R1.fastq.gz -s mysample -r $PROJDIR/results -v
Do not run this on a login node: even a small library will exceed the login-node limits. Use srun on the interactive partition for a test, and sbatch for real work (
While a sample is being analysed the pipeline writes a large amount of intermediate data: filtered reads, the assembly and its indices, alignments, and raw annotation output. These working files go to fast disk on the compute node itself ($TMPDIR) and are deleted automatically when the job ends. Allow roughly ten times the size of your compressed FASTQ input — a 4 GB pair of fastq.gz files needs some 40 GB of working space.
How much of that space you get is decided by the partition you submit to, not by the pipeline:
A run that exhausts its working space stops part-way with no space left on device.
| small | medium / large | |
|---|---|---|
| Allocation | shares a node | whole node |
| $TMPDIR | 20 GiB, shared | 600 GiB, node-local |
| Billing | per core-hour requested | the whole node either way |
| Use for | test runs, libraries below ~2 GB gz | routine production runs, .env strategies, libraries above ~2 GB gz |
Because medium and large allocate and bill a whole node regardless of what you ask for, request the whole node: a run at 24 cores on medium costs the same as a run at 64 cores and leaves 40 cores idle.
Suggested starting point for a paired-end Illumina library of 2–8 GB gzipped reads with an .env strategy:
#SBATCH --partition=medium
#SBATCH --cpus-per-task=64
#SBATCH --mem=240G
#SBATCH --time=12:00:00
Memory is the value to watch: the measured runs below peaked at 53–73 GB of resident memory, so 240 GB on a whole node is ample, while 80 GB is about the practical floor. Reserve at least 4 GB of RAM per core.
The figures below come from the first large production run of the Roihu dataset module (August 2026): paired-end Illumina libraries screened for viruses with --anns vi.chain3.env, with background filtered against the host genome and human.
| Run | Samples | Reads per sample (gz) | Partition | Cores | Elapsed per sample | MaxRSS |
|---|---|---|---|---|---|---|
| Pilot, Aug 2026 | 8 | 2.1–3.0 GB | small | 24 | 5–6.5 h | ≤ 65 GB |
| Main, Aug 2026 | 47 | 4–8 GB | medium | 64 | 4 h 34 m – 6 h 34 m (mean 5 h 20 m) | 53–73 GB (mean 59 GB) |
If you run many samples as an array job, limit how many of them run at the same time. Each running sample holds roughly 20 GB of working files until its clean step, so 47 samples starting at once would need close to 1 TB of scratch space between them.
The limit is the number after the % sign in the array range:
#SBATCH --array=1-47%25 # 47 samples in total, at most 25 running at any moment
#!/bin/bash -l
#SBATCH --job-name=lazypipe
#SBATCH --account=$project_id
#SBATCH --partition=medium
#SBATCH --time=12:00:00
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=64
#SBATCH --mem=240G
#SBATCH --output=logs/%x.%j.log
#SBATCH --error=logs/%x.%j.log
module use /dataset/project_2020379/modulefiles
module load lazypipe/3.1
PROJDIR=/scratch/$project_id/$project_name
cd $PROJDIR
mkdir -p logs results
lazypipe.pl -p main --hostgen Homo_sapiens --anns vi.chain3.env -1 reads_R1.fastq.gz -s mysample -t $SLURM_CPUS_PER_TASK -r $PROJDIR/results --logs $PROJDIR/logs -v
Bill the job to your own project. A dataset project has no compute allocation and cannot be billed.
Useful Slurm commands:
| Command | What it tells you |
|---|---|
| squeue --me | what is queuing or running |
| sacct -j <jobid> | status of each task |
| seff <jobid> | time and memory a finished job actually used |
| scancel <jobid> | cancel the job |
lazypipe.pl --databases # installed reference databases, with versions
lazypipe.pl --filters # host and background genomes available to --hostgen
lazypipe.pl -h # all command-line options
module help lazypipe # a condensed version of this page
The dataset currently ships core_nt (the NT replacement), RefSeq 236, UniRef100 with both BLAST and DIAMOND indices, Pfam and NeoRdRp viral HMM profiles, NCBI and ICTV VMR taxonomies, and background genomes for more than twenty host species. Every result directory records the database versions used, so a run can be reproduced later.
Databases are pre-installed and read-only. Do not run install_db.pl — it has nothing to do here and cannot write to the dataset.
lazypipe.pl looks for ./config.yaml in the current directory and falls back to the shipped $LAZYPIPE_INSTALL_DIR/config.yaml; --config <file> overrides both. The shipped configuration already points at the databases in the dataset project, so copy it locally only when you need to change parameters:
cp /dataset/project_2020379/LazypipeX/config.yaml .
| Symptom | Cause |
|---|---|
| module load lazypipe reports that the module does not exist | the module use line was not run |
| DIAMOND or BLAST misbehaves, or reports an unexpected version | another tool module is loaded and shadows the shipped build |
| results appear in an unexpected directory | -r was omitted while $data is unset |
| a run fails part-way with no space left on device | $TMPDIR exhausted on a shared partition |
| a strategy key is rejected | that strategy is not in the deployment config; check lazypipe.pl --databases |
| install_db.pl cannot write | expected — the dataset is read-only |
| the job is rejected for lack of a billing project | --account still names the dataset project |
For anything else, including questions about interpreting results, write to