cleanyerreads
Tags: reads quality-control trimming filtering host-removal preprocessing named-workflow
Quality control and optional host read removal from raw sequencing reads.
This workflow performs comprehensive read quality control including trimming, adapter removal, quality filtering, and optionally removes host contamination using deacon, nohuman, or SRA Human Scrubber. It processes raw sequencing reads to produce high-quality clean reads ready for downstream analysis.
Usage
clean-yer-reads CLI:
clean-yer-reads \
--input samples.csv \
--outdir results/
Nextflow:
nextflow run bactopia/bactopia/workflows/cleanyerreads/main.nf \
--input samples.csv \
--outdir results/
Outputs
Expected Output Files
<BACTOPIA_DIR>
├── <SAMPLE_NAME>
│ ├── main
│ │ ├── gather
│ │ │ ├── <SAMPLE_NAME>-meta.tsv
│ │ │ └── logs
│ │ │ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ │ │ └── versions.yml
│ │ └── qc
│ │ ├── <SAMPLE_NAME>_SE.fastq.gz
│ │ ├── logs
│ │ │ ├── <SAMPLE_NAME>-fastp.log
│ │ │ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ │ │ └── versions.yml
│ │ └── supplemental
│ │ ├── <SAMPLE_NAME>.fastp.html
│ │ ├── <SAMPLE_NAME>.fastp.json
│ │ ├── <SAMPLE_NAME>_SE-final.json
│ │ ├── <SAMPLE_NAME>_SE-final_fastqc.html
│ │ ├── <SAMPLE_NAME>_SE-final_fastqc.zip
│ │ ├── <SAMPLE_NAME>_SE-original.json
│ │ ├── <SAMPLE_NAME>_SE-original_fastqc.html
│ │ └── <SAMPLE_NAME>_SE-original_fastqc.zip
│ └── tools
│ └── srahumanscrubber
│ ├── <SAMPLE_NAME>.scrub.report.tsv
│ ├── <SAMPLE_NAME>.scrubbed.fastq.gz
│ └── logs
│ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ └── versions.yml
└── bactopia-runs
└── cleanyerreads-<TIMESTAMP>
├── merged-results
│ ├── logs
│ │ ├── meta-concat
│ │ │ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ │ │ └── versions.yml
│ │ └── scrubber-concat
│ │ ├── nf.command.{begin,err,log,out,run,sh,trace}
│ │ └── versions.yml
│ ├── meta.tsv
│ └── scrubber.tsv
└── nf-reports
├── cleanyerreads-dag.dot
├── cleanyerreads-report.html
└── cleanyerreads-timeline.html
Quality Control Reports
| File | Description |
|---|---|
supplemental/*_fastqc.* | FastQC reports for raw and cleaned reads |
supplemental/*-NanoPlot.* | NanoPlot reports for Nanopore reads |
supplemental/*.fastp.* | Fastp quality reports (when applicable) |
supplemental/*_original.json | Quality metrics for original reads |
supplemental/*_final.json | Quality metrics for final reads |
Cleaned Reads
| File | Description |
|---|---|
*.fastq.gz | Quality controlled and trimmed reads |
*.unclassified.fastq.gz | Host-decontaminated reads (if scrubber enabled) |
Host Decontamination
Only created when host removal is enabled
| File | Description |
|---|---|
*.kraken2.report.txt | Kraken2 classification report |
*.scrub.report.tsv | Human contamination report |
Audit Trail
Below are files that can assist you in understanding which parameters and program versions were used.
Logs
Each process that is executed will have a folder named logs. In this folder are helpful
files for you to review if the need ever arises.
| Extension | Description |
|---|---|
| .begin | An empty file used to designate the process started |
| .err | Contains STDERR outputs from the process |
| .log | Contains both STDERR and STDOUT outputs from the process |
| .out | Contains STDOUT outputs from the process |
| .run | The script Nextflow uses to stage/unstage files and queue processes based on given profile |
| .sh | The script executed by bash for the process |
| .trace | The Nextflow trace report for the process |
| versions.yml | A YAML formatted file with program versions |
Nextflow Reports
These Nextflow reports provide great a great summary of your run. These can be used to optimize resource usage and estimate expected costs if using cloud platforms.
| Filename | Description |
|---|---|
| cleanyerreads-dag.dot | The Nextflow DAG visualization |
| cleanyerreads-report.html | The Nextflow Execution Report |
| cleanyerreads-timeline.html | The Nextflow Timeline Report |
| cleanyerreads-trace.txt | The Nextflow Trace report |
Parameters
Required Parameters
The following parameters are how you will provide either local or remote samples to be processed by Bactopia.
| Parameter | Type | Default | Description |
|---|---|---|---|
--samples | string | A FOFN (via bactopia prepare) with sample names and paths to FASTQ/FASTAs to process | |
--r1 | string | First set of compressed (gzip) Illumina paired-end FASTQ reads (requires --r2 and --sample) | |
--r2 | string | Second set of compressed (gzip) Illumina paired-end FASTQ reads (requires --r1 and --sample) | |
--se | string | Compressed (gzip) Illumina single-end FASTQ reads (requires --sample) | |
--ont | string | Compressed (gzip) Oxford Nanopore FASTQ reads (requires --sample) | |
--hybrid | boolean | false | Create hybrid assembly using Unicycler. (requires --r1, --r2, --ont and --sample) |
--short_polish | boolean | false | Create hybrid assembly from long-read assembly and short read polishing. (requires --r1, --r2, --ont and --sample) |
--sample | string | Sample name to use for the input sequences | |
--accessions | string | A file containing ENA/SRA Experiment accessions or NCBI Assembly accessions to processed | |
--accession | string | Sample name to use for the input sequences | |
--assembly | string | A assembled genome in compressed FASTA format. (requires --sample) | |
--check_samples | boolean | false | Validate the input FOFN provided by --samples |
Gather Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--skip_fastq_check | boolean | Skip minimum requirement checks for input FASTQs | |
--min_basepairs | integer | 2241820 | The minimum amount of basepairs required to continue downstream analyses. |
--min_reads | integer | 7472 | The minimum amount of reads required to continue downstream analyses. |
--min_coverage | integer | 10 | The minimum amount of coverage required to continue downstream analyses. |
--min_proportion | number | 0.5 | The minimum proportion of basepairs for paired-end reads to continue downstream analyses. |
--min_genome_size | integer | 100000 | The minimum estimated genome size allowed for the input sequence to continue downstream analyses. |
--max_genome_size | integer | 18040666 | The maximum estimated genome size allowed for the input sequence to continue downstream analyses. |
--attempts | integer | 3 | Maximum times to attempt downloads |
--use_ena | boolean | Download FASTQs from ENA | |
--no_cache | boolean | Skip caching the assembly summary file from ncbi-genome-download |
csvtk concat Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--csvtk_concat_opts | string | Extra csvtk concat options in quotes |
QC Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--use_bbmap | boolean | Illumina reads will be QC'd using BBMap | |
--use_porechop | boolean | false | Use Porechop to remove adapters from ONT reads |
--skip_qc | boolean | The QC step will be skipped and it will be assumed the inputs sequences have already been QCed. | |
--skip_qc_plots | boolean | QC Plot creation by FastQC or Nanoplot will be skipped | |
--skip_error_correction | boolean | FLASH error correction of reads will be skipped. | |
--adapters | string | A FASTA file containing adapters to remove | |
--adapter_k | integer | 23 | Kmer length used for finding adapters. |
--phix | string | phiX174 reference genome to remove | |
--phix_k | integer | 31 | Kmer length used for finding phiX174. |
--ktrim | string | r | Trim reads to remove bases matching reference kmers (choices: f, r, l) |
--mink | integer | 11 | Look for shorter kmers at read tips down to this length, when k-trimming or masking. |
--hdist | integer | 1 | Maximum Hamming distance for ref kmers (subs only) |
--tpe | string | t | When kmer right-trimming, trim both reads to the minimum length of either (choices: f, t) |
--tbo | string | t | Trim adapters based on where paired reads overlap (choices: f, t) |
--qtrim | string | rl | Trim read ends to remove bases with quality below trimq. (choices: rl, f, r, l, w) |
--trimq | integer | 6 | Regions with average quality BELOW this will be trimmed if qtrim is set to something other than f |
--maq | integer | 10 | Reads with average quality (after trimming) below this will be discarded |
--minlength | integer | 35 | Reads shorter than this after trimming will be discarded |
--ftm | integer | 5 | If positive, right-trim length to be equal to zero, modulo this number |
--tossjunk | string | t | Discard reads with invalid characters as bases (choices: f, t) |
--ain | string | f | When detecting pair names, allow identical names (choices: f, t) |
--qout | string | 33 | PHRED offset to use for output FASTQs (choices: 33, 64) |
--maxcor | integer | 1 | Max number of corrections within a 20bp window |
--sampleseed | integer | 42 | Set to a positive number to use as the random number generator seed for sampling |
--ont_minlength | integer | 1000 | ONT Reads shorter than this will be discarded |
--ont_minqual | integer | 0 | Minimum average read quality filter of ONT reads |
--porechop_opts | string | Extra Porechop options in quotes | |
--nanoplot_opts | string | Extra NanoPlot options in quotes | |
--bbduk_opts | string | Extra BBDuk options in quotes | |
--fastp_opts | string | Extra fastp options in quotes |
SRA Human Scrubber Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--use_srascrubber | boolean | false | Use SRAHumanScrubber for scrubbing human reads |
Nohuman Download Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--nohuman_db | string | Path to the nohuman database or directory to download it to | |
--nohuman_db_version | string | Database version to download (default: latest HPRC release) | |
--nohuman_save_as_tarball | boolean | false | Save the nohuman database as a tarball |
--download_nohuman | boolean | false | Download the nohuman database to the path given by --nohuman_db |
Nohuman Run Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--nohuman_db | string | Path to the nohuman database directory or tarball | |
--nohuman_confidence | number | 0.0 | Kraken2 minimum confidence score for classification (0.0-1.0) |
--nohuman_human | boolean | false | Invert output to keep only human reads instead of removing them |
--nohuman_save_report | boolean | false | Save the Kraken2 classification report |
Deacon Fetch Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--deacon_index_name | string | panhuman-1 | Name of the pre-built deacon index to fetch |
--download_deacon | boolean | false | Download the deacon index to the datasets cache |
--use_deacon | boolean | false | Use deacon for host read filtering |
Deacon Filter Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
--deacon_abs_threshold | integer | 2 | Minimum absolute number of minimizer hits for a match |
--deacon_db | string | Path to a pre-existing deacon index (.idx) for host read filtering | |
--deacon_deplete | boolean | true | Discard matching sequences instead of keeping them |
--deacon_opts | string | Additional deacon filter options not covered by other parameters | |
--deacon_prefix_length | integer | 0 | Search only the first N nucleotides per sequence (0 for all) |
--deacon_rel_threshold | number | 0.01 | Minimum relative proportion (0.0-1.0) of minimizer hits for a match |
Dataset Parameters
Define where the pipeline should find input data and save output data.
| Parameter | Type | Default | Description |
|---|---|---|---|
--species | string | Name of species for species-specific dataset to use | |
--ask_merlin | boolean | Ask Merlin to execute species specific Bactopia tools based on Mash distances | |
--coverage | integer | 100 | Reduce samples to a given coverage, requires a genome size |
--genome_size | integer | 0 | Expected genome size (bp) for all samples, required for read error correction and read subsampling |
--use_bakta | boolean | Use Bakta for annotation, instead of Prokka |
Optional Parameters
These optional parameters can be useful in certain settings.
| Parameter | Type | Default | Description |
|---|---|---|---|
--outdir | string | bactopia | Base directory to write results to |
--skip_compression | boolean | false | Output files will not be compressed |
--datasets | string | The path to cache datasets to | |
--keep_all_files | boolean | false | Keeps all analysis files created |
Max Job Request Parameters
Set the top limit for requested resources for any single job.
| Parameter | Type | Default | Description |
|---|---|---|---|
--max_retry | integer | 3 | Maximum times to retry a process before allowing it to fail. |
--max_cpus | integer | 4 | Maximum number of CPUs that can be requested for any single job. |
--max_memory | string | 128.GB | Maximum amount of memory that can be requested for any single job. |
--max_time | string | 240.h | Maximum amount of time that can be requested for any single job. |
--max_downloads | integer | 3 | Maximum number of samples to download at a time |
Nextflow Configuration Parameters
Parameters to fine-tune your Nextflow setup.
| Parameter | Type | Default | Description |
|---|---|---|---|
--nfconfig | string | A Nextflow compatible config file for custom profiles, loaded last and will overwrite existing variables if set. | |
--publish_dir_mode | string | copy | Method used to save pipeline results to output directory. (choices: symlink, rellink, link, copy, copyNoFollow, move) |
--infodir | string | ${params.outdir}/pipeline_info | Directory to keep pipeline Nextflow logs and reports. |
--force | boolean | false | Nextflow will overwrite existing output files. |
--cleanup_workdir | boolean | false | After Bactopia is successfully executed, the work directory will be deleted. |
Institutional config options
Parameters used to describe centralized config profiles. These should not be edited.
| Parameter | Type | Default | Description |
|---|---|---|---|
--custom_config_version | string | master | Git commit id for Institutional configs. |
--custom_config_base | string | https://raw.githubusercontent.com/nf-core/configs/master | Base directory for Institutional configs. |
--config_profile_name | string | Institutional config name. | |
--config_profile_description | string | Institutional config description. | |
--config_profile_contact | string | Institutional config contact information. | |
--config_profile_url | string | Institutional config URL link. |
Nextflow Profile Parameters
Parameters to fine-tune your Nextflow setup.
| Parameter | Type | Default | Description |
|---|---|---|---|
--condadir | string | Directory to Nextflow should use for Conda environments | |
--registry | string | quay.io | Registry to pull Docker containers from. |
--datasets_cache | string | <HOME>/.bactopia/datasets | Directory where downloaded datasets should be stored. |
--singularity_cache | string | Directory where remote Singularity images are stored. | |
--singularity_pull_docker_container | boolean | Instead of directly downloading Singularity images for use with Singularity, force the workflow to pull and convert Docker containers instead. | |
--force_rebuild | boolean | false | Force overwrite of existing pre-built environments. |
--queue | string | general,high-memory | Comma-separated name of the queue(s) to be used by a job scheduler (e.g. AWS Batch or SLURM) |
--cluster_opts | string | Additional options to pass to the executor. (e.g. SLURM: '--account=my_acct_name' | |
--container_opts | string | Additional options to pass to Apptainer, Docker, or Singularity. (e.g. Singularity: '-D pwd' | |
--disable_scratch | boolean | false | All intermediate files created on worker nodes of will be transferred to the head node. |
Helpful Parameters
Uncommonly used parameters that might be useful.
| Parameter | Type | Default | Description |
|---|---|---|---|
--monochrome_logs | boolean | Do not use coloured log outputs. | |
--nfdir | boolean | Print directory Nextflow has pulled Bactopia to | |
--sleep_time | integer | 5 | The amount of time (seconds) Nextflow will wait after setting up datasets before execution. |
--validate_params | boolean | true | Boolean whether to validate parameters against the schema at runtime |
--help | boolean | Display help text. | |
--wf | string | bactopia | Specify which workflow or Bactopia Tool to execute |
--list_wfs | boolean | List the available workflows and Bactopia Tools to use with '--wf' | |
--show_hidden_params | boolean | Show all params when using --help | |
--help_all | boolean | An alias for --help --show_hidden_params | |
--version | boolean | Display version text. |
Composition
This workflow uses the following subworkflows:
- bactopia_gather - Search, validate, gather, and standardize input samples.
- bactopia_qc - Perform comprehensive quality control on sequencing reads.
- scrubber - Remove contaminant sequences from metagenomic data.
Citations
If you use this in your analysis, please cite the following.
-
Bactopia
Petit III RA, Read TD Bactopia - a flexible pipeline for complete analysis of bacterial genomes. mSystems 5 (2020) -
BBTools
Bushnell B BBMap short read aligner, and other bioinformatic tools. (Link) -
deacon
Bede N. deacon: SIMD-accelerated filtering of DNA sequences using minimizer-based comparison. (GitHub) -
fastp
Chen S, Zhou Y, Chen Y, and Gu J fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics, 34(17), i884-i890. (2018) -
FastQC
Andrews S FastQC: a quality control tool for high throughput sequence data. (WebLink) -
fastq-scan
Petit III RA fastq-scan: generate summary statistics of input FASTQ sequences. (GitHub) -
Kraken2
Wood DE, Lu J, Langmead B Improved metagenomic analysis with Kraken 2. Genome Biology, 20(1), 257. (2019) -
Lighter
Song L, Florea L, Langmead B Lighter: Fast and Memory-efficient Sequencing Error Correction without Counting. Genome Biol. 15(11):509 (2014) -
NanoPlot
De Coster W, D'Hert S, Schultz DT, Cruts M, Van Broeckhoven C NanoPack: visualizing and processing long-read sequencing data Bioinformatics Volume 34, Issue 15 (2018) -
Nanoq
Steinig E Nanoq: Minimal but speedy quality control for nanopore reads in Rust (GitHub) -
Porechop
Wick RR, Judd LM, Gorrie CL, Holt KE. Completing bacterial genome assemblies with multiplex MinION sequencing. Microb Genom. 3(10):e000132 (2017) -
Rasusa
Hall MB Rasusa: Randomly subsample sequencing reads to a specified coverage. (2019). -
SRA Human Scrubber
Katz KS, Shutov O, Lapoint R, Kimelman M, Brister JR, and O'Sullivan C STAT: a fast, scalable, MinHash-based k-mer tool to assess Sequence Read Archive next-generation sequence submissions. Genome Biology, 22(1), 270 (2021)