diff --git a/.nf-core.yml b/.nf-core.yml index b62355dd..9ed7bfc3 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -46,5 +46,5 @@ template: - igenomes - multiqc - fastqc - version: 2.2.0dev + version: 2.2.1 update: null diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5def16..c9effe79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,25 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v2.2.1 - [11-Dec-2024] + +### `Added` + +1. Added notes on HTTP(s) server on the HiC page and on the need to move dynamically loaded content when moving the report's HTML file [#183](https://github.com/Plant-Food-Research-Open/assemblyqc/issues/183) + +### `Fixed` + +1. Fixed an issue where PLOTSR crashed due to a mismatch in the ordering of `syri.out` files when `synteny_plotsr_assembly_order` was not specified [#184](https://github.com/Plant-Food-Research-Open/assemblyqc/issues/184) +2. Fixed an issue where a path to HiC FastQ file pairs from the current directory were considered a SRR ID [#179](https://github.com/Plant-Food-Research-Open/assemblyqc/issues/179) +3. Fixed edges and input/output arrows in the flowchart [#178](https://github.com/Plant-Food-Research-Open/assemblyqc/issues/178) + +### `Dependencies` + +1. Nextflow!>=24.04.2 +2. nf-schema@2.1.1 + +### `Deprecated` + ## v2.2.0 - [05-Nov-2024] ### `Added` diff --git a/CITATION.cff b/CITATION.cff index 18bb4b7d..2908aa72 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -25,7 +25,7 @@ authors: - family-names: "Deng" given-names: "Cecilia" title: "AssemblyQC: A Nextflow pipeline for reproducible reporting of assembly quality" -version: 2.2.0 +version: 2.2.1 date-released: 2024-07-30 url: "https://github.com/Plant-Food-Research-Open/assemblyqc" doi: 10.1093/bioinformatics/btae477 diff --git a/bin/report_modules/parsers/synteny_parser.py b/bin/report_modules/parsers/synteny_parser.py index d25d82e9..0fa52e9a 100644 --- a/bin/report_modules/parsers/synteny_parser.py +++ b/bin/report_modules/parsers/synteny_parser.py @@ -147,9 +147,12 @@ def parse_synteny_plotsr(folder_name="synteny_outputs"): "error_message": ( None if error_comparisons == [] - else "Note: Syri failed to detect structural rearrangements for following comparisons: " + else 'Error: Syri failed to detect structural rearrangements for following comparisons: ' + ", ".join( - [f"{target} with reference to {ref}" for (target, ref) in error_comparisons] + [ + f"{target} with reference to {ref}" + for (target, ref) in error_comparisons + ] ) + '. This may be due to known Syri limitations. See: GitHub/Syri/Limitations' ), diff --git a/bin/report_modules/templates/header.html b/bin/report_modules/templates/header.html index 795ecd3d..26ce281c 100644 --- a/bin/report_modules/templates/header.html +++ b/bin/report_modules/templates/header.html @@ -136,6 +136,7 @@ width: 90%; min-width: 700px; margin: auto; + padding-bottom: 16px; } .dropdown select { diff --git a/bin/report_modules/templates/hic/hic.html b/bin/report_modules/templates/hic/hic.html index 2af561e7..d1d0bb09 100644 --- a/bin/report_modules/templates/hic/hic.html +++ b/bin/report_modules/templates/hic/hic.html @@ -8,24 +8,27 @@

References:

- fastp Chen, Yanqing Zhou, Yaru Chen, Jia Gu, fastp: an ultra-fast all-in-one FASTQ preprocessor, Bioinformatics, + fastp Chen, Yanqing Zhou, Yaru Chen, Jia Gu, fastp: an ultra-fast all-in-one FASTQ preprocessor, + Bioinformatics, Volume 34, Issue 17, September 2018, Pages i884–i890, 10.1093/bioinformatics/bty560

- BWA Li, H. (2013). Aligning sequence reads, clone sequences and assembly contigs with BWA-MEM. arXiv preprint arXiv: 1303.3997. + BWA Li, H. (2013). Aligning sequence reads, clone sequences and assembly contigs with BWA-MEM. arXiv + preprint arXiv: 1303.3997.

