Skip to content

Commit

Permalink
Merge pull request #1467 from nf-core/test_umi
Browse files Browse the repository at this point in the history
Add test suite for UMI handling functionality
  • Loading branch information
pinin4fjords authored Dec 11, 2024
2 parents 674645e + 52ba2d4 commit 631f0e3
Show file tree
Hide file tree
Showing 5 changed files with 2,942 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Special thanks to the following for their contributions to the release:
- [PR #1369](https://github.com/nf-core/rnaseq/pull/1369) - Add umicollapse as an alternative to umi-tools
- [PR #1461](https://github.com/nf-core/rnaseq/pull/1461) - Add FASTQ linting during preprocessing
- [PR #1463](https://github.com/nf-core/rnaseq/pull/1463) - Move channel operations outside of the onComplete() block
- [PR #1467](https://github.com/nf-core/rnaseq/pull/1467) - Add test suite for UMI handling functionality

### Software dependencies

Expand Down
4 changes: 4 additions & 0 deletions tests/.nftignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ star_rsem/*.{genes,isoforms}.results
star_rsem/log/*.log
star_salmon/log/*.Log.{final.out,out,progress.out}
trimgalore/*fastq.gz_trimming_report.txt
umitools/*.umi_extract.log
{hisat2,star_rsem,star_salmon}/*.{bam,bam.bai}
{hisat2,star_rsem,star_salmon}/bigwig/*.{forward,reverse}.bigWig
{hisat2,star_rsem,star_salmon}/dupradar/box_plot/*_duprateExpBoxplot.pdf
Expand All @@ -31,6 +32,7 @@ trimgalore/*fastq.gz_trimming_report.txt
{hisat2,star_rsem,star_salmon}/stringtie/*.ballgown/t_data.ctab
{hisat2,star_rsem,star_salmon}/stringtie/*.gene.abundance.txt
{hisat2,star_rsem,star_salmon}/stringtie/*.{coverage,transcripts}.gtf
{hisat2,star_rsem,star_salmon}/umitools/genomic_dedup_log/*_UMICollapse.log
{multiqc,multiqc/**}/multiqc_report.html
{multiqc,multiqc/**}/multiqc_report_data/fastqc_{raw,trimmed}_top_overrepresented_sequences_table.txt
{multiqc,multiqc/**}/multiqc_report_data/hisat2_pe_plot.txt
Expand Down Expand Up @@ -81,6 +83,8 @@ trimgalore/*fastq.gz_trimming_report.txt
{salmon,star_rsem,star_salmon}/deseq2_qc/deseq2.sample.dists.txt
{salmon,star_rsem,star_salmon}/deseq2_qc/size_factors/*.txt
{salmon,star_rsem,star_salmon}/deseq2_qc/size_factors/deseq2.size_factors.RData
{salmon,star_rsem,star_salmon}/umitools/{genomic,transcriptomic}_dedup_log/*
{salmon,star_rsem,star_salmon}/umitools/prepare_for_salmon_log/*
{salmon,star_salmon}/*/aux_info/fld.gz
{salmon,star_salmon}/*/aux_info/meta_info.json
{salmon,star_salmon}/*/libParams/flenDist.txt
Expand Down
110 changes: 110 additions & 0 deletions tests/umi.nf.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
nextflow_pipeline {

name "Test pipeline with dummy UMI settings"
script "../main.nf"

test("Params: --aligner hisat2 --umi_dedup_tool 'umicollapse'") {

when {
params {
with_umi = true
umitools_extract_method = "regex"
umitools_bc_pattern = "^(?P<umi_1>CGA.{8}){s<=2}.*"
umitools_dedup_stats = true
skip_bbsplit = true
umi_dedup_tool = 'umicollapse'
aligner = 'hisat2'
outdir = "$outputDir"
}
}

then {
// stable_name: All files + folders in ${params.outdir}/ with a stable name
def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}'])
// stable_path: All files in ${params.outdir}/ with stable content
def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore')
assertAll(
{ assert workflow.success},
{ assert snapshot(
// Number of successful tasks
workflow.trace.succeeded().size(),
// pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions
removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"),
// All stable path name, with a relative path
stable_name,
// All files with stable contents
stable_path
).match() }
)
}
}

test("--umi_dedup_tool 'umitools'") {

when {
params {
with_umi = true
umitools_extract_method = "regex"
umitools_bc_pattern = "^(?P<umi_1>CGA.{8}){s<=2}.*"
umitools_dedup_stats = true
skip_bbsplit = true
outdir = "$outputDir"
}
}

then {
// stable_name: All files + folders in ${params.outdir}/ with a stable name
def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}'])
// stable_path: All files in ${params.outdir}/ with stable content
def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore')
assertAll(
{ assert workflow.success},
{ assert snapshot(
// Number of successful tasks
workflow.trace.succeeded().size(),
// pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions
removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"),
// All stable path name, with a relative path
stable_name,
// All files with stable contents
stable_path
).match() }
)
}
}

test("--umi_dedup_tool 'umitools - stub") {

options "-stub"

when {
params {
with_umi = true
umitools_extract_method = "regex"
umitools_bc_pattern = "^(?P<umi_1>CGA.{8}){s<=2}.*"
umitools_dedup_stats = true
outdir = "$outputDir"
}
}

then {
// stable_name: All files + folders in ${params.outdir}/ with a stable name
def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}'])
// stable_path: All files in ${params.outdir}/ with stable content
def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore')
assertAll(
{ assert workflow.success},
{ assert snapshot(
// Number of successful tasks
workflow.trace.succeeded().size(),
// pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions
removeNextflowVersion("$outputDir/pipeline_info/nf_core_rnaseq_software_mqc_versions.yml"),
// All stable path name, with a relative path
stable_name,
// All files with stable contents
stable_path
).match() }
)
}
}
}
Loading

0 comments on commit 631f0e3

Please sign in to comment.