From 669f7e18328c12117d877f31e014e9d0b6562b36 Mon Sep 17 00:00:00 2001 From: zxBIB Schcolnicov Date: Fri, 6 Sep 2024 16:32:19 +0200 Subject: [PATCH] Added nftest --- ...e_nextflex.config => test_nextflex.config} | 8 +- nextflow.config | 2 +- tests/test_nextflex.nf.test | 122 +++++++++++++++++ tests/test_nextflex.nf.test.snap | 129 ++++++++++++++++++ 4 files changed, 257 insertions(+), 4 deletions(-) rename conf/{test_no_genome_nextflex.config => test_nextflex.config} (84%) create mode 100644 tests/test_nextflex.nf.test create mode 100644 tests/test_nextflex.nf.test.snap diff --git a/conf/test_no_genome_nextflex.config b/conf/test_nextflex.config similarity index 84% rename from conf/test_no_genome_nextflex.config rename to conf/test_nextflex.config index 83318d1b..6967c933 100644 --- a/conf/test_no_genome_nextflex.config +++ b/conf/test_nextflex.config @@ -5,13 +5,14 @@ Defines input files and everything required to run a fast and simple pipeline test. Use as follows: - nextflow run nf-core/smrnaseq -profile test, + nextflow run nf-core/smrnaseq -profile test_nextflex, ---------------------------------------------------------------------------------------- */ +// This test profile tests nextflex without genome params { - config_profile_name = 'Test profile' + config_profile_name = 'Nextflex Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' // Limit resources so that this can run on GitHub Actions @@ -25,7 +26,8 @@ params { hairpin = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hairpin.fa' mirna_gtf = 'https://github.com/nf-core/test-datasets/raw/smrnaseq/reference/hsa.gff3' mirtrace_species = 'hsa' - genome = 'GRCh37' + + skip_mirdeep = true } diff --git a/nextflow.config b/nextflow.config index 1f10681b..bcdaa324 100644 --- a/nextflow.config +++ b/nextflow.config @@ -248,7 +248,7 @@ profiles { test_contamination { includeConfig 'conf/test_contamination.config' } test_contamination_tech_reps { includeConfig 'conf/test_contamination_tech_reps.config' } test_skipfastp { includeConfig 'conf/test_skipfastp.config' } - test_no_genome_nextflex { includeConfig 'conf/test_no_genome_nextflex.config' } + test_nextflex { includeConfig 'conf/test_nextflex.config' } //Protocol specific profiles diff --git a/tests/test_nextflex.nf.test b/tests/test_nextflex.nf.test new file mode 100644 index 00000000..c9f0c5e9 --- /dev/null +++ b/tests/test_nextflex.nf.test @@ -0,0 +1,122 @@ + +nextflow_pipeline { + + name "Test Workflow main.nf - test_nextflex" + script "main.nf" + profile "test_nextflex" + tag "test_nextflex" + tag "pipeline" + + test("test_nextflex") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, + { assert workflow.trace.succeeded().size() == 63 }, + + { assert snapshot( + path("$outputDir/mirna_quant/bam/mature/sample2_mature.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/mature/sample1_mature.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/mature/sample2_mature.sorted.stats"), + path("$outputDir/mirna_quant/bam/mature/sample3_mature.sorted.stats"), + path("$outputDir/mirna_quant/bam/mature/sample3_mature.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/mature/sample3_mature.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/mature/sample1_mature.sorted.stats"), + path("$outputDir/mirna_quant/bam/mature/sample2_mature.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/mature/sample1_mature.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/hairpin/sample3_mature_hairpin.sorted.stats"), + path("$outputDir/mirna_quant/bam/hairpin/sample2_mature_hairpin.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/hairpin/sample1_mature_hairpin.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/hairpin/sample1_mature_hairpin.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/hairpin/sample3_mature_hairpin.sorted.flagstat"), + path("$outputDir/mirna_quant/bam/hairpin/sample2_mature_hairpin.sorted.stats"), + path("$outputDir/mirna_quant/bam/hairpin/sample1_mature_hairpin.sorted.stats"), + path("$outputDir/mirna_quant/bam/hairpin/sample3_mature_hairpin.sorted.idxstats"), + path("$outputDir/mirna_quant/bam/hairpin/sample2_mature_hairpin.sorted.idxstats") + ).match("mirna_quant_bam") }, + + { assert snapshot( + path("$outputDir/mirna_quant/edger_qc/hairpin_counts.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_edgeR_MDS_plot_coordinates.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_edgeR_MDS_distance_matrix.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_log2CPM_sample_distances.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_logtpm.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_logtpm.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_normalized_CPM.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_edgeR_MDS_plot_coordinates.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_edgeR_MDS_distance_matrix.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_counts.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_log2CPM_sample_distances.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/hairpin_unmapped_read_counts.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_normalized_CPM.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_logtpm.csv").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_logtpm.txt").exists(), + path("$outputDir/mirna_quant/edger_qc/mature_unmapped_read_counts.txt").exists() + ).match("mirna_quant_edger_qc") }, + + { assert snapshot( + path("$outputDir/mirtrace/mirtrace-report.html").exists(), + path("$outputDir/mirtrace/mirtrace-stats-contamination_basic.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-mirna-complexity.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-phred.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-length.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-contamination_detailed.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-qcstatus.tsv"), + path("$outputDir/mirtrace/mirtrace-stats-rnatype.tsv") + ).match("mirtrace") }, + + { assert snapshot( + path("$outputDir/multiqc/multiqc_data/fastqc-status-check-heatmap.txt"), + path("$outputDir/multiqc/multiqc_data/fastp_filtered_reads_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_overrepresented_sequences_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table-1.txt").exists(), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_counts_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_complexity_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot-1_Percentages.txt"), + path("$outputDir/multiqc/multiqc_data/multiqc_citations.txt"), + path("$outputDir/multiqc/multiqc_data/samtools-stats-dp.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_length_distribution_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/multiqc_general_stats.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_n_content_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_qc_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_length_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt").exists(), + path("$outputDir/multiqc/multiqc_data/fastqc-status-check-heatmap-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_counts_plot.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_rna_categories_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/samtools_alignment_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/mirtrace_contamination_check_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_adapter_content_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot-1_Counts.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_adapter_content_plot-1.txt"), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt"), + path("$outputDir/multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt"), + path("$outputDir/multiqc/multiqc_data/multiqc_sources.txt").exists(), + path("$outputDir/multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt") + ).match("multiqc_multiqc_data") }, + + ) + } + + } + +} diff --git a/tests/test_nextflex.nf.test.snap b/tests/test_nextflex.nf.test.snap new file mode 100644 index 00000000..d5f7b8b4 --- /dev/null +++ b/tests/test_nextflex.nf.test.snap @@ -0,0 +1,129 @@ +{ + "mirtrace": { + "content": [ + true, + "mirtrace-stats-contamination_basic.tsv:md5,2cb713dcb906c5a44ab0587cef5848b5", + "mirtrace-stats-mirna-complexity.tsv:md5,50d36857f67ab0fb72e6717ffb3a7f5a", + "mirtrace-stats-phred.tsv:md5,eeacb4b6341174e87a527138936f60c5", + "mirtrace-stats-length.tsv:md5,7c5caaf25a8e7ce4d322985f3225e0cf", + "mirtrace-stats-contamination_detailed.tsv:md5,90bc8fc20fdb9e6360c347d3a741733a", + "mirtrace-stats-qcstatus.tsv:md5,c41d52e9f464f364297390267a4df426", + "mirtrace-stats-rnatype.tsv:md5,469de7788e4e95e6f89fb1ad9b7b1795" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.587317829" + }, + "software_versions": { + "content": [ + "{BOWTIE_MAP_HAIRPIN={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_MATURE={bowtie=1.3.1, samtools=1.14}, BOWTIE_MAP_SEQCLUSTER={bowtie=1.3.1, samtools=1.14}, FASTP={fastp=0.23.4}, FASTQC_RAW={fastqc=0.12.1}, FASTQC_TRIM={fastqc=0.12.1}, FORMAT_HAIRPIN={fastx_toolkit=0.0.14}, FORMAT_MATURE={fastx_toolkit=0.0.14}, INDEX_HAIRPIN={bowtie=1.3.1}, INDEX_MATURE={bowtie=1.3.1}, MIRTRACE_RUN={mirtrace=1.0.1}, PARSE_HAIRPIN={seqkit=2.6.1}, PARSE_MATURE={seqkit=2.6.1}, SAMTOOLS_FLAGSTAT={samtools=1.2}, SAMTOOLS_IDXSTATS={samtools=1.2}, SAMTOOLS_INDEX={samtools=1.2}, SAMTOOLS_SORT={samtools=1.2}, SAMTOOLS_STATS={samtools=1.2}, SEQCLUSTER_SEQUENCES={seqcluster=1.2.9}, Workflow={nf-core/smrnaseq=v2.3.2dev}}" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.441216239" + }, + "mirna_quant_bam": { + "content": [ + "sample2_mature.sorted.idxstats:md5,9688f02beeebf9a590dc81e49415ede9", + "sample1_mature.sorted.flagstat:md5,7d61ae305e545c7a66ef8d23a0c8be25", + "sample2_mature.sorted.stats:md5,897f3efa4ecf2757ecc489cd3860cb39", + "sample3_mature.sorted.stats:md5,f35902ad2475738e48bc7b472477ec64", + "sample3_mature.sorted.flagstat:md5,1aae00444143bce06cb0f8cf31deb8e4", + "sample3_mature.sorted.idxstats:md5,9688f02beeebf9a590dc81e49415ede9", + "sample1_mature.sorted.stats:md5,743586b54608b68ada3235f6473bc357", + "sample2_mature.sorted.flagstat:md5,1aae00444143bce06cb0f8cf31deb8e4", + "sample1_mature.sorted.idxstats:md5,6db0cfab41307285fe5c89dfe95b5d46", + "sample3_mature_hairpin.sorted.stats:md5,06eeda9757f859140ed63d94a074b376", + "sample2_mature_hairpin.sorted.flagstat:md5,4e201dd868164d0c53142888dd6ca238", + "sample1_mature_hairpin.sorted.flagstat:md5,7ed3ab444077ddf6c334845e9c4ce75e", + "sample1_mature_hairpin.sorted.idxstats:md5,7b7d142caee6cccbb6d83c8e6568a951", + "sample3_mature_hairpin.sorted.flagstat:md5,4e201dd868164d0c53142888dd6ca238", + "sample2_mature_hairpin.sorted.stats:md5,ecd5b0dc54a14dca7dcc66abfc6d3845", + "sample1_mature_hairpin.sorted.stats:md5,b5e867c324113e8ab805c27a5d4ef89a", + "sample3_mature_hairpin.sorted.idxstats:md5,8927231d0ea3100fb75a96b4e5317321", + "sample2_mature_hairpin.sorted.idxstats:md5,8927231d0ea3100fb75a96b4e5317321" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.460795492" + }, + "mirna_quant_edger_qc": { + "content": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.55181047" + }, + "multiqc_multiqc_data": { + "content": [ + "fastqc-status-check-heatmap.txt:md5,949e6825a7ecc751aa9ba515de7dbd02", + "fastp_filtered_reads_plot.txt:md5,7d99da33e244ce77191b8bfeaec8180c", + "fastqc_overrepresented_sequences_plot.txt:md5,11b85c61ea97ca62a9e7c34fae9e575c", + true, + "fastqc_sequence_counts_plot-1.txt:md5,926304f6c18b8151a56692bb69db97e7", + "mirtrace_complexity_plot.txt:md5,b88b1ec0d2d0ee2f443b968c107dc45a", + "fastqc_per_sequence_gc_content_plot-1_Percentages.txt:md5,3f7fd27d4553da6a88f4f15dd4b6413b", + "multiqc_citations.txt:md5,c2900ba941a5e78a3f42ef6a1033ace7", + "samtools-stats-dp.txt:md5,1fa31e11ef6c82185d5c9dc2f40d61b2", + "fastqc_sequence_length_distribution_plot.txt:md5,130a5569ba830f7e7abb971d1c8da537", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,bd72bc8bfc907c6aab72f315917ab280", + "fastqc_sequence_duplication_levels_plot-1.txt:md5,a53f959bf59ad69d3bcbc53e8fe609b3", + "fastqc_per_base_sequence_quality_plot-1.txt:md5,2f85a658bcb8261328449f1642688086", + "multiqc_general_stats.txt:md5,3733aa0acfe0151765da7e3c7834c7a8", + "fastqc_per_base_n_content_plot-1.txt:md5,e3b4bb3ed98e87f2d8acb0c009485ecd", + "fastqc_per_base_n_content_plot.txt:md5,48710007bb055bae6f35f2fa8ea8f42b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,2956382a3f2e855a4dce8e8246a57add", + "fastqc_per_sequence_quality_scores_plot.txt:md5,d2339b94d6c56616b6975086bf1e23c8", + "mirtrace_qc_plot.txt:md5,4f3f1e0a2b6e5dd5f9e0a7a7aea0e529", + "fastqc_per_sequence_quality_scores_plot-1.txt:md5,28ed13d328e755aa06a0f13f87c336eb", + "mirtrace_length_plot.txt:md5,f915d98a47a66ea9602ff0758a5e462f", + true, + "fastqc-status-check-heatmap-1.txt:md5,66af5433ebb61bc68905f8219d7419ab", + "fastqc_sequence_counts_plot.txt:md5,3bfb0974e5395d2d0044586c3e4547d1", + "mirtrace_rna_categories_plot.txt:md5,e39093f9a152845b6f4f44a239d9652d", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,e5ea2bfd87e957a18fae5239137d6499", + "samtools_alignment_plot.txt:md5,73b963380d0fc2ae145c3cd39e26824a", + "fastqc_per_base_sequence_quality_plot.txt:md5,1208509fcaff06edcddc377c907dfdaf", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,dd53a16aebc689109fc8065d08d8a6c7", + "mirtrace_contamination_check_plot.txt:md5,88cfa15add5e8a561761ee70d8a0da12", + "fastqc_adapter_content_plot.txt:md5,8aa2cbcf256bbb89c4a1d1fd18019c9b", + "fastqc_sequence_duplication_levels_plot.txt:md5,97a930f423f2cd365c2262b0a185f68a", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,5857a8a1980816cf70b34b7b318e1482", + "fastqc_per_sequence_gc_content_plot-1_Counts.txt:md5,d3ecffd88ebbdac463e297a2b98c8b3d", + "fastqc_adapter_content_plot-1.txt:md5,245d96a402988141cbe68b60a42db535", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,9033ad6887da19d96fb9e2504d8de0a5", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,fbe1f23a76ed70b2568d553fc42adef2", + true, + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,ed44d5035150f69bdeb7855c80271c21" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.0" + }, + "timestamp": "2024-09-06T16:26:35.632599778" + } +} \ No newline at end of file