- SAMBLASTER Gregory G. Faust, Ira M. Hall, SAMBLASTER: fast duplicate marking and structural variant read extraction, + SAMBLASTER Gregory G. Faust, Ira M. Hall, SAMBLASTER: fast duplicate marking and structural variant read + extraction, Bioinformatics, Volume 30, Issue 17, September 2014, Pages 2503–2505, 10.1093/bioinformatics/btu314

- SAMtools Petr Danecek, James K Bonfield, Jennifer Liddle, John Marshall, Valeriu Ohan, Martin O Pollard, Andrew Whitwham, + SAMtools Petr Danecek, James K Bonfield, Jennifer Liddle, John Marshall, Valeriu Ohan, Martin O Pollard, + Andrew Whitwham, Thomas Keane, Shane A McCarthy, Robert M Davies, Heng Li, Twelve years of SAMtools and BCFtools, GigaScience, Volume 10, Issue 2, February 2021, giab008,

- Juicebox.js Robinson JT, Turner D, Durand NC, Thorvaldsdóttir H, Mesirov JP, Aiden EL. Juicebox.js Provides a + Juicebox.js Robinson JT, Turner D, Durand NC, Thorvaldsdóttir H, Mesirov JP, Aiden EL. Juicebox.js Provides + a Cloud-Based Visualization System for Hi-C Data. Cell Syst. 2018 Feb 28;6(2):256-258.e1. 10.1016/j.cels.2018.01.001. Epub 2018 Feb 7. PMID: 29428417; PMCID: PMC6047755.

Version: {{ all_stats_dicts['VERSIONS']['JUICEBOX_JS'] }}

+ +

Notes:

+ + {% include 'hic/dropdown.html' %} {% include 'hic/report_contents.html' %} diff --git a/bin/report_modules/templates/kraken2/kraken2.html b/bin/report_modules/templates/kraken2/kraken2.html index 250eebf3..f1c957e1 100644 --- a/bin/report_modules/templates/kraken2/kraken2.html +++ b/bin/report_modules/templates/kraken2/kraken2.html @@ -1,14 +1,19 @@ diff --git a/bin/report_modules/templates/ncbi_fcs_gx/ncbi_fcs_gx.html b/bin/report_modules/templates/ncbi_fcs_gx/ncbi_fcs_gx.html index fecca37e..e302ed41 100644 --- a/bin/report_modules/templates/ncbi_fcs_gx/ncbi_fcs_gx.html +++ b/bin/report_modules/templates/ncbi_fcs_gx/ncbi_fcs_gx.html @@ -1,23 +1,27 @@ diff --git a/bin/report_modules/templates/synteny_circos/synteny_circos.html b/bin/report_modules/templates/synteny_circos/synteny_circos.html index d7547707..3d410d30 100644 --- a/bin/report_modules/templates/synteny_circos/synteny_circos.html +++ b/bin/report_modules/templates/synteny_circos/synteny_circos.html @@ -1,39 +1,42 @@ diff --git a/bin/report_modules/templates/synteny_dotplot/synteny_dotplot.html b/bin/report_modules/templates/synteny_dotplot/synteny_dotplot.html index 91e1bd83..0c38c11d 100644 --- a/bin/report_modules/templates/synteny_dotplot/synteny_dotplot.html +++ b/bin/report_modules/templates/synteny_dotplot/synteny_dotplot.html @@ -10,6 +10,7 @@

Version: {{ all_stats_dicts['VERSIONS']['MUMMER']['nucmer'] }} (MUMMER)

+

Notes:

