From 271b4bdd7067ae7988220a79e31441cc35ee5198 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Thu, 11 Apr 2024 10:09:02 -0400 Subject: [PATCH 01/24] fix test full run --- assets/multiqc_config.yml | 2 +- conf/test_full.config | 13 +++++++++++++ nextflow.config | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 8bc5e1a7..f02edee9 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/airrflow + This report has been generated by the nf-core/airrflow analysis pipeline. For information about how to interpret these results, please see the documentation. diff --git a/conf/test_full.config b/conf/test_full.config index 8196a9d3..06a7d459 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -36,4 +36,17 @@ process { 'traits':'c_primer', 'tips':'c_primer'] } + + withName:DEFINE_CLONES_COMPUTE{ + ext.args = ['outname':'', 'model':'hierarchical', + 'method':'nt', 'linkage':'single', + 'min_n':30, 'isotype_column':'c_primer'] + + } + withName:DEFINE_CLONES_REPORT{ + ext.args = ['outname':'', 'model':'hierarchical', + 'method':'nt', 'linkage':'single', + 'min_n':30, 'isotype_column':'c_primer'] + + } } diff --git a/nextflow.config b/nextflow.config index dd398999..f57a8dcd 100644 --- a/nextflow.config +++ b/nextflow.config @@ -367,7 +367,7 @@ manifest { description = """B and T cell repertoire analysis pipeline with the Immcantation framework.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.3.0' + version = '3.3.1' doi = '10.5281/zenodo.2642009' } From 6205b7596ce06479afe60bf7652f383507b38900 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Thu, 11 Apr 2024 10:19:09 -0400 Subject: [PATCH 02/24] fix nebnext_umi_tcr profile --- conf/nebnext_umi_tcr.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/nebnext_umi_tcr.config b/conf/nebnext_umi_tcr.config index e030d952..280e6714 100644 --- a/conf/nebnext_umi_tcr.config +++ b/conf/nebnext_umi_tcr.config @@ -37,5 +37,5 @@ params { //TCR options clonal_threshold = 0 - skip_lineage + skip_lineage = true } From e29cfda947ac8a59d4e780223de4df4eb1230c62 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Thu, 11 Apr 2024 10:24:40 -0400 Subject: [PATCH 03/24] update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cc3c622..22d4e968 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [3.3.1] - 2024-04-11 Confringo hotfix + +- [#319](https://github.com/nf-core/airrflow/pull/319) Fix test full profile and nebnext_umi_tcr profile. + ## [3.3.0] - 2024-03-31 Confringo ### `Added` From 6554b2ed70a607c44623ad0fa7cdc1812a7a841d Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Thu, 11 Apr 2024 12:55:55 -0400 Subject: [PATCH 04/24] fix execute parse logs --- .../local/repertoire_analysis_reporting.nf | 2 +- workflows/airrflow.nf | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/subworkflows/local/repertoire_analysis_reporting.nf b/subworkflows/local/repertoire_analysis_reporting.nf index cbcf7456..2a796751 100644 --- a/subworkflows/local/repertoire_analysis_reporting.nf +++ b/subworkflows/local/repertoire_analysis_reporting.nf @@ -30,7 +30,7 @@ workflow REPERTOIRE_ANALYSIS_REPORTING { main: ch_versions = Channel.empty() - if (params.mode == "fastq" && !params.library_generation_method in ["sc_10x_genomics"]) { + if (params.mode == "fastq" && params.library_generation_method != "sc_10x_genomics") { PARSE_LOGS( ch_presto_filterseq_logs, ch_presto_maskprimers_logs, diff --git a/workflows/airrflow.nf b/workflows/airrflow.nf index 41a96d90..6b2eb589 100644 --- a/workflows/airrflow.nf +++ b/workflows/airrflow.nf @@ -119,15 +119,15 @@ workflow AIRRFLOW { ch_fastp_json = SEQUENCE_ASSEMBLY.out.fastp_reads_json ch_fastqc_postassembly_mqc = SEQUENCE_ASSEMBLY.out.fastqc_postassembly ch_validated_samplesheet = SEQUENCE_ASSEMBLY.out.samplesheet.collect() - ch_presto_filterseq_logs = SEQUENCE_ASSEMBLY.out.presto_filterseq_logs - ch_presto_maskprimers_logs = SEQUENCE_ASSEMBLY.out.presto_maskprimers_logs - ch_presto_pairseq_logs = SEQUENCE_ASSEMBLY.out.presto_pairseq_logs - ch_presto_clustersets_logs = SEQUENCE_ASSEMBLY.out.presto_clustersets_logs - ch_presto_buildconsensus_logs = SEQUENCE_ASSEMBLY.out.presto_buildconsensus_logs - ch_presto_postconsensus_pairseq_logs = SEQUENCE_ASSEMBLY.out.presto_postconsensus_pairseq_logs - ch_presto_assemblepairs_logs = SEQUENCE_ASSEMBLY.out.presto_assemblepairs_logs - ch_presto_collapseseq_logs = SEQUENCE_ASSEMBLY.out.presto_collapseseq_logs - ch_presto_splitseq_logs = SEQUENCE_ASSEMBLY.out.presto_splitseq_logs + ch_presto_filterseq_logs = SEQUENCE_ASSEMBLY.out.presto_filterseq_logs.ifEmpty([]) + ch_presto_maskprimers_logs = SEQUENCE_ASSEMBLY.out.presto_maskprimers_logs.ifEmpty([]) + ch_presto_pairseq_logs = SEQUENCE_ASSEMBLY.out.presto_pairseq_logs.ifEmpty([]) + ch_presto_clustersets_logs = SEQUENCE_ASSEMBLY.out.presto_clustersets_logs.ifEmpty([]) + ch_presto_buildconsensus_logs = SEQUENCE_ASSEMBLY.out.presto_buildconsensus_logs.ifEmpty([]) + ch_presto_postconsensus_pairseq_logs = SEQUENCE_ASSEMBLY.out.presto_postconsensus_pairseq_logs.ifEmpty([]) + ch_presto_assemblepairs_logs = SEQUENCE_ASSEMBLY.out.presto_assemblepairs_logs.ifEmpty([]) + ch_presto_collapseseq_logs = SEQUENCE_ASSEMBLY.out.presto_collapseseq_logs.ifEmpty([]) + ch_presto_splitseq_logs = SEQUENCE_ASSEMBLY.out.presto_splitseq_logs.ifEmpty([]) } } else if ( params.mode == "assembled" ) { From 87845c05407e4e756076fd832ff9d395d627a938 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Thu, 11 Apr 2024 15:38:39 -0400 Subject: [PATCH 05/24] add airr compliance badge --- CHANGELOG.md | 6 ++++++ README.md | 1 + 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22d4e968..68de6dd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [3.3.1] - 2024-04-11 Confringo hotfix +### `Added` + +- [#319](https://github.com/nf-core/airrflow/pull/319) Added AIRR compliance badge + +### `Fixed` + - [#319](https://github.com/nf-core/airrflow/pull/319) Fix test full profile and nebnext_umi_tcr profile. ## [3.3.0] - 2024-03-31 Confringo diff --git a/README.md b/README.md index 0332b20f..d6c0684c 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ [![Follow on Twitter](http://img.shields.io/badge/twitter-%40nf__core-1DA1F2?labelColor=000000&logo=twitter)](https://twitter.com/nf_core) [![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core) [![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core) +[![AIRR compliant](https://img.shields.io/static/v1?label=AIRR-C%20sw-tools%20v1&message=compliant&color=008AFF&labelColor=000000&style=plastic)](https://docs.airr-community.org/en/stable/swtools/airr_swtools_standard.html) ## Introduction From 8d50033ebfee252633f1273d4713ac84151eceb0 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Thu, 11 Apr 2024 15:41:33 -0400 Subject: [PATCH 06/24] Add description AIRR compliant --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d6c0684c..153912cc 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ On release, automated continuous integration tests run the pipeline on a full-si ## Pipeline summary -nf-core/airrflow allows the end-to-end processing of BCR and TCR bulk and single cell targeted sequencing data. Several protocols are supported, please see the [usage documentation](https://nf-co.re/airrflow/usage) for more details on the supported protocols. +nf-core/airrflow allows the end-to-end processing of BCR and TCR bulk and single cell targeted sequencing data. Several protocols are supported, please see the [usage documentation](https://nf-co.re/airrflow/usage) for more details on the supported protocols. The pipeline has been certified as [AIRR compliant](https://docs.airr-community.org/en/stable/swtools/airr_swtools_compliant.html) by the AIRR community, which means that it is compatible with downstream analysis tools also supporting this format. ![nf-core/airrflow overview](docs/images/metro-map-airrflow.png) From 443402402280ef260f016564b892b711d20845b6 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Fri, 12 Apr 2024 14:25:42 -0400 Subject: [PATCH 07/24] Dowser tips by isotype --- conf/modules.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index a20f0bad..ad834251 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -564,8 +564,8 @@ process { ] ext.args = ['build':'igphyml', 'minseq':5, - 'traits':'c_call', - 'tips':'c_call'] + 'traits':'isotype', + 'tips':'isotype'] } // ------------------------------- From 6947cf6b28e10671e685158485fb9af952eecbb0 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Fri, 12 Apr 2024 14:28:48 -0400 Subject: [PATCH 08/24] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68de6dd2..4f52f779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### `Fixed` - [#319](https://github.com/nf-core/airrflow/pull/319) Fix test full profile and nebnext_umi_tcr profile. +- [#321](https://github.com/nf-core/airrflow/pull/321) Label Dowser tips by isotype instead of c_call by default. ## [3.3.0] - 2024-03-31 Confringo From 1bdaf4cd66bc42e642058481374390159925a5b5 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Fri, 12 Apr 2024 15:37:07 -0400 Subject: [PATCH 09/24] isotype also for full test --- conf/test_full.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/test_full.config b/conf/test_full.config index 06a7d459..1880d29c 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -33,8 +33,8 @@ process { withName:DOWSER_LINEAGES{ ext.args = ['build':'igphyml', 'minseq':5, - 'traits':'c_primer', - 'tips':'c_primer'] + 'traits':'isotype', + 'tips':'isotype'] } withName:DEFINE_CLONES_COMPUTE{ From 96a03381fdb6932acd2758b0a3fdfafb08b4aab3 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 20:16:10 -0400 Subject: [PATCH 10/24] use raxml by default --- CITATIONS.md | 36 +++-------------------- assets/repertoire_comparison.Rmd | 4 +++ conf/modules.config | 3 +- modules/local/enchantr/dowser_lineages.nf | 3 +- nextflow.config | 3 +- nextflow_schema.json | 15 +++++++--- 6 files changed, 24 insertions(+), 40 deletions(-) diff --git a/CITATIONS.md b/CITATIONS.md index 5dd7833c..4300d353 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -32,42 +32,10 @@ > Gupta, N. T., Vander Heiden, J. A., Uduman, M., Gadala-Maria, D., Yaari, G., & Kleinstein, S. H. (2015). Change-O: a toolkit for analyzing large-scale B cell immunoglobulin repertoire sequencing data: Table 1. Bioinformatics, 31(20), 3356–3358. -- [Alakazam](https://doi.org/10.1126/scitranslmed.3008879) - - > Stern, J. N. H., Yaari, G., Vander Heiden, J. A., Church, G., Donahue, W. F., Hintzen, R. Q., … O’Connor, K. C. (2014). B cells populating the multiple sclerosis brain mature in the draining cervical lymph nodes. Science Translational Medicine, 6(248). - -- [SCOPer](https://doi.org/10.1093/bioinformatics/bty235) - - > Nouri N, Kleinstein S (2018). “A spectral clustering-based method for identifying clones from high-throughput B cell repertoire sequencing data.” Bioinformatics, i341-i349. - - > Nouri N, Kleinstein S (2020). “Somatic hypermutation analysis for improved identification of B cell clonal families from next-generation sequencing data.” PLOS Computational Biology, 16(6), e1007977. - - > Gupta N, Adams K, Briggs A, Timberlake S, Vigneault F, Kleinstein S (2017). “Hierarchical clustering can identify B cell clones with high confidence in Ig repertoire sequencing data.” The Journal of Immunology, 2489-2499. - -- [Dowser](https://doi.org/10.1371/journal.pcbi.1009885) - - > Hoehn K, Pybus O, Kleinstein S (2022). “Phylogenetic analysis of migration, differentiation, and class switching in B cells.” PLoS Computational Biology. - -- [IgPhyML](https://www.pnas.org/doi/10.1073/pnas.1906020116) - - > Hoehn K, Van der Heiden J, Zhou J, Lunter G, Pybus O, Kleinstein S (2019). “Repertoire-wide phylogenetic models of B cell molecular evolution reveal evolutionary signatures of aging and vaccination.” PNAS. - - [IgBLAST](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3692102/) > Ye J, Ma N, Madden TL, Ostell JM. (2013). IgBLAST: an immunoglobulin variable domain sequence analysis tool. Nucleic Acids Res. -- [Fastp](https://doi.org/10.1093/bioinformatics/bty560) - - > Shifu Chen, Yanqing Zhou, Yaru Chen, Jia Gu, fastp: an ultra-fast all-in-one FASTQ preprocessor, Bioinformatics. 2018 Sept 1; 34(17), i884–i890. doi: 10.1093/bioinformatics/bty560. - -- [pRESTO](https://doi.org/10.1093/bioinformatics/btu138) - - > Vander Heiden, J. A., Yaari, G., Uduman, M., Stern, J. N. H., O’Connor, K. C., Hafler, D. A., … Kleinstein, S. H. (2014). pRESTO: a toolkit for processing high-throughput sequencing raw reads of lymphocyte receptor repertoires. Bioinformatics, 30(13), 1930–1932. - -- [SHazaM, Change-O](https://doi.org/10.1093/bioinformatics/btv359) - - > Gupta, N. T., Vander Heiden, J. A., Uduman, M., Gadala-Maria, D., Yaari, G., & Kleinstein, S. H. (2015). Change-O: a toolkit for analyzing large-scale B cell immunoglobulin repertoire sequencing data. Bioinformatics, 31(20), 3356–3358. - - [Alakazam](https://doi.org/10.1126/scitranslmed.3008879) > Stern, J. N. H., Yaari, G., Vander Heiden, J. A., Church, G., Donahue, W. F., Hintzen, R. Q., … O’Connor, K. C. (2014). B cells populating the multiple sclerosis brain mature in the draining cervical lymph nodes. Science Translational Medicine, 6(248). @@ -88,6 +56,10 @@ > Hoehn K, Van der Heiden J, Zhou J, Lunter G, Pybus O, Kleinstein S (2019). “Repertoire-wide phylogenetic models of B cell molecular evolution reveal evolutionary signatures of aging and vaccination. PNAS, 116(45) 22664-22672." +- [RAxML](10.1093/bioinformatics/btu033) + + > Stamatakis A. (2014) RAxML version 8: a tool for phylogenetic analysis and post-analysis of large phylogenies. Bioinformatics, 30(9): 1312-1313. + - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. diff --git a/assets/repertoire_comparison.Rmd b/assets/repertoire_comparison.Rmd index 27ebbbad..d3f83e75 100644 --- a/assets/repertoire_comparison.Rmd +++ b/assets/repertoire_comparison.Rmd @@ -423,6 +423,10 @@ In addition, citations for the tools and data used in this pipeline are as follo > Hoehn K, Van der Heiden J, Zhou J, Lunter G, Pybus O, Kleinstein S (2019). “Repertoire-wide phylogenetic models of B cell molecular evolution reveal evolutionary signatures of aging and vaccination.” PNAS. +- [RAxML](10.1093/bioinformatics/btu033) + + > Stamatakis A. (2014) RAxML version 8: a tool for phylogenetic analysis and post-analysis of large phylogenies. Bioinformatics, 30(9): 1312-1313. + - [TIgGER](https://doi.org/10.1073/pnas.1417683112) > Gadala-maria, D., Yaari, G., Uduman, M., & Kleinstein, S. H. (2015). Automated analysis of high-throughput B-cell sequencing data reveals a high frequency of novel immunoglobulin V gene segment alleles. Proceedings of the National Academy of Sciences, 112(8), 1–9. diff --git a/conf/modules.config b/conf/modules.config index a20f0bad..a4b144f9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -562,8 +562,7 @@ process { mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] - ext.args = ['build':'igphyml', - 'minseq':5, + ext.args = ['minseq':5, 'traits':'c_call', 'tips':'c_call'] } diff --git a/modules/local/enchantr/dowser_lineages.nf b/modules/local/enchantr/dowser_lineages.nf index e50a9e07..d8c43881 100644 --- a/modules/local/enchantr/dowser_lineages.nf +++ b/modules/local/enchantr/dowser_lineages.nf @@ -43,7 +43,8 @@ process DOWSER_LINEAGES { """ Rscript -e "enchantr::enchantr_report('dowser_lineage', \\ report_params=list('input'='${tabs}', \\ - 'exec'='${params.igphyml}', \\ + 'build'='${params.lineage_tree_builder}' \\ + 'exec'='${params.lineage_tree_exec}', \\ 'outdir'=getwd(), \\ 'nproc'=${task.cpus},\\ 'log'='${id_name}_dowser_command_log' ${args}))" diff --git a/nextflow.config b/nextflow.config index f57a8dcd..da7513a2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -105,7 +105,8 @@ params { skip_report_threshold = false // tree lineage options - igphyml="/usr/local/share/igphyml/src/igphyml" + lineage_tree_builder = 'raxml' + lineage_tree_exec = '/usr/local/bin/raxml-ng' skip_lineage = false // ----------------------- diff --git a/nextflow_schema.json b/nextflow_schema.json index 3902f9ed..dff249b3 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -429,11 +429,18 @@ "description": "Name of the field used to identify external groups used to identify a clonal threshold.", "fa_icon": "fab fa-pagelines" }, - "igphyml": { + "lineage_tree_builder": { "type": "string", - "default": "/usr/local/share/igphyml/src/igphyml", - "description": "Path to IgPhyml executable.", - "fa_icon": "fas fa-file" + "default": "raxml", + "description": "Lineage tree software to use to build trees within Dowser. If you change the default, also set the `lineage_tree_exec` parameter.", + "enum": ["raxml", "igphyml"], + "fa_icon": "fas fa-pagelines" + }, + "lineage_tree_exec": { + "type": "string", + "default": "/usr/local/bin/raxml-ng", + "description": "Path to lineage tree building executable.", + "fa_icon": "fas fa-pagelines" }, "singlecell": { "type": "string", From 3ee7e7c94526c02e83c7d74928c7fd4dd89f29e0 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 20:24:02 -0400 Subject: [PATCH 11/24] fix test full config --- CHANGELOG.md | 1 + conf/test_full.config | 32 +------------------------------- 2 files changed, 2 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f52f779..aa3b09db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - [#319](https://github.com/nf-core/airrflow/pull/319) Fix test full profile and nebnext_umi_tcr profile. - [#321](https://github.com/nf-core/airrflow/pull/321) Label Dowser tips by isotype instead of c_call by default. +- [#322](https://github.com/nf-core/airrflow/pull/322) Use RAxML as the default builder for dowser. ## [3.3.0] - 2024-03-31 Confringo diff --git a/conf/test_full.config b/conf/test_full.config index 1880d29c..5ee60c5b 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -9,6 +9,7 @@ ---------------------------------------------------------------------------------------- */ +includeConfig 'nebnext_umi_bcr.config' params { config_profile_name = 'Full test profile' @@ -16,37 +17,6 @@ params { // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/metadata_pcr_umi_airr_300.tsv' - cprimers = 's3://ngi-igenomes/test-data/airrflow/pcr_umi/cprimers.fasta' - vprimers = 's3://ngi-igenomes/test-data/airrflow/pcr_umi/vprimers.fasta' imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' - - // Other params - library_generation_method = 'specific_pcr_umi' - cprimer_position = 'R1' - umi_length = 15 - umi_start = 0 - umi_position = 'R1' -} - -process { - withName:DOWSER_LINEAGES{ - ext.args = ['build':'igphyml', - 'minseq':5, - 'traits':'isotype', - 'tips':'isotype'] - } - - withName:DEFINE_CLONES_COMPUTE{ - ext.args = ['outname':'', 'model':'hierarchical', - 'method':'nt', 'linkage':'single', - 'min_n':30, 'isotype_column':'c_primer'] - - } - withName:DEFINE_CLONES_REPORT{ - ext.args = ['outname':'', 'model':'hierarchical', - 'method':'nt', 'linkage':'single', - 'min_n':30, 'isotype_column':'c_primer'] - - } } From 5a8432b111bb9923180486b255553aaa1317ceb0 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 21:15:56 -0400 Subject: [PATCH 12/24] update enchantr version --- CHANGELOG.md | 7 +++++++ modules/local/airrflow_report/airrflow_report.nf | 4 ++-- modules/local/enchantr/collapse_duplicates.nf | 4 ++-- modules/local/enchantr/define_clones.nf | 4 ++-- modules/local/enchantr/detect_contamination.nf | 4 ++-- modules/local/enchantr/dowser_lineages.nf | 4 ++-- modules/local/enchantr/find_threshold.nf | 4 ++-- modules/local/enchantr/remove_chimeric.nf | 4 ++-- modules/local/enchantr/report_file_size.nf | 4 ++-- modules/local/enchantr/single_cell_qc.nf | 4 ++-- modules/local/enchantr/validate_input.nf | 4 ++-- modules/local/reveal/add_meta_to_tab.nf | 4 ++-- modules/local/reveal/filter_junction_mod3.nf | 4 ++-- modules/local/reveal/filter_quality.nf | 4 ++-- 14 files changed, 33 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa3b09db..db05a1d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,13 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - [#321](https://github.com/nf-core/airrflow/pull/321) Label Dowser tips by isotype instead of c_call by default. - [#322](https://github.com/nf-core/airrflow/pull/322) Use RAxML as the default builder for dowser. +### `Dependencies` + +| Dependency | Old version | New version | +| ---------- | ----------- | ----------- | +| enchantr | 0.1.11 | 0.1.14 | + + ## [3.3.0] - 2024-03-31 Confringo ### `Added` diff --git a/modules/local/airrflow_report/airrflow_report.nf b/modules/local/airrflow_report/airrflow_report.nf index fafbd052..17d55e6a 100644 --- a/modules/local/airrflow_report/airrflow_report.nf +++ b/modules/local/airrflow_report/airrflow_report.nf @@ -6,8 +6,8 @@ process AIRRFLOW_REPORT { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: tuple val(meta), path(tab) // sequence tsv table in AIRR format diff --git a/modules/local/enchantr/collapse_duplicates.nf b/modules/local/enchantr/collapse_duplicates.nf index ebec7209..f9c8abf8 100644 --- a/modules/local/enchantr/collapse_duplicates.nf +++ b/modules/local/enchantr/collapse_duplicates.nf @@ -8,8 +8,8 @@ process COLLAPSE_DUPLICATES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: tuple val(meta), path(tabs) // tuple [val(meta), sequence tsv in AIRR format ] diff --git a/modules/local/enchantr/define_clones.nf b/modules/local/enchantr/define_clones.nf index b6cf9ec8..4c44e510 100644 --- a/modules/local/enchantr/define_clones.nf +++ b/modules/local/enchantr/define_clones.nf @@ -25,8 +25,8 @@ process DEFINE_CLONES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: tuple val(meta), path(tabs) // meta, sequence tsv in AIRR format diff --git a/modules/local/enchantr/detect_contamination.nf b/modules/local/enchantr/detect_contamination.nf index 1ed10e8e..6142e1b1 100644 --- a/modules/local/enchantr/detect_contamination.nf +++ b/modules/local/enchantr/detect_contamination.nf @@ -9,8 +9,8 @@ process DETECT_CONTAMINATION { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: path(tabs) diff --git a/modules/local/enchantr/dowser_lineages.nf b/modules/local/enchantr/dowser_lineages.nf index d8c43881..cdc5323c 100644 --- a/modules/local/enchantr/dowser_lineages.nf +++ b/modules/local/enchantr/dowser_lineages.nf @@ -25,8 +25,8 @@ process DOWSER_LINEAGES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: tuple val(meta), path(tabs) diff --git a/modules/local/enchantr/find_threshold.nf b/modules/local/enchantr/find_threshold.nf index 89b1c3b8..728372f9 100644 --- a/modules/local/enchantr/find_threshold.nf +++ b/modules/local/enchantr/find_threshold.nf @@ -25,8 +25,8 @@ process FIND_THRESHOLD { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: diff --git a/modules/local/enchantr/remove_chimeric.nf b/modules/local/enchantr/remove_chimeric.nf index 76f4e0b5..ebad459f 100644 --- a/modules/local/enchantr/remove_chimeric.nf +++ b/modules/local/enchantr/remove_chimeric.nf @@ -9,8 +9,8 @@ process REMOVE_CHIMERIC { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: diff --git a/modules/local/enchantr/report_file_size.nf b/modules/local/enchantr/report_file_size.nf index ece9d93f..9caa4da2 100644 --- a/modules/local/enchantr/report_file_size.nf +++ b/modules/local/enchantr/report_file_size.nf @@ -10,8 +10,8 @@ process REPORT_FILE_SIZE { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: path logs diff --git a/modules/local/enchantr/single_cell_qc.nf b/modules/local/enchantr/single_cell_qc.nf index 6b232155..ae847942 100644 --- a/modules/local/enchantr/single_cell_qc.nf +++ b/modules/local/enchantr/single_cell_qc.nf @@ -24,8 +24,8 @@ process SINGLE_CELL_QC { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: path(tabs) diff --git a/modules/local/enchantr/validate_input.nf b/modules/local/enchantr/validate_input.nf index 0dcd884e..f3531567 100644 --- a/modules/local/enchantr/validate_input.nf +++ b/modules/local/enchantr/validate_input.nf @@ -10,8 +10,8 @@ process VALIDATE_INPUT { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: file samplesheet diff --git a/modules/local/reveal/add_meta_to_tab.nf b/modules/local/reveal/add_meta_to_tab.nf index 67c930d6..1c6ffa2e 100644 --- a/modules/local/reveal/add_meta_to_tab.nf +++ b/modules/local/reveal/add_meta_to_tab.nf @@ -7,8 +7,8 @@ process ADD_META_TO_TAB { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" cache 'deep' // Without 'deep' this process would run when using -resume diff --git a/modules/local/reveal/filter_junction_mod3.nf b/modules/local/reveal/filter_junction_mod3.nf index c373ddbf..e0877dd8 100644 --- a/modules/local/reveal/filter_junction_mod3.nf +++ b/modules/local/reveal/filter_junction_mod3.nf @@ -7,8 +7,8 @@ process FILTER_JUNCTION_MOD3 { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: tuple val(meta), path(tab) // sequence tsv in AIRR format diff --git a/modules/local/reveal/filter_quality.nf b/modules/local/reveal/filter_quality.nf index 46062cb9..08701eec 100644 --- a/modules/local/reveal/filter_quality.nf +++ b/modules/local/reveal/filter_quality.nf @@ -7,8 +7,8 @@ process FILTER_QUALITY { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.0': - 'docker.io/immcantation/airrflow:3.3.0' }" + 'docker.io/immcantation/airrflow:3.3.1': + 'docker.io/immcantation/airrflow:3.3.1' }" input: tuple val(meta), path(tab) // sequence tsv in AIRR format From fe3eb08072a3b291984fb75061cb57a84a9c3cef Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 21:18:32 -0400 Subject: [PATCH 13/24] fix prettier --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db05a1d4..75d4a4b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. | ---------- | ----------- | ----------- | | enchantr | 0.1.11 | 0.1.14 | - ## [3.3.0] - 2024-03-31 Confringo ### `Added` From b56d92927c0a95a4164be940938fb2a4f8d0d971 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 21:21:55 -0400 Subject: [PATCH 14/24] more raxml changes --- README.md | 4 ++-- conf/test_assembled_immcantation_devel_hs.config | 1 - conf/test_assembled_immcantation_devel_mm.config | 1 - conf/test_raw_immcantation_devel.config | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 153912cc..d5d698ff 100644 --- a/README.md +++ b/README.md @@ -81,8 +81,8 @@ nf-core/airrflow allows the end-to-end processing of BCR and TCR bulk and single 4. Clonal analysis (bulk and single-cell) - Find threshold for clone definition (`SHazaM`, `EnchantR`). -- Create germlines and define clones, repertoire analysis (`Change-O`, `EnchantR`). -- Build lineage trees (`SCOPer`, `IgphyML`, `EnchantR`). +- Create germlines and define clones, repertoire analysis (`SCOPer`, `EnchantR`). +- Build lineage trees (`Dowser`, `IgphyML`, `RAxML`, `EnchantR`). 5. Repertoire analysis and reporting diff --git a/conf/test_assembled_immcantation_devel_hs.config b/conf/test_assembled_immcantation_devel_hs.config index dad18d47..f924f66c 100644 --- a/conf/test_assembled_immcantation_devel_hs.config +++ b/conf/test_assembled_immcantation_devel_hs.config @@ -21,7 +21,6 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-reveal/test_assembled_metadata_hs.tsv' imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' - igphyml = '/usr/local/share/igphyml/src/igphyml' reassign = true productive_only = true diff --git a/conf/test_assembled_immcantation_devel_mm.config b/conf/test_assembled_immcantation_devel_mm.config index 2aea10a3..f7fa1e33 100644 --- a/conf/test_assembled_immcantation_devel_mm.config +++ b/conf/test_assembled_immcantation_devel_mm.config @@ -21,7 +21,6 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-reveal/test_assembled_metadata_mm.tsv' imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' - igphyml = '/usr/local/share/igphyml/src/igphyml' reassign = true productive_only = true diff --git a/conf/test_raw_immcantation_devel.config b/conf/test_raw_immcantation_devel.config index b309cb60..7f362bdd 100644 --- a/conf/test_raw_immcantation_devel.config +++ b/conf/test_raw_immcantation_devel.config @@ -26,7 +26,6 @@ params { imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' - igphyml = '/usr/local/share/igphyml/src/igphyml' mode = 'fastq' From 22a21d97ccbd3e88b241ebf88b1b4e448dbae2d7 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 21:26:49 -0400 Subject: [PATCH 15/24] add profile info to readme --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index d5d698ff..bb8a9302 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,16 @@ nextflow run nf-core/airrflow \ --outdir ./results ``` +For common **bulk sequencing protocols** we provide pre-set profiles that specify primers, UMI length, etc for common commercially available sequencing protocols. Please check the [Supported protocol profiles](#supported-protocol-profiles) for a full list of available profiles. An example command running the NEBNext UMI protocol profile with docker containers is: + +```bash +nextflow run nf-core/airrflow \ +-profile nebnext_umi,docker \ +--mode fastq \ +--input input_samplesheet.tsv \ +--outdir results +``` + A typical command to run the pipeline from **single cell raw fastq files** (10X genomics) is: ```bash From fb72bff5a8041070de6644175d4bf8501d5ba7b3 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 21:47:17 -0400 Subject: [PATCH 16/24] fix comma --- modules/local/enchantr/dowser_lineages.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/enchantr/dowser_lineages.nf b/modules/local/enchantr/dowser_lineages.nf index cdc5323c..6cc94d21 100644 --- a/modules/local/enchantr/dowser_lineages.nf +++ b/modules/local/enchantr/dowser_lineages.nf @@ -43,7 +43,7 @@ process DOWSER_LINEAGES { """ Rscript -e "enchantr::enchantr_report('dowser_lineage', \\ report_params=list('input'='${tabs}', \\ - 'build'='${params.lineage_tree_builder}' \\ + 'build'='${params.lineage_tree_builder}', \\ 'exec'='${params.lineage_tree_exec}', \\ 'outdir'=getwd(), \\ 'nproc'=${task.cpus},\\ From 9739fcd498e7c7404c33386fbddc6a97b6071a4e Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Garriga Date: Sun, 21 Apr 2024 21:54:56 -0400 Subject: [PATCH 17/24] skip lineage trees by default --- CHANGELOG.md | 2 +- conf/clontech_umi_tcr.config | 1 - conf/nebnext_umi_tcr.config | 1 - conf/test.config | 1 + conf/test_assembled_hs.config | 1 + conf/test_assembled_mm.config | 2 ++ conf/test_clontech_umi.config | 1 - conf/test_full.config | 2 ++ conf/test_nebnext_umi.config | 1 - conf/test_tcr.config | 1 - nextflow.config | 2 +- nextflow_schema.json | 4 ++-- subworkflows/local/clonal_analysis.nf | 2 +- 13 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75d4a4b2..7bb74ae9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - [#319](https://github.com/nf-core/airrflow/pull/319) Fix test full profile and nebnext_umi_tcr profile. - [#321](https://github.com/nf-core/airrflow/pull/321) Label Dowser tips by isotype instead of c_call by default. -- [#322](https://github.com/nf-core/airrflow/pull/322) Use RAxML as the default builder for dowser. +- [#322](https://github.com/nf-core/airrflow/pull/322) Use RAxML as the default builder for dowser. Skip lineage trees by default. ### `Dependencies` diff --git a/conf/clontech_umi_tcr.config b/conf/clontech_umi_tcr.config index d620dcee..34aad8ab 100644 --- a/conf/clontech_umi_tcr.config +++ b/conf/clontech_umi_tcr.config @@ -40,5 +40,4 @@ params { // TCR options clonal_threshold = 0 - skip_lineage = true } diff --git a/conf/nebnext_umi_tcr.config b/conf/nebnext_umi_tcr.config index 280e6714..3318e270 100644 --- a/conf/nebnext_umi_tcr.config +++ b/conf/nebnext_umi_tcr.config @@ -37,5 +37,4 @@ params { //TCR options clonal_threshold = 0 - skip_lineage = true } diff --git a/conf/test.config b/conf/test.config index 1bf667f7..71a424d6 100644 --- a/conf/test.config +++ b/conf/test.config @@ -35,6 +35,7 @@ params { umi_position = 'R1' index_file = true isotype_column = 'c_primer' + lineage_trees = true } process{ diff --git a/conf/test_assembled_hs.config b/conf/test_assembled_hs.config index 602f5462..dd1b6c52 100644 --- a/conf/test_assembled_hs.config +++ b/conf/test_assembled_hs.config @@ -27,5 +27,6 @@ params { collapseby = 'filename' cloneby = 'subject_id' remove_chimeric = true + lineage_trees = true } diff --git a/conf/test_assembled_mm.config b/conf/test_assembled_mm.config index a80d2099..fe6fd57b 100644 --- a/conf/test_assembled_mm.config +++ b/conf/test_assembled_mm.config @@ -27,5 +27,7 @@ params { collapseby = 'filename' cloneby = 'subject_id' remove_chimeric = true + + lineage_trees = true } diff --git a/conf/test_clontech_umi.config b/conf/test_clontech_umi.config index 2263d057..552a7434 100644 --- a/conf/test_clontech_umi.config +++ b/conf/test_clontech_umi.config @@ -27,6 +27,5 @@ params { igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' clonal_threshold = 0.1 - skip_lineage = true } diff --git a/conf/test_full.config b/conf/test_full.config index 5ee60c5b..75b8b7b9 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -19,4 +19,6 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/metadata_pcr_umi_airr_300.tsv' imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + + lineage_trees = true } diff --git a/conf/test_nebnext_umi.config b/conf/test_nebnext_umi.config index d1712c8d..c96b16b3 100644 --- a/conf/test_nebnext_umi.config +++ b/conf/test_nebnext_umi.config @@ -28,6 +28,5 @@ params { igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' clonal_threshold = 0.1 - skip_lineage = true } diff --git a/conf/test_tcr.config b/conf/test_tcr.config index fb878caa..5010c010 100644 --- a/conf/test_tcr.config +++ b/conf/test_tcr.config @@ -25,7 +25,6 @@ params { library_generation_method = 'dt_5p_race_umi' cprimer_position = 'R1' clonal_threshold = 0 - skip_lineage = true // Input data diff --git a/nextflow.config b/nextflow.config index da7513a2..6ab9c97b 100644 --- a/nextflow.config +++ b/nextflow.config @@ -107,7 +107,7 @@ params { // tree lineage options lineage_tree_builder = 'raxml' lineage_tree_exec = '/usr/local/bin/raxml-ng' - skip_lineage = false + lineage_trees = false // ----------------------- // reporting options diff --git a/nextflow_schema.json b/nextflow_schema.json index dff249b3..dc75590a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -412,9 +412,9 @@ "fa_icon": "fab fa-pagelines", "description": "Set the clustering threshold Hamming distance value. Default: 'auto'" }, - "skip_lineage": { + "lineage_trees": { "type": "boolean", - "description": "Skip clonal lineage analysis and lineage tree plotting.", + "description": "Perform clonal lineage tree analysis.", "fa_icon": "fas fa-angle-double-right" }, "cloneby": { diff --git a/subworkflows/local/clonal_analysis.nf b/subworkflows/local/clonal_analysis.nf index 887aed92..176783da 100644 --- a/subworkflows/local/clonal_analysis.nf +++ b/subworkflows/local/clonal_analysis.nf @@ -114,7 +114,7 @@ workflow CLONAL_ANALYSIS { .map { it -> [ [id: "${it.baseName}".replaceFirst("__clone-pass", "")], it ] } .set{ch_repertoires_cloned} - if (!params.skip_lineage){ + if (params.lineage_trees){ DOWSER_LINEAGES( ch_repertoires_cloned ) From ffb761a46df04d609e505b26079dbefcf3c7a1d7 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Mon, 22 Apr 2024 09:46:19 -0400 Subject: [PATCH 18/24] change version to 4.0.0 --- CHANGELOG.md | 7 ++++++- assets/multiqc_config.yml | 2 +- modules/local/airrflow_report/airrflow_report.nf | 4 ++-- modules/local/enchantr/collapse_duplicates.nf | 4 ++-- modules/local/enchantr/define_clones.nf | 4 ++-- modules/local/enchantr/detect_contamination.nf | 4 ++-- modules/local/enchantr/dowser_lineages.nf | 4 ++-- modules/local/enchantr/find_threshold.nf | 4 ++-- modules/local/enchantr/remove_chimeric.nf | 4 ++-- modules/local/enchantr/report_file_size.nf | 4 ++-- modules/local/enchantr/single_cell_qc.nf | 4 ++-- modules/local/enchantr/validate_input.nf | 4 ++-- modules/local/reveal/add_meta_to_tab.nf | 4 ++-- modules/local/reveal/filter_junction_mod3.nf | 4 ++-- modules/local/reveal/filter_quality.nf | 4 ++-- nextflow.config | 2 +- 16 files changed, 34 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bb74ae9..627c2c0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## [3.3.1] - 2024-04-11 Confringo hotfix +## [4.0] - 2024-04-22 Ascendio ### `Added` @@ -21,6 +21,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. | ---------- | ----------- | ----------- | | enchantr | 0.1.11 | 0.1.14 | +### `Deprecated parameters` + +- `--skip_lineage_trees` is now deprecated in favor of `--lineage_trees`. Lineage trees are skipped by default. +- `--igphyml` parameter is deprecated in favor of `--lineage_tree_exec`. All lineage tree building software part of Dowser are now supported. + ## [3.3.0] - 2024-03-31 Confringo ### `Added` diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index f02edee9..23dcd315 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/airrflow + This report has been generated by the nf-core/airrflow analysis pipeline. For information about how to interpret these results, please see the documentation. diff --git a/modules/local/airrflow_report/airrflow_report.nf b/modules/local/airrflow_report/airrflow_report.nf index 17d55e6a..383ee5ed 100644 --- a/modules/local/airrflow_report/airrflow_report.nf +++ b/modules/local/airrflow_report/airrflow_report.nf @@ -6,8 +6,8 @@ process AIRRFLOW_REPORT { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: tuple val(meta), path(tab) // sequence tsv table in AIRR format diff --git a/modules/local/enchantr/collapse_duplicates.nf b/modules/local/enchantr/collapse_duplicates.nf index f9c8abf8..9ff2e011 100644 --- a/modules/local/enchantr/collapse_duplicates.nf +++ b/modules/local/enchantr/collapse_duplicates.nf @@ -8,8 +8,8 @@ process COLLAPSE_DUPLICATES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: tuple val(meta), path(tabs) // tuple [val(meta), sequence tsv in AIRR format ] diff --git a/modules/local/enchantr/define_clones.nf b/modules/local/enchantr/define_clones.nf index 4c44e510..37ed3b15 100644 --- a/modules/local/enchantr/define_clones.nf +++ b/modules/local/enchantr/define_clones.nf @@ -25,8 +25,8 @@ process DEFINE_CLONES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: tuple val(meta), path(tabs) // meta, sequence tsv in AIRR format diff --git a/modules/local/enchantr/detect_contamination.nf b/modules/local/enchantr/detect_contamination.nf index 6142e1b1..c1d9a111 100644 --- a/modules/local/enchantr/detect_contamination.nf +++ b/modules/local/enchantr/detect_contamination.nf @@ -9,8 +9,8 @@ process DETECT_CONTAMINATION { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: path(tabs) diff --git a/modules/local/enchantr/dowser_lineages.nf b/modules/local/enchantr/dowser_lineages.nf index 6cc94d21..e0672ec8 100644 --- a/modules/local/enchantr/dowser_lineages.nf +++ b/modules/local/enchantr/dowser_lineages.nf @@ -25,8 +25,8 @@ process DOWSER_LINEAGES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: tuple val(meta), path(tabs) diff --git a/modules/local/enchantr/find_threshold.nf b/modules/local/enchantr/find_threshold.nf index 728372f9..2d703ed9 100644 --- a/modules/local/enchantr/find_threshold.nf +++ b/modules/local/enchantr/find_threshold.nf @@ -25,8 +25,8 @@ process FIND_THRESHOLD { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: diff --git a/modules/local/enchantr/remove_chimeric.nf b/modules/local/enchantr/remove_chimeric.nf index ebad459f..37d644c1 100644 --- a/modules/local/enchantr/remove_chimeric.nf +++ b/modules/local/enchantr/remove_chimeric.nf @@ -9,8 +9,8 @@ process REMOVE_CHIMERIC { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: diff --git a/modules/local/enchantr/report_file_size.nf b/modules/local/enchantr/report_file_size.nf index 9caa4da2..ec3c9cf4 100644 --- a/modules/local/enchantr/report_file_size.nf +++ b/modules/local/enchantr/report_file_size.nf @@ -10,8 +10,8 @@ process REPORT_FILE_SIZE { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: path logs diff --git a/modules/local/enchantr/single_cell_qc.nf b/modules/local/enchantr/single_cell_qc.nf index ae847942..fcb7202f 100644 --- a/modules/local/enchantr/single_cell_qc.nf +++ b/modules/local/enchantr/single_cell_qc.nf @@ -24,8 +24,8 @@ process SINGLE_CELL_QC { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: path(tabs) diff --git a/modules/local/enchantr/validate_input.nf b/modules/local/enchantr/validate_input.nf index f3531567..135e85a1 100644 --- a/modules/local/enchantr/validate_input.nf +++ b/modules/local/enchantr/validate_input.nf @@ -10,8 +10,8 @@ process VALIDATE_INPUT { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: file samplesheet diff --git a/modules/local/reveal/add_meta_to_tab.nf b/modules/local/reveal/add_meta_to_tab.nf index 1c6ffa2e..32b0d514 100644 --- a/modules/local/reveal/add_meta_to_tab.nf +++ b/modules/local/reveal/add_meta_to_tab.nf @@ -7,8 +7,8 @@ process ADD_META_TO_TAB { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" cache 'deep' // Without 'deep' this process would run when using -resume diff --git a/modules/local/reveal/filter_junction_mod3.nf b/modules/local/reveal/filter_junction_mod3.nf index e0877dd8..cfe04a3d 100644 --- a/modules/local/reveal/filter_junction_mod3.nf +++ b/modules/local/reveal/filter_junction_mod3.nf @@ -7,8 +7,8 @@ process FILTER_JUNCTION_MOD3 { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: tuple val(meta), path(tab) // sequence tsv in AIRR format diff --git a/modules/local/reveal/filter_quality.nf b/modules/local/reveal/filter_quality.nf index 08701eec..bc05bb3f 100644 --- a/modules/local/reveal/filter_quality.nf +++ b/modules/local/reveal/filter_quality.nf @@ -7,8 +7,8 @@ process FILTER_QUALITY { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:3.3.1': - 'docker.io/immcantation/airrflow:3.3.1' }" + 'docker.io/immcantation/airrflow:4.4.0': + 'docker.io/immcantation/airrflow:4.4.0' }" input: tuple val(meta), path(tab) // sequence tsv in AIRR format diff --git a/nextflow.config b/nextflow.config index 6ab9c97b..a5917cfa 100644 --- a/nextflow.config +++ b/nextflow.config @@ -368,7 +368,7 @@ manifest { description = """B and T cell repertoire analysis pipeline with the Immcantation framework.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.3.1' + version = '4.0' doi = '10.5281/zenodo.2642009' } From 43cf4d574acb8a37fd12ac12e2cf1fff2afe44cc Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Mon, 22 Apr 2024 09:56:32 -0400 Subject: [PATCH 19/24] oops fix container tag --- modules/local/airrflow_report/airrflow_report.nf | 4 ++-- modules/local/enchantr/collapse_duplicates.nf | 4 ++-- modules/local/enchantr/define_clones.nf | 4 ++-- modules/local/enchantr/detect_contamination.nf | 4 ++-- modules/local/enchantr/dowser_lineages.nf | 4 ++-- modules/local/enchantr/find_threshold.nf | 4 ++-- modules/local/enchantr/remove_chimeric.nf | 4 ++-- modules/local/enchantr/report_file_size.nf | 4 ++-- modules/local/enchantr/single_cell_qc.nf | 4 ++-- modules/local/enchantr/validate_input.nf | 4 ++-- modules/local/reveal/add_meta_to_tab.nf | 4 ++-- modules/local/reveal/filter_junction_mod3.nf | 4 ++-- modules/local/reveal/filter_quality.nf | 4 ++-- 13 files changed, 26 insertions(+), 26 deletions(-) diff --git a/modules/local/airrflow_report/airrflow_report.nf b/modules/local/airrflow_report/airrflow_report.nf index 383ee5ed..b4422153 100644 --- a/modules/local/airrflow_report/airrflow_report.nf +++ b/modules/local/airrflow_report/airrflow_report.nf @@ -6,8 +6,8 @@ process AIRRFLOW_REPORT { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: tuple val(meta), path(tab) // sequence tsv table in AIRR format diff --git a/modules/local/enchantr/collapse_duplicates.nf b/modules/local/enchantr/collapse_duplicates.nf index 9ff2e011..903824fe 100644 --- a/modules/local/enchantr/collapse_duplicates.nf +++ b/modules/local/enchantr/collapse_duplicates.nf @@ -8,8 +8,8 @@ process COLLAPSE_DUPLICATES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: tuple val(meta), path(tabs) // tuple [val(meta), sequence tsv in AIRR format ] diff --git a/modules/local/enchantr/define_clones.nf b/modules/local/enchantr/define_clones.nf index 37ed3b15..055c212a 100644 --- a/modules/local/enchantr/define_clones.nf +++ b/modules/local/enchantr/define_clones.nf @@ -25,8 +25,8 @@ process DEFINE_CLONES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: tuple val(meta), path(tabs) // meta, sequence tsv in AIRR format diff --git a/modules/local/enchantr/detect_contamination.nf b/modules/local/enchantr/detect_contamination.nf index c1d9a111..aae3ef92 100644 --- a/modules/local/enchantr/detect_contamination.nf +++ b/modules/local/enchantr/detect_contamination.nf @@ -9,8 +9,8 @@ process DETECT_CONTAMINATION { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: path(tabs) diff --git a/modules/local/enchantr/dowser_lineages.nf b/modules/local/enchantr/dowser_lineages.nf index e0672ec8..03444f19 100644 --- a/modules/local/enchantr/dowser_lineages.nf +++ b/modules/local/enchantr/dowser_lineages.nf @@ -25,8 +25,8 @@ process DOWSER_LINEAGES { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: tuple val(meta), path(tabs) diff --git a/modules/local/enchantr/find_threshold.nf b/modules/local/enchantr/find_threshold.nf index 2d703ed9..8632e081 100644 --- a/modules/local/enchantr/find_threshold.nf +++ b/modules/local/enchantr/find_threshold.nf @@ -25,8 +25,8 @@ process FIND_THRESHOLD { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: diff --git a/modules/local/enchantr/remove_chimeric.nf b/modules/local/enchantr/remove_chimeric.nf index 37d644c1..e6c73651 100644 --- a/modules/local/enchantr/remove_chimeric.nf +++ b/modules/local/enchantr/remove_chimeric.nf @@ -9,8 +9,8 @@ process REMOVE_CHIMERIC { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: diff --git a/modules/local/enchantr/report_file_size.nf b/modules/local/enchantr/report_file_size.nf index ec3c9cf4..4fc4c3fa 100644 --- a/modules/local/enchantr/report_file_size.nf +++ b/modules/local/enchantr/report_file_size.nf @@ -10,8 +10,8 @@ process REPORT_FILE_SIZE { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: path logs diff --git a/modules/local/enchantr/single_cell_qc.nf b/modules/local/enchantr/single_cell_qc.nf index fcb7202f..49e97796 100644 --- a/modules/local/enchantr/single_cell_qc.nf +++ b/modules/local/enchantr/single_cell_qc.nf @@ -24,8 +24,8 @@ process SINGLE_CELL_QC { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: path(tabs) diff --git a/modules/local/enchantr/validate_input.nf b/modules/local/enchantr/validate_input.nf index 135e85a1..db8ab075 100644 --- a/modules/local/enchantr/validate_input.nf +++ b/modules/local/enchantr/validate_input.nf @@ -10,8 +10,8 @@ process VALIDATE_INPUT { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: file samplesheet diff --git a/modules/local/reveal/add_meta_to_tab.nf b/modules/local/reveal/add_meta_to_tab.nf index 32b0d514..8413cebc 100644 --- a/modules/local/reveal/add_meta_to_tab.nf +++ b/modules/local/reveal/add_meta_to_tab.nf @@ -7,8 +7,8 @@ process ADD_META_TO_TAB { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" cache 'deep' // Without 'deep' this process would run when using -resume diff --git a/modules/local/reveal/filter_junction_mod3.nf b/modules/local/reveal/filter_junction_mod3.nf index cfe04a3d..f792aca2 100644 --- a/modules/local/reveal/filter_junction_mod3.nf +++ b/modules/local/reveal/filter_junction_mod3.nf @@ -7,8 +7,8 @@ process FILTER_JUNCTION_MOD3 { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: tuple val(meta), path(tab) // sequence tsv in AIRR format diff --git a/modules/local/reveal/filter_quality.nf b/modules/local/reveal/filter_quality.nf index bc05bb3f..aa803279 100644 --- a/modules/local/reveal/filter_quality.nf +++ b/modules/local/reveal/filter_quality.nf @@ -7,8 +7,8 @@ process FILTER_QUALITY { error "nf-core/airrflow currently does not support Conda. Please use a container profile instead." } container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'docker.io/immcantation/airrflow:4.4.0': - 'docker.io/immcantation/airrflow:4.4.0' }" + 'docker.io/immcantation/airrflow:4.0.0': + 'docker.io/immcantation/airrflow:4.0.0' }" input: tuple val(meta), path(tab) // sequence tsv in AIRR format From 40038918cbb341ffae630bec2d98b997377d74b4 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Mon, 22 Apr 2024 18:32:07 -0400 Subject: [PATCH 20/24] revert changes test full --- conf/test_full.config | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/conf/test_full.config b/conf/test_full.config index 75b8b7b9..67d37c0b 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -9,7 +9,6 @@ ---------------------------------------------------------------------------------------- */ -includeConfig 'nebnext_umi_bcr.config' params { config_profile_name = 'Full test profile' @@ -17,8 +16,38 @@ params { // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/metadata_pcr_umi_airr_300.tsv' + cprimers = 's3://ngi-igenomes/test-data/airrflow/pcr_umi/cprimers.fasta' + vprimers = 's3://ngi-igenomes/test-data/airrflow/pcr_umi/vprimers.fasta' imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' lineage_trees = true + + // Other params + library_generation_method = 'specific_pcr_umi' + cprimer_position = 'R1' + umi_length = 15 + umi_start = 0 + umi_position = 'R1' +} + +process { + withName:DOWSER_LINEAGES{ + ext.args = ['minseq':5, + 'traits':'isotype', + 'tips':'isotype'] + } + + withName:DEFINE_CLONES_COMPUTE{ + ext.args = ['outname':'', 'model':'hierarchical', + 'method':'nt', 'linkage':'single', + 'min_n':30, 'isotype_column':'c_primer'] + + } + withName:DEFINE_CLONES_REPORT{ + ext.args = ['outname':'', 'model':'hierarchical', + 'method':'nt', 'linkage':'single', + 'min_n':30, 'isotype_column':'c_primer'] + + } } From a376dc2abb8a0606c6bf92a62d309b7b6d492e94 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Mon, 22 Apr 2024 19:19:45 -0400 Subject: [PATCH 21/24] Deprecate igblast_base and imgtdb_base params --- CHANGELOG.md | 2 ++ README.md | 2 +- conf/test.config | 4 +-- conf/test_assembled_hs.config | 4 +-- ...est_assembled_immcantation_devel_hs.config | 4 +-- ...est_assembled_immcantation_devel_mm.config | 4 +-- conf/test_assembled_mm.config | 4 +-- conf/test_clontech_umi.config | 4 +-- conf/test_full.config | 4 +-- conf/test_nebnext_umi.config | 4 +-- conf/test_no_umi.config | 4 +-- conf/test_nocluster.config | 4 +-- conf/test_raw_immcantation_devel.config | 4 +-- conf/test_tcr.config | 4 +-- docs/output.md | 4 +-- .../local/changeo/changeo_creategermlines.nf | 4 +-- modules/local/changeo/changeo_makedb.nf | 5 ++- modules/local/enchantr/define_clones.nf | 4 +-- modules/local/enchantr/remove_chimeric.nf | 2 +- modules/local/fetch_databases.nf | 2 +- nextflow.config | 4 +-- nextflow_schema.json | 10 +++--- subworkflows/local/bulk_qc_and_filter.nf | 6 ++-- subworkflows/local/clonal_analysis.nf | 6 ++-- subworkflows/local/databases.nf | 36 +++++++++---------- subworkflows/local/vdj_annotation.nf | 8 ++--- workflows/airrflow.nf | 6 ++-- 27 files changed, 75 insertions(+), 74 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 627c2c0e..42b92beb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - `--skip_lineage_trees` is now deprecated in favor of `--lineage_trees`. Lineage trees are skipped by default. - `--igphyml` parameter is deprecated in favor of `--lineage_tree_exec`. All lineage tree building software part of Dowser are now supported. +- `--igblast_base` is deprecated in favor of `--reference_igblast`. +- `--imgtdb_base` is depracated in favor of `--reference_fasta`. ## [3.3.0] - 2024-03-31 Confringo diff --git a/README.md b/README.md index bb8a9302..ef1fd759 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ nf-core/airrflow allows the end-to-end processing of BCR and TCR bulk and single 2. V(D)J annotation and filtering (bulk and single-cell) -- Assign gene segments with `IgBlast` using the IMGT database (`Change-O AssignGenes`). +- Assign gene segments with `IgBlast` using a germline reference (`Change-O AssignGenes`). - Annotate alignments in AIRR format (`Change-O MakeDB`) - Filter by alignment quality (locus matching v_call chain, min 200 informative positions, max 10% N nucleotides) - Filter productive sequences (`Change-O ParseDB split`) diff --git a/conf/test.config b/conf/test.config index 71a424d6..4d6b1c40 100644 --- a/conf/test.config +++ b/conf/test.config @@ -23,8 +23,8 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/Metadata_test_airr.tsv' cprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/C_primers.fasta' vprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/V_primers.fasta' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' mode = 'fastq' diff --git a/conf/test_assembled_hs.config b/conf/test_assembled_hs.config index dd1b6c52..bb6caa19 100644 --- a/conf/test_assembled_hs.config +++ b/conf/test_assembled_hs.config @@ -19,8 +19,8 @@ params { // Input data mode = 'assembled' input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-reveal/test_assembled_metadata_hs.tsv' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' reassign = true productive_only = true diff --git a/conf/test_assembled_immcantation_devel_hs.config b/conf/test_assembled_immcantation_devel_hs.config index f924f66c..da5c8d56 100644 --- a/conf/test_assembled_immcantation_devel_hs.config +++ b/conf/test_assembled_immcantation_devel_hs.config @@ -19,8 +19,8 @@ params { // Input data mode = 'assembled' input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-reveal/test_assembled_metadata_hs.tsv' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' reassign = true productive_only = true diff --git a/conf/test_assembled_immcantation_devel_mm.config b/conf/test_assembled_immcantation_devel_mm.config index f7fa1e33..33fd5bcb 100644 --- a/conf/test_assembled_immcantation_devel_mm.config +++ b/conf/test_assembled_immcantation_devel_mm.config @@ -19,8 +19,8 @@ params { // Input data mode = 'assembled' input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-reveal/test_assembled_metadata_mm.tsv' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' reassign = true productive_only = true diff --git a/conf/test_assembled_mm.config b/conf/test_assembled_mm.config index fe6fd57b..69ad5052 100644 --- a/conf/test_assembled_mm.config +++ b/conf/test_assembled_mm.config @@ -19,8 +19,8 @@ params { // Input data mode = 'assembled' input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-reveal/test_assembled_metadata_mm.tsv' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' reassign = true productive_only = true diff --git a/conf/test_clontech_umi.config b/conf/test_clontech_umi.config index 552a7434..1d64ad1c 100644 --- a/conf/test_clontech_umi.config +++ b/conf/test_clontech_umi.config @@ -23,8 +23,8 @@ params { // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-clontech/samplesheet.tsv' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' clonal_threshold = 0.1 diff --git a/conf/test_full.config b/conf/test_full.config index 67d37c0b..7e3c131a 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -18,8 +18,8 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/metadata_pcr_umi_airr_300.tsv' cprimers = 's3://ngi-igenomes/test-data/airrflow/pcr_umi/cprimers.fasta' vprimers = 's3://ngi-igenomes/test-data/airrflow/pcr_umi/vprimers.fasta' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' lineage_trees = true diff --git a/conf/test_nebnext_umi.config b/conf/test_nebnext_umi.config index c96b16b3..76c9bbea 100644 --- a/conf/test_nebnext_umi.config +++ b/conf/test_nebnext_umi.config @@ -24,8 +24,8 @@ params { // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-neb/samplesheet.tsv' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' clonal_threshold = 0.1 diff --git a/conf/test_no_umi.config b/conf/test_no_umi.config index e17a6526..8800b20c 100644 --- a/conf/test_no_umi.config +++ b/conf/test_no_umi.config @@ -30,8 +30,8 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-no-umi/Metadata_test-no-umi_airr.tsv' cprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-no-umi/Greiff2014_CPrimers.fasta' vprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-no-umi/Greiff2014_VPrimers.fasta' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' } diff --git a/conf/test_nocluster.config b/conf/test_nocluster.config index 469de7b8..aabccb9b 100644 --- a/conf/test_nocluster.config +++ b/conf/test_nocluster.config @@ -23,8 +23,8 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/Metadata_test_airr.tsv' cprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/C_primers.fasta' vprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/V_primers.fasta' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' mode = 'fastq' diff --git a/conf/test_raw_immcantation_devel.config b/conf/test_raw_immcantation_devel.config index 7f362bdd..11b8ff69 100644 --- a/conf/test_raw_immcantation_devel.config +++ b/conf/test_raw_immcantation_devel.config @@ -24,8 +24,8 @@ params { cprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/C_primers.fasta' vprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-bcr/V_primers.fasta' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' mode = 'fastq' diff --git a/conf/test_tcr.config b/conf/test_tcr.config index 5010c010..5af84ee7 100644 --- a/conf/test_tcr.config +++ b/conf/test_tcr.config @@ -31,8 +31,8 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-tcr/TCR_metadata_airr.tsv' cprimers = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-tcr/cprimers.fasta' race_linker = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/testdata-tcr/linker.fasta' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' } diff --git a/docs/output.md b/docs/output.md index 1dedb05c..532bdf80 100644 --- a/docs/output.md +++ b/docs/output.md @@ -245,7 +245,7 @@ generate a `.fasta` file from the rearrangement table. -Assign genes with Igblast, using the IMGT database is performed by the [AssignGenes](https://changeo.readthedocs.io/en/stable/examples/igblast.html#running-igblast) command of the Change-O tool from the Immcantation Framework. +Assign genes with Igblast, using the a germline reference is performed by the [AssignGenes](https://changeo.readthedocs.io/en/stable/examples/igblast.html#running-igblast) command of the Change-O tool from the Immcantation Framework. ### Make database from assigned genes @@ -482,7 +482,7 @@ Parsing the logs from the previous processes. Summary of the number of sequences Copy of the downloaded IMGT database by the process `fetch_databases`, used for the gene assignment step. -If databases are provided with `--imgtdb_base` and `--igblast_base` this folder will not be present. +If databases are provided with `--reference_fasta` and `--reference_igblast` this folder will not be present. ## MultiQC diff --git a/modules/local/changeo/changeo_creategermlines.nf b/modules/local/changeo/changeo_creategermlines.nf index d424377a..35cf76d4 100644 --- a/modules/local/changeo/changeo_creategermlines.nf +++ b/modules/local/changeo/changeo_creategermlines.nf @@ -11,7 +11,7 @@ process CHANGEO_CREATEGERMLINES { input: tuple val(meta), path(tab) // sequence tsv table in AIRR format - path(imgt_base) // imgt db + path(reference_fasta) // reference fasta output: tuple val(meta), path("*germ-pass.tsv"), emit: tab @@ -22,7 +22,7 @@ process CHANGEO_CREATEGERMLINES { def args = task.ext.args ?: '' """ CreateGermlines.py -d ${tab} \\ - -r ${imgt_base}/${meta.species}/vdj/ \\ + -r ${reference_fasta}/${meta.species}/vdj/ \\ -g dmask --format airr \\ --log ${meta.id}.log --outname ${meta.id} $args > ${meta.id}_create-germlines_command_log.txt ParseLog.py -l ${meta.id}.log -f ID V_CALL D_CALL J_CALL diff --git a/modules/local/changeo/changeo_makedb.nf b/modules/local/changeo/changeo_makedb.nf index a71d6282..4862ba86 100644 --- a/modules/local/changeo/changeo_makedb.nf +++ b/modules/local/changeo/changeo_makedb.nf @@ -6,14 +6,13 @@ process CHANGEO_MAKEDB { conda "bioconda::changeo=1.3.0 bioconda::igblast=1.22.0 conda-forge::wget=1.20.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - //TODO: update mulled containers when available 'https://depot.galaxyproject.org/singularity/mulled-v2-7d8e418eb73acc6a80daea8e111c94cf19a4ecfd:a9ee25632c9b10bbb012da76e6eb539acca8f9cd-1' : 'biocontainers/mulled-v2-7d8e418eb73acc6a80daea8e111c94cf19a4ecfd:a9ee25632c9b10bbb012da76e6eb539acca8f9cd-1' }" input: tuple val(meta), path(reads) // reads in fasta format path(igblast) // igblast fasta from ch_igblast_db_for_process_igblast.mix(ch_igblast_db_for_process_igblast_mix).collect() - path(imgt_base) + path(reference_fasta) output: tuple val(meta), path("*db-pass.tsv"), emit: tab //sequence table in AIRR format @@ -24,7 +23,7 @@ process CHANGEO_MAKEDB { def args = task.ext.args ?: '' """ MakeDb.py igblast -i $igblast -s $reads -r \\ - ${imgt_base}/${meta.species.toLowerCase()}/vdj/ \\ + ${reference_fasta}/${meta.species.toLowerCase()}/vdj/ \\ $args \\ --outname ${meta.id} > ${meta.id}_makedb_command_log.txt diff --git a/modules/local/enchantr/define_clones.nf b/modules/local/enchantr/define_clones.nf index 055c212a..64b8e7df 100644 --- a/modules/local/enchantr/define_clones.nf +++ b/modules/local/enchantr/define_clones.nf @@ -31,7 +31,7 @@ process DEFINE_CLONES { input: tuple val(meta), path(tabs) // meta, sequence tsv in AIRR format val threshold - path imgt_base + path reference_fasta path repertoires_samplesheet output: @@ -53,7 +53,7 @@ process DEFINE_CLONES { """ Rscript -e "enchantr::enchantr_report('define_clones', \\ report_params=list('input'='${input}', \\ - 'imgt_db'='${imgt_base}', \\ + 'imgt_db'='${reference_fasta}', \\ 'species'='auto', \\ 'cloneby'='${params.cloneby}', \\ 'outputby'='${params.cloneby}', \\ diff --git a/modules/local/enchantr/remove_chimeric.nf b/modules/local/enchantr/remove_chimeric.nf index e6c73651..94805169 100644 --- a/modules/local/enchantr/remove_chimeric.nf +++ b/modules/local/enchantr/remove_chimeric.nf @@ -15,7 +15,7 @@ process REMOVE_CHIMERIC { input: tuple val(meta), path(tab) // sequence tsv in AIRR format - path(imgt_base) + path(reference_fasta) output: tuple val(meta), path("*chimera-pass.tsv"), emit: tab // sequence tsv in AIRR format diff --git a/modules/local/fetch_databases.nf b/modules/local/fetch_databases.nf index 2deb3cb4..07853277 100644 --- a/modules/local/fetch_databases.nf +++ b/modules/local/fetch_databases.nf @@ -10,7 +10,7 @@ process FETCH_DATABASES { output: path("igblast_base"), emit: igblast - path("imgtdb_base"), emit: imgt + path("imgtdb_base"), emit: reference_fasta path "versions.yml" , emit: versions path("igblast_base/database/imgt_human_ig_v.ndb"), emit: igblast_human_ig_v path("igblast_base/database/imgt_human_ig_d.ndb"), emit: igblast_human_ig_d diff --git a/nextflow.config b/nextflow.config index a5917cfa..00c53278 100644 --- a/nextflow.config +++ b/nextflow.config @@ -81,8 +81,8 @@ params { // ----------------------- productive_only = true reassign = true - igblast_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' - imgtdb_base = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' + reference_igblast = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/igblast_base.zip' + reference_fasta = 'https://raw.githubusercontent.com/nf-core/test-datasets/airrflow/database-cache/imgtdb_base.zip' fetch_imgt = false save_databases = true isotype_column = 'c_call' diff --git a/nextflow_schema.json b/nextflow_schema.json index dc75590a..cc33f8ff 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -338,16 +338,16 @@ "description": "Save databases so you can use the cache in future runs.", "fa_icon": "fas fa-file-download" }, - "imgtdb_base": { + "reference_fasta": { "type": "string", - "description": "Path to the cached IMGT database.", - "help_text": "By default, we provide a pre-downloaded version of the IMGT database. It is also possible to provide a custom IMGT reference database. To fetch a fresh version of IMGT, set the `--fetch_imgt` parameter instead.", + "description": "Path to the germline reference fasta.", + "help_text": "By default, we provide a pre-downloaded version of the IMGT database. It is also possible to provide a custom reference fasta database. To fetch a fresh version of IMGT, set the `--fetch_imgt` parameter instead.", "fa_icon": "fas fa-database" }, - "igblast_base": { + "reference_igblast": { "type": "string", "description": "Path to the cached igblast database.", - "help_text": "By default, we provide a pre-downloaded version of the IMGT database. It is also possible to provide a custom IMGT reference database. To fetch a fresh version of IMGT, set the `--fetch_imgt` parameter instead.", + "help_text": "By default, we provide a pre-downloaded version of the IMGT database. It is also possible to provide a custom reference fasta database. To fetch a fresh version of IMGT, set the `--fetch_imgt` parameter instead.", "fa_icon": "fas fa-database" }, "fetch_imgt": { diff --git a/subworkflows/local/bulk_qc_and_filter.nf b/subworkflows/local/bulk_qc_and_filter.nf index 34b082d1..326fbe34 100644 --- a/subworkflows/local/bulk_qc_and_filter.nf +++ b/subworkflows/local/bulk_qc_and_filter.nf @@ -7,7 +7,7 @@ workflow BULK_QC_AND_FILTER { take: ch_repertoire // tuple [meta, repertoire_tab] - ch_imgt + ch_reference_fasta main: @@ -20,7 +20,7 @@ workflow BULK_QC_AND_FILTER { // Create germlines (not --cloned) CHANGEO_CREATEGERMLINES( ch_repertoire, - ch_imgt.collect() + ch_reference_fasta.collect() ) ch_logs = ch_logs.mix(CHANGEO_CREATEGERMLINES.out.logs) ch_versions = ch_versions.mix(CHANGEO_CREATEGERMLINES.out.versions) @@ -28,7 +28,7 @@ workflow BULK_QC_AND_FILTER { // Remove chimera REMOVE_CHIMERIC( CHANGEO_CREATEGERMLINES.out.tab, - ch_imgt.collect() + ch_reference_fasta.collect() ) ch_logs = ch_logs.mix(REMOVE_CHIMERIC.out.logs) ch_versions = ch_versions.mix(REMOVE_CHIMERIC.out.versions) diff --git a/subworkflows/local/clonal_analysis.nf b/subworkflows/local/clonal_analysis.nf index 176783da..68237551 100644 --- a/subworkflows/local/clonal_analysis.nf +++ b/subworkflows/local/clonal_analysis.nf @@ -7,7 +7,7 @@ include { DOWSER_LINEAGES } from '../../modules/local/enchantr/dowser_lineages' workflow CLONAL_ANALYSIS { take: ch_repertoire - ch_imgt + ch_reference_fasta ch_logo main: @@ -76,7 +76,7 @@ workflow CLONAL_ANALYSIS { DEFINE_CLONES_COMPUTE( ch_define_clones, clone_threshold.collect(), - ch_imgt.collect(), + ch_reference_fasta.collect(), [] ) @@ -102,7 +102,7 @@ workflow CLONAL_ANALYSIS { DEFINE_CLONES_REPORT( ch_all_repertoires_cloned, clone_threshold.collect(), - ch_imgt.collect(), + ch_reference_fasta.collect(), ch_all_repertoires_cloned_samplesheet ) ch_versions = DEFINE_CLONES_REPORT.out.versions diff --git a/subworkflows/local/databases.nf b/subworkflows/local/databases.nf index 594b340e..f5788e6e 100644 --- a/subworkflows/local/databases.nf +++ b/subworkflows/local/databases.nf @@ -1,6 +1,6 @@ include { FETCH_DATABASES } from '../../modules/local/fetch_databases' include { UNZIP_DB as UNZIP_IGBLAST } from '../../modules/local/unzip_db' -include { UNZIP_DB as UNZIP_IMGT } from '../../modules/local/unzip_db' +include { UNZIP_DB as UNZIP_FASTA } from '../../modules/local/unzip_db' workflow DATABASES { @@ -11,44 +11,44 @@ workflow DATABASES { // FETCH DATABASES if( !params.fetch_imgt ){ - if (params.igblast_base.endsWith(".zip")) { - Channel.fromPath("${params.igblast_base}") - .ifEmpty{ error "IGBLAST DB not found: ${params.igblast_base}" } + if (params.reference_igblast.endsWith(".zip")) { + Channel.fromPath("${params.reference_igblast}") + .ifEmpty{ error "IGBLAST DB not found: ${params.reference_igblast}" } .set { ch_igblast_zipped } UNZIP_IGBLAST( ch_igblast_zipped.collect() ) ch_igblast = UNZIP_IGBLAST.out.unzipped ch_versions = ch_versions.mix(UNZIP_IGBLAST.out.versions) } else { - Channel.fromPath("${params.igblast_base}") - .ifEmpty { error "IGBLAST DB not found: ${params.igblast_base}" } + Channel.fromPath("${params.reference_igblast}") + .ifEmpty { error "IGBLAST DB not found: ${params.reference_igblast}" } .set { ch_igblast } } } if( !params.fetch_imgt ){ - if (params.imgtdb_base.endsWith(".zip")) { - Channel.fromPath("${params.imgtdb_base}") - .ifEmpty{ error "IMGTDB not found: ${params.imgtdb_base}" } - .set { ch_imgt_zipped } - UNZIP_IMGT( ch_imgt_zipped.collect() ) - ch_imgt = UNZIP_IMGT.out.unzipped - ch_versions = ch_versions.mix(UNZIP_IMGT.out.versions) + if (params.reference_fasta.endsWith(".zip")) { + Channel.fromPath("${params.reference_fasta}") + .ifEmpty{ error "IMGTDB not found: ${params.reference_fasta}" } + .set { ch_reference_fasta_zipped } + UNZIP_FASTA( ch_reference_fasta_zipped.collect() ) + ch_reference_fasta = UNZIP_FASTA.out.unzipped + ch_versions = ch_versions.mix(UNZIP_FASTA.out.versions) } else { - Channel.fromPath("${params.imgtdb_base}") - .ifEmpty { error "IMGT DB not found: ${params.imgtdb_base}" } - .set { ch_imgt } + Channel.fromPath("${params.reference_fasta}") + .ifEmpty { error "IMGT DB not found: ${params.reference_fasta}" } + .set { ch_reference_fasta } } } if (params.fetch_imgt) { FETCH_DATABASES() ch_igblast = FETCH_DATABASES.out.igblast - ch_imgt = FETCH_DATABASES.out.imgt + ch_reference_fasta = FETCH_DATABASES.out.reference_fasta ch_versions = ch_versions.mix(FETCH_DATABASES.out.versions) } emit: versions = ch_versions - imgt = ch_imgt + reference_fasta = ch_reference_fasta igblast = ch_igblast } diff --git a/subworkflows/local/vdj_annotation.nf b/subworkflows/local/vdj_annotation.nf index 4ac2b9df..692320ec 100644 --- a/subworkflows/local/vdj_annotation.nf +++ b/subworkflows/local/vdj_annotation.nf @@ -13,7 +13,7 @@ workflow VDJ_ANNOTATION { ch_fasta // [meta, fasta] ch_validated_samplesheet ch_igblast - ch_imgt + ch_reference_fasta main: ch_versions = Channel.empty() @@ -30,7 +30,7 @@ workflow VDJ_ANNOTATION { CHANGEO_MAKEDB ( CHANGEO_ASSIGNGENES.out.fasta, CHANGEO_ASSIGNGENES.out.blast, - ch_imgt.collect() + ch_reference_fasta.collect() ) ch_logs = ch_logs.mix(CHANGEO_MAKEDB.out.logs) ch_versions = ch_versions.mix(CHANGEO_MAKEDB.out.versions) @@ -78,8 +78,8 @@ workflow VDJ_ANNOTATION { emit: versions = ch_versions repertoire = ADD_META_TO_TAB.out.tab - imgt = ch_imgt - igblast = ch_igblast + reference_fasta = ch_reference_fasta + reference_igblast = ch_igblast changeo_makedb_logs = ch_assignment_logs logs = ch_logs diff --git a/workflows/airrflow.nf b/workflows/airrflow.nf index 6b2eb589..bc6b7924 100644 --- a/workflows/airrflow.nf +++ b/workflows/airrflow.nf @@ -175,7 +175,7 @@ workflow AIRRFLOW { ch_fasta, ch_validated_samplesheet.collect(), DATABASES.out.igblast.collect(), - DATABASES.out.imgt.collect() + DATABASES.out.reference_fasta.collect() ) ch_versions = ch_versions.mix( VDJ_ANNOTATION.out.versions ) @@ -192,7 +192,7 @@ workflow AIRRFLOW { BULK_QC_AND_FILTER( ch_repertoire_by_processing.bulk, - VDJ_ANNOTATION.out.imgt.collect() + VDJ_ANNOTATION.out.reference_fasta.collect() ) ch_versions = ch_versions.mix( BULK_QC_AND_FILTER.out.versions ) @@ -215,7 +215,7 @@ workflow AIRRFLOW { // Clonal analysis CLONAL_ANALYSIS( ch_repertoires_for_clones, - VDJ_ANNOTATION.out.imgt.collect(), + VDJ_ANNOTATION.out.reference_fasta.collect(), ch_report_logo_img.collect().ifEmpty([]) ) ch_versions = ch_versions.mix( CLONAL_ANALYSIS.out.versions) From e598df31688cf58b8007b24d0e742b2e5d81cf89 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Mon, 22 Apr 2024 20:54:57 -0400 Subject: [PATCH 22/24] fix full size test --- conf/test_full.config | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/conf/test_full.config b/conf/test_full.config index 7e3c131a..0ac79d53 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -29,6 +29,7 @@ params { umi_length = 15 umi_start = 0 umi_position = 'R1' + isotype_column = 'c_primer' } process { @@ -41,13 +42,13 @@ process { withName:DEFINE_CLONES_COMPUTE{ ext.args = ['outname':'', 'model':'hierarchical', 'method':'nt', 'linkage':'single', - 'min_n':30, 'isotype_column':'c_primer'] + 'min_n':30] } withName:DEFINE_CLONES_REPORT{ ext.args = ['outname':'', 'model':'hierarchical', 'method':'nt', 'linkage':'single', - 'min_n':30, 'isotype_column':'c_primer'] + 'min_n':30] } } From 55c0157468dbcf07a3a71247be87ccfc778bb903 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Mon, 22 Apr 2024 20:59:45 -0400 Subject: [PATCH 23/24] fix test full --- conf/test_full.config | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/test_full.config b/conf/test_full.config index 67d37c0b..c4ed7122 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -29,6 +29,8 @@ params { umi_length = 15 umi_start = 0 umi_position = 'R1' + + isotype_column = 'c_primer' } process { @@ -47,7 +49,7 @@ process { withName:DEFINE_CLONES_REPORT{ ext.args = ['outname':'', 'model':'hierarchical', 'method':'nt', 'linkage':'single', - 'min_n':30, 'isotype_column':'c_primer'] + 'min_n':30] } } From 553f317ee148e78372858f5ca9c0efbf9d8d0960 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Tue, 23 Apr 2024 09:07:35 -0400 Subject: [PATCH 24/24] update unzip fasta name --- subworkflows/local/databases.nf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/databases.nf b/subworkflows/local/databases.nf index f5788e6e..08e59108 100644 --- a/subworkflows/local/databases.nf +++ b/subworkflows/local/databases.nf @@ -1,6 +1,6 @@ include { FETCH_DATABASES } from '../../modules/local/fetch_databases' include { UNZIP_DB as UNZIP_IGBLAST } from '../../modules/local/unzip_db' -include { UNZIP_DB as UNZIP_FASTA } from '../../modules/local/unzip_db' +include { UNZIP_DB as UNZIP_REFERENCE_FASTA } from '../../modules/local/unzip_db' workflow DATABASES { @@ -30,9 +30,9 @@ workflow DATABASES { Channel.fromPath("${params.reference_fasta}") .ifEmpty{ error "IMGTDB not found: ${params.reference_fasta}" } .set { ch_reference_fasta_zipped } - UNZIP_FASTA( ch_reference_fasta_zipped.collect() ) - ch_reference_fasta = UNZIP_FASTA.out.unzipped - ch_versions = ch_versions.mix(UNZIP_FASTA.out.versions) + UNZIP_REFERENCE_FASTA( ch_reference_fasta_zipped.collect() ) + ch_reference_fasta = UNZIP_REFERENCE_FASTA.out.unzipped + ch_versions = ch_versions.mix(UNZIP_REFERENCE_FASTA.out.versions) } else { Channel.fromPath("${params.reference_fasta}") .ifEmpty { error "IMGT DB not found: ${params.reference_fasta}" }