+ {% include 'synteny_dotplot/dropdown.html' %} {% include 'synteny_dotplot/report_contents.html' %} diff --git a/bin/report_modules/templates/synteny_plotsr/synteny_plotsr.html b/bin/report_modules/templates/synteny_plotsr/synteny_plotsr.html index 60060828..fb131ad1 100644 --- a/bin/report_modules/templates/synteny_plotsr/synteny_plotsr.html +++ b/bin/report_modules/templates/synteny_plotsr/synteny_plotsr.html @@ -31,6 +31,11 @@ all_stats_dicts['VERSIONS']['SYRI']['syri'] }} (SYRI), {{ all_stats_dicts['VERSIONS']['MINIMAP2_ALIGN']['minimap2'] }} (MINIMAP2)

+ +

Note:

+

This report dynamically loads '*.on.*.all/' folders from the 'synteny' folder under the output directory. These + folders should also be moved when moving the report's HTML file.

+ {% include 'synteny_plotsr/report_contents.html' %} diff --git a/docs/images/assemblyqc.png b/docs/images/assemblyqc.png index 3fd97dd1..5ee6aa40 100644 Binary files a/docs/images/assemblyqc.png and b/docs/images/assemblyqc.png differ diff --git a/nextflow.config b/nextflow.config index 0677fb0d..b48b4e5f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -274,7 +274,7 @@ manifest { description = """A Nextflow pipeline which evaluates assembly quality with multiple QC tools and presents the results in a unified html report.""" mainScript = 'main.nf' nextflowVersion = '!>=24.04.2' - version = '2.2.0' + version = '2.2.1' doi = 'https://doi.org/10.1093/bioinformatics/btae477' } diff --git a/subworkflows/local/fasta_synteny.nf b/subworkflows/local/fasta_synteny.nf index 6418d7e6..d7c6ca87 100644 --- a/subworkflows/local/fasta_synteny.nf +++ b/subworkflows/local/fasta_synteny.nf @@ -344,7 +344,7 @@ workflow FASTA_SYNTENY { | map { meta, syri, fastas -> def fasta_list = fastas.flatten() def syri_tags = syri.collect { it.name.replace('syri.out', '').split(/\.on\./).toList() }.flatten().unique() - def proposed_order = plotsr_assembly_order ? plotsr_assembly_order.tokenize(' ') : syri_tags.sort(false) + def proposed_order = plotsr_assembly_order ? plotsr_assembly_order.tokenize(' ') : syri_tags.sort(false) { it.toUpperCase() } def available_tags = [] proposed_order.each { tag -> if ( tag in syri_tags ) available_tags << tag } diff --git a/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf b/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf index d9fbc33a..3dbce70e 100644 --- a/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf @@ -2,8 +2,6 @@ // Subworkflow with functionality specific to the plant-food-research-open/assemblyqc pipeline // -import groovy.json.JsonOutput - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS @@ -81,12 +79,12 @@ workflow PIPELINE_INITIALISATION { | collect | map { tags -> validateInputTags( tags ) } | combine ( ch_input.map { row -> [ row ] } ) - | map { result, row -> row } + | map { _result, row -> row } ch_hic_reads = ! params.hic ? Channel.empty() : ( - "$params.hic".find(/.*[\/].*\.(fastq|fq)\.gz/) + "$params.hic".find(/\S+\{1,2\}[\w\.]*\.f(ast)?q\.gz/) ? Channel.fromFilePairs(params.hic, checkIfExists: true) : Channel.of( [ params.hic, 'is_sra' ] ) ) @@ -105,7 +103,7 @@ workflow PIPELINE_INITIALISATION { | collect | map { tags -> validateXrefAssemblies( tags ) } | combine ( ch_xref_assembly.map { row -> [ row ] } ) - | map { result, row -> row } + | map { _result, row -> row } | map { tag, fa, labels -> [ tag, file(fa, checkIfExists: true), file(labels, checkIfExists: true) ] } @@ -275,7 +273,7 @@ def validateInputTags(assemblyTags) { assemblyTags.each { tag -> tagCounts[tag] = tagCounts.containsKey(tag) ? tagCounts[tag] + 1 : 1 } - def repeatedTags = tagCounts.findAll { key, count -> count > 1 }.collect { key, count -> key } + def repeatedTags = tagCounts.findAll { _key, count -> count > 1 }.collect { key, _count -> key } if (repeatedTags.size() > 0) { error("Please check input assemblysheet -> Multiple assemblies have the same tags!: ${repeatedTags}") @@ -290,7 +288,7 @@ def validateXrefAssemblies(xrefTags) { xrefTags.each { tag -> tagCounts[tag] = tagCounts.containsKey(tag) ? tagCounts[tag] + 1 : 1 } - def repeatedTags = tagCounts.findAll { key, count -> count > 1 }.collect { key, count -> key } + def repeatedTags = tagCounts.findAll { _key, count -> count > 1 }.collect { key, _count -> key } if (repeatedTags.size() > 0) { error("Please check synteny_xref_assemblies -> Multiple xref assemblies have the same tags!: ${repeatedTags}") @@ -300,7 +298,7 @@ def validateXrefAssemblies(xrefTags) { } def jsonifyParams(params) { - return JsonOutput.toJson(params).toString() + return groovy.json.JsonOutput.toJson(params).toString() } def jsonifySummaryParams(params) { @@ -312,7 +310,7 @@ def jsonifySummaryParams(params) { } } - return JsonOutput.toJson(summary).toString() + return groovy.json.JsonOutput.toJson(summary).toString() } def extractReadsTuple(tag, reads_1, reads_2) { diff --git a/tests/hicparam/main.nf.test.snap b/tests/hicparam/main.nf.test.snap index db89beee..a6e53fcf 100644 --- a/tests/hicparam/main.nf.test.snap +++ b/tests/hicparam/main.nf.test.snap @@ -68,7 +68,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v2.2.0" + "plant-food-research-open/assemblyqc": "v2.2.1" } }, "stable paths": [ diff --git a/tests/invalid/main.nf.test.snap b/tests/invalid/main.nf.test.snap index c29b15ad..92cfa7c1 100644 --- a/tests/invalid/main.nf.test.snap +++ b/tests/invalid/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v2.2.0" + "plant-food-research-open/assemblyqc": "v2.2.1" } }, "stable paths": [ diff --git a/tests/minimal/main.nf.test.snap b/tests/minimal/main.nf.test.snap index 8e139a7e..dae5d99a 100644 --- a/tests/minimal/main.nf.test.snap +++ b/tests/minimal/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v2.2.0" + "plant-food-research-open/assemblyqc": "v2.2.1" } }, "stable paths": [ diff --git a/tests/noltr/main.nf.test.snap b/tests/noltr/main.nf.test.snap index d1580b9d..56e4d7a8 100644 --- a/tests/noltr/main.nf.test.snap +++ b/tests/noltr/main.nf.test.snap @@ -50,7 +50,7 @@ "seqkit": "v2.8.0" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v2.2.0" + "plant-food-research-open/assemblyqc": "v2.2.1" } }, "stable paths": [ diff --git a/tests/orthofinder/main.nf.test.snap b/tests/orthofinder/main.nf.test.snap index 4d34b485..6d457ac8 100644 --- a/tests/orthofinder/main.nf.test.snap +++ b/tests/orthofinder/main.nf.test.snap @@ -41,7 +41,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v2.2.0" + "plant-food-research-open/assemblyqc": "v2.2.1" } }, "stable paths": [ diff --git a/tests/stub/main.nf.test.snap b/tests/stub/main.nf.test.snap index d2e05d4c..6d354a86 100644 --- a/tests/stub/main.nf.test.snap +++ b/tests/stub/main.nf.test.snap @@ -230,7 +230,7 @@ "untar": 1.34 }, "Workflow": { - "plant-food-research-open/assemblyqc": "v2.2.0" + "plant-food-research-open/assemblyqc": "v2.2.1" } }, "stable paths": [ diff --git a/tests/tiny/main.nf.test.snap b/tests/tiny/main.nf.test.snap index b937e1d4..79ae24cf 100644 --- a/tests/tiny/main.nf.test.snap +++ b/tests/tiny/main.nf.test.snap @@ -29,7 +29,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v2.2.0" + "plant-food-research-open/assemblyqc": "v2.2.1" } }, "stable paths": [