From fb8761afb250da7fae8313dadbc1495a48d3c442 Mon Sep 17 00:00:00 2001 From: Phil Ewels Date: Fri, 16 Aug 2024 00:03:49 +0200 Subject: [PATCH 1/8] Conda remove defaults channel - structural changes (#5847) --- .github/env-template.yml | 1 - .github/workflows/test.yml | 4 ++-- modules/environment-schema.json | 5 +---- subworkflows/nf-core/utils_nextflow_pipeline/main.nf | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/env-template.yml b/.github/env-template.yml index bcd3a8b1c63..3cebeff05bf 100644 --- a/.github/env-template.yml +++ b/.github/env-template.yml @@ -1,4 +1,3 @@ channels: - conda-forge - bioconda - - defaults diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e3977dfec5d..384adf14132 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -452,7 +452,7 @@ jobs: uses: conda-incubator/setup-miniconda@a4260408e20b96e80095f42ff7f1a15b27dd94ca # v3 with: miniconda-version: "latest" - channels: conda-forge,bioconda,defaults + channels: conda-forge,bioconda python-version: ${{ matrix.python-version }} - name: Conda setup @@ -693,7 +693,7 @@ jobs: with: miniconda-version: "latest" auto-update-conda: true - channels: conda-forge,bioconda,defaults + channels: conda-forge,bioconda - name: Conda setup run: | diff --git a/modules/environment-schema.json b/modules/environment-schema.json index ca7bdf6c13e..b246706e422 100644 --- a/modules/environment-schema.json +++ b/modules/environment-schema.json @@ -16,12 +16,9 @@ }, { "enum": ["bioconda"] - }, - { - "enum": ["defaults"] } ], - "minItems": 3 + "minItems": 2 }, "dependencies": { "type": "array", diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index ac31f28f660..e770d91b974 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -102,7 +102,7 @@ def checkCondaChannels() { // Check that all channels are present // This channel list is ordered by required channel priority. - def required_channels_in_order = ['conda-forge', 'bioconda', 'defaults'] + def required_channels_in_order = ['conda-forge', 'bioconda'] def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean // Check that they are in the right order From bb92ca23fc0e8f37ec507459648f8162a87edf72 Mon Sep 17 00:00:00 2001 From: Phil Ewels Date: Tue, 17 Sep 2024 15:02:26 +0200 Subject: [PATCH 2/8] Update `branch_update_staging` (#6657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added nf-test for seroba/run (#6372) * Added nf-test for sequenzautils/gcwiggle (#6373) * Added nf-test for sequenzautils/gcwiggle * Added stub and locked python version as per container * Added nf-test for segemehl/index (#6375) * Added nf-test for raven (#6378) * Added nf-test for scramble/clusteridentifier (#6376) * Added nf-test for pydamage/analyze (#6379) * Added nf-test for spring/compress (#6366) * Added nf-test for survivor/merge (#6364) * Added nf-test for gatk4/splitintervals (#6302) * Added nf-test for gatk4/splitintervals * Added stub test * Added nf-test for picard/scatterintervalsbyns (#6291) * Added nf-test for picard/scatterintervalsbyns * Added stub test * Update pre-commit hook python-jsonschema/check-jsonschema to v0.29.2 (#5938) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Added nf-test for pureclip (#6380) * Added nf-test for pureclip * Updated power assertion * Added nf-test for snippy/run (#6368) * Added nf-test for snippy/run * Explicitly tell snippy how much RAM we have * Only snap for vcf_csi * Actually update snapshot --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * remove defaults from utils_nextflow_pipeline (again) (#6382) * Swap samtools collatefastq to nf-test (#5754) * Swap to nftest * Update output channels to not snap empty ones * Add too many stubs * Update stub definition * Add nf-test to metaphlan (#6139) * add nf-test to metaphlan * add config file * Remove metaphlan/metaphlan form pytest from config * Remove ypyest files * Update modules/nf-core/metaphlan/metaphlan/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/metaphlan/metaphlan/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/metaphlan/metaphlan/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/metaphlan/metaphlan/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/metaphlan/metaphlan/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/metaphlan/metaphlan/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * update nf-test * update snapshot for metaphlan subworkflow * update metaphaln/mergemetaphlan * Update metaphlan/metaphlan assertions * Add stub and fix tests * Update subworkflow * Try adding docker.runOptions * Actually commit the second config * Try adding no-same-owner * add config to docker * remove enable docker from config * Update snapshot --------- Co-authored-by: James A. Fellows Yates Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * added trio options (#6164) * added trio options * added trio options * added trio options * added trio options * added trio options * added additional optional trio output * add addtional trio output in meta * remove pytest * removed redundant channles * Update modules/nf-core/merquryfk/merquryfk/main.nf Co-authored-by: Mahesh Binzer-Panchal * Update modules/nf-core/merquryfk/merquryfk/meta.yml Co-authored-by: Mahesh Binzer-Panchal * Update modules/nf-core/merquryfk/merquryfk/main.nf Co-authored-by: Mahesh Binzer-Panchal * Update modules/nf-core/merquryfk/merquryfk/main.nf Co-authored-by: Mahesh Binzer-Panchal * Update modules/nf-core/merquryfk/merquryfk/meta.yml Co-authored-by: Mahesh Binzer-Panchal * some changes * corrected meta * removed environment.yml --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Mahesh Binzer-Panchal * New sections for further module info (#5876) new sections for further module info * Cafe (#6209) * First commit * Complete main.nf * meta.yml * First try test * Failed nf tests * working test * working tests * Make Prettier * fix * With snapshot * sn * fix doi * Add new emitted results and snapshot a result that does not have a time stamp or random model likelihood * Not working with cafe snapshot * Working tests * Add new output variables to meta.yml * Update modules/nf-core/cafe/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add meta id (not working) * revert local files checks * back to s3 * Without channel of * Attempt to input data in test more verbose. Still not working * remove def * Fix version output in stub * With data on test-datasets * Fix test with variable pvalues, which was not reproducible * Update modules/nf-core/cafe/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/cafe/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add paths to new modules location data * Update modules/nf-core/cafe/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Fix input test data paths --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for dshbio/exportsegments (#6398) * Added nf-test for dshbio/filtergff3 (#6399) * Added nf-test for bioawk (#6384) * Added nf-test for snpdists (#6417) * Added nf-test for slimfastq (#6418) * Added nf-test for snpsift/split (#6416) * Updated nf-test for strelka/germline (#6415) Updated nf-test for strelka/germline * Added nf-test for svtyper/svtyper (#6414) * Added nf-test for cdhit/cdhitest (#6388) * Added nf-test for emboss/cons (#6402) * Added nf-test for eido/validate (#6401) * Added nf-test for eido/validate * Fixed assertions * Added nf-test for vg/deconstruct (#6410) * Added nf-test for wgsim (#6409) * Added nf-test for gamma/gamma (#6408) * Added nf-test for ffq (#6407) * Added nf-test for vcflib/vcfbreakmulti (#6411) * Added nf-test for cnvkit/access (#6391) * Added nf-test for cooler/digest (#6395) * Added nf-test for clonalframeml (#6390) * Added nf-test for expansionhunterdenovo/profile (#6405) * Foldmason (#6355) * Add foldmason * Add test * fix prettier * fix prettier * Update modules/nf-core/foldmason/easymsa/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/foldmason/easymsa/main.nf Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/foldmason/easymsa/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update main.nf * Update main.nf.test * Update meta.yml * Update modules/nf-core/foldmason/easymsa/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/foldmason/easymsa/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add stub run tests --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add tbi index as an output to lofreq callparallel (#6427) Add tbi as an output to lofreq callparallel Co-authored-by: fmartinez * Update lofreq callparallel (#6429) * Add tbi as an output to lofreq callparallel * Update nf-test in lofreq callparallel * Update modules/nf-core/lofreq/callparallel/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/lofreq/callparallel/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/lofreq/callparallel/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update nf-test in lofreq callparallel * Update modules/nf-core/lofreq/callparallel/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/lofreq/callparallel/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update nf-test in lofreq callparallel --------- Co-authored-by: fmartinez Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * remove slashy strings from multiqc (#6431) * Added nf-test for cooler/makebins (#6396) * Added nf-test for seacr/callpeak (#6421) * Added nf-test for ectyper (#6400) * Added nf-test for shasum (#6419) * Fastqfilter (#6235) * First commit * Completed nf-test * Cleaned main.nf * Removed line in meta.yml * Modified meta.yml * Update modules/nf-core/vsearch/fastqfilter/main.nf Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/vsearch/fastqfilter/main.nf Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/vsearch/fastqfilter/main.nf Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added snapshot for lines in log test.log * made meta.yml prettier * Simplified version extraction --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for preseq/ccurve (#6423) * Added nf-test for emmtyper (#6403) * Added nf-test for cnvpytor/importreaddepth (#6394) * Added nf-test for cnvpytor/importreaddepth * Updated tool ver and snapshot * Locked numpy version * Added nf-test for cnvpytor/callcnvs (#6393) * Added nf-test for circexplorer2/annotate (#6389) * Added nf-test for plink/bcf (#6425) * Added nf-test for biobambam/bammerge (#6385) * Added nf-test for fasttree (#6406) * Added nf-test for fasttree * Update modules/nf-core/fasttree/meta.yml * Update modules/nf-core/fasttree/meta.yml --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for bwameth/index (#6387) * Added nf-test for bwameth/index * Updated tool ver and snapshot * Update modules/nf-core/bwameth/index/tests/main.nf.test --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for epang/place (#6404) * Added nf-test for epang/place * Fixed assertion * Added stub and updated power assertion * Added nf-test for biscuit/vcf2bed (#6434) * Added nf-test for sickle (#6440) * Added nf-test for peka (#6446) * Added nf-test for gfatools/gfa2fa (#6451) * Added nf-test for panaroo/run (#6450) * Added nf-test for plasmidfinder (#6444) * Added nf-test for gffcompare (#6452) * Added nf-test for elprep/split (#6459) * Update tests and fix compression (#6463) * Update tests and fix compression * fix * Added nf-test for tbprofiler/profile (#6437) * Added nf-test for varlociraptor/estimatealignmentproperties (#6436) * Deleted pytest of filtlong (#6456) Deleted pytest files for filtlong * Added nf-test for cnvkit/genemetrics (#6392) * Added nf-test for dshbio/splitgff3 (#6461) * Added nf-test for gappa/examineassign (#6455) * Added nf-test for gappa/examineheattree (#6453) * Added nf-test for stadeniolib/scramble (#6438) * Added nf-test for plink/vcf (#6443) * Added nf-test for sequenzautils/bam2seqz (#6441) * Added nf-test for sequenzautils/bam2seqz * Locked python version * Added nf-test for pmdtools/filter (#6424) * Added nf-test for pmdtools/filter * Added stub and conda version trap * Locked samtools * Added nf-test for pindel/pindel (#6445) * Added nf-test for pindel/pindel * Fixed linting issues * Added nf-test for vt/normalize (#6435) * Added nf-test for dshbio/filterbed (#6462) * Added nf-test for dshbio/filterbed * Fixed nf-test * Added nf-test for snpeff/download (#6439) * Added nf-test for snpeff/download * Fixed linting issues * Added nf-test for plasmidid (#6433) Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for entrezdirect/esummary (#6458) * Added nf-test for entrezdirect/esummary * Updated snapshot * Update pre-commit hook astral-sh/ruff-pre-commit to v0.6.3 (#6467) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Remove redundant rowname assignment (#6466) gene_info is derived from transcript_info, which only contains the columns "gene_id", "gene_name", but not "tx". Thus, the rownames assignment was not doing anything. Fortunately, the row names were not needed downstream regardless. * Update actions/setup-python digest to f677139 (#6471) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Added nf-test for scimap/mcmicro (#6442) * Added nf-test for scimap/mcmicro * Fixed typos * Removed module from nf-test/conda * Added nf-test for gfatools/stat (#6493) * Added nf-test for lissero (#6491) * Added nf-test for kleborate (#6492) * Added nf-test for qcat (#6422) * Added nf-test for qcat * Added stub and conda version trap * Added nf-test for maxbin2 (#6488) * Added nf-test for meningotype (#6487) * Added nf-test for methyldackel/mbias (#6485) * Added nf-test for mobsuite/recon (#6482) * Added nf-test for mobsuite/recon * Locked conda versions * Version bump * Added nf-test for purecn/normaldb (#6281) * Added nf-test for purecn/normaldb * Adjust environment * Add optparse * Try newer version from conda forge * Try adding r-utils too * Added wave containers, dynamic versioning and updated snapshot --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for msisensor2/scan (#6481) * Added nf-test for mykrobe/predict (#6479) * Added nf-test for mykrobe/predict * Fixed snapshot * Added nf-test for pasty (#6475) * Added nf-test for picard/collectinsertsizemetrics (#6473) * Added nf-test for nextgenmap (#6477) * Added nf-test for platypus (#6472) * Cleaned pytest files of porechop/abi (#6470) Cleaned pytest files for porechop/abi * Added nf-test for pbptyper (#6474) * Added nf-test for mash/dist (#6489) * Added nf-test for mtnucratio (#6480) * Added nf-test for nanolyse (#6478) * Added nf-test for nanolyse * Fixed snapshot * Added nf-test for paftools/sam2paf (#6476) * Added nf-test for snpsift/dbnsfp (#6469) * Added nf-test for eido/convert (#6460) * Added nf-test for eido/convert * Version bump and wave containers * Bump/wisecondorx (#6464) * bump wisecondorx to v1.2.9 * fix tests * Added nf-test for miniprot/index (#6483) * Added nf-test for fastawindows (#6457) * Added nf-test for fastawindows * Added stub and test * Added nf-test for gatk4/splitcram (#6303) * Added nf-test for hicap (#6495) * Added nf-test for vg/construct (#6468) * Added nf-test for paragraph/vcf2paragraph (#6448) * Added nf-test for paragraph/vcf2paragraph * Added version lock and trap --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for ngmaster (#6270) * Added nf-test for ngmaster * Added stub and version lock for python * Added nf-test for pbbam/pbmerge (#6447) * Added nf-test for pbbam/pbmerge * Updated modules, deprecation message and conda versions trap --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Added nf-test for biscuit/index (#6386) * Added nf-test for biscuit/index * Added stub and updated snapshot * Added stub and nf-test for qc * Added stub and nf-test for pileup * Added stub and nf-test for epiread --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for macrel/contigs (#6490) * Added nf-test for macrel/contigs * Version bump and snapshot update * Added nf-test for metaphlan/makedb (#6486) * Added nf-test for metaphlan/makedb * Updated power assertion * Version bump and snapshot update --------- Co-authored-by: Lili Andersson-Li <64467552+LilyAnderssonLee@users.noreply.github.com> * Added nf-test for lofreq/call (#6501) * Added nf-test for miranda (#6498) * Added nf-test for snapaligner/index (#6496) * Added nf-test for transdecoder/longorf (#6413) * Migrate renovate config (#6117) * chore(config): migrate config .github/renovate.json5 * Update .github/renovate.json5 Co-authored-by: Matthias Hörtenhuber --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edmund Miller <20095261+edmundmiller@users.noreply.github.com> Co-authored-by: Matthias Hörtenhuber * Added nf-test for mcroni (#6499) Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Bump sniffles and add missing inputs/outputs (#6503) * Bump sniffles and add missing inputs/outputs * Update modules/nf-core/sniffles/main.nf Co-authored-by: Maxime U Garcia * Update modules/nf-core/sniffles/meta.yml Co-authored-by: Maxime U Garcia --------- Co-authored-by: Maxime U Garcia * Added nf-test for vg/index (#6534) * Added nf-test for gvcftools/extractvariants (#6524) * No ".list" file is generated by this module (#6348) Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * remove "--outdir ." from fastq_screen bash command (#6247) * remove "--outdir ." from fastq_screen bash command fixes issue #6246 * adding optional fastqscreen output: fastq of nohits * fixing test.snap in fastqscreen module * fix linting fastqscreen/fastqscreen * Try pinning gdgraph, adding fastq test --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Maxime U Garcia * Added nf-test for dshbio/splitbed (#6516) * updated ensemblvep modules and added nf-tests (#6538) * updating ensemblvep modules * fix tests --------- Co-authored-by: Lucpen * Add `mirTrace` module (#6507) * generate mirtrace module * fix linting * update tests and fix linting * update tests * update tests * Added nf-test for staphopiasccmec (#6535) * Added nf-test for ivar/trim (#6531) * Added nf-test for ivar/trim * Simplified version capture and added a trap * Version bump * Added nf-test for igv/js (#6529) * Added nf-test for icountmini/segment (#6528) * Added nf-test for hpsuissero (#6527) * Added nf-test for haplocheck (#6525) * Added nf-test for graphmap2/index (#6523) * Added nf-test for gappa/examinegraft (#6519) * Added nf-test for genmap/index (#6520) * Added nf-test for cnvkit/target (#6512) * Added nf-test for biobambam/bammarkduplicates2 (#6508) * Added nf-test for cooler/dump (#6514) * Added nf-test for cooler/dump * version bump * Added nf-test for goat/taxonsearch (#6522) * Added nf-test for goat/taxonsearch * Added suggested changes * Update actions/upload-artifact digest to 5076954 (#6540) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Added nf-test for getorganelle/config (#6521) * Added nf-test for calder2 (#6509) * Added nf-test for calder2 * Version bump * Added nf-test for mashtree (#6500) * Added nf-test for mashtree * Updated power assertions * Added nf-test for cellrangerarc/mkgtf (#6510) * Added nf-test for cellrangerarc/mkgtf * Excluded from conda profile * Added nf-test for cmseq/polymut (#6511) * Added nf-test for ismapper (#6530) * fix bug (#6541) * mcstaging/imc2mc (#6506) * create module * update meta.yml * add main.nf * add nextflow.config file * adding tests * finish tests * add conda exception in nf-test section of test.yml * change main.nf.test --------- Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> * mcstaging/phenoimager2mc (#6143) * create initial module * added nextflow.config file * add test.snap * adapt main.nf to module * adapt meta.yml file * deleted env file * adapted nf.test * add test data specifications to test_data.config * added single files to test data * adapt input to file list, nor working yet * adapted to linting req, 3 warnings remain * successful tests, linting and prettier * ran test again for snapshot file * addressed minor comments in meta.yml * remove comment * remove conda test * adapt snapshot versions output and delete old snapshots * delete comment * add stub test * Update modules/nf-core/mcstaging/phenoimager2mc/tests/main.nf.test Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> * Update modules/nf-core/mcstaging/phenoimager2mc/tests/main.nf.test Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> * Update modules/nf-core/mcstaging/phenoimager2mc/tests/main.nf.test Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> * Update modules/nf-core/mcstaging/phenoimager2mc/tests/main.nf.test Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> * Update modules/nf-core/mcstaging/phenoimager2mc/tests/main.nf.test Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> --------- Co-authored-by: Miguel A. Ibarra-Arellano Co-authored-by: Krešimir Beštak Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> * Add index output to bcftools reheader (#6542) * wgsim: add seed option, add stub, update test, match readsimulator pipeline (#6544) * add seed option, add stub, update test, match readsimulator * Apply suggestions from code review Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * change version assessment and hand seed via args * add versions md5 --------- Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Added nf-test for estsfs (#6518) * Added nf-test for vrhyme/vrhyme (#6533) * Added nf-test for vrhyme/vrhyme * Locked dependency versions * Updated power assertions * Added nf-test for crumble (#6515) * Added nf-test for crumble * Now BAM is the default output format * Added nf-test for nanocomp (#6497) * Added nf-test for nanocomp * Updated power assertions * Fix gene table row naming in tximeta/tximport (#6551) Update tximport.r * Added nf-test for methyldackel/extract (#6549) * Added nf-test for methyldackel/extract * Version bump * Update motus/profile and add nf-test (#6212) * add nf-test to motus/profile * add stub runs to all tests * Update main.nf.test * Update main.nf.test.snap * Remove donwload db in stub run in main.nf.test * Try moving setups to just test (not stubs, as these don't need database download executed again) * update snapshot to fix conda nf-test instability --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: James A. Fellows Yates * Add tcoffee consensus module (#6539) * Add tcoffee consensus module * Add tcoffee consensus module * update snap * Update modules/nf-core/tcoffee/consensus/tests/main.nf.test Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/tests/main.nf.test Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Update main.nf.test * Update main.nf * Update main.nf * test * Update modules/nf-core/tcoffee/consensus/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/tests/main.nf.test * Update main.nf * Update main.nf * Update main.nf * Update main.nf * Update main.nf * Update main.nf.test * Update modules/nf-core/tcoffee/consensus/main.nf Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update tests * Update modules/nf-core/tcoffee/consensus/meta.yml Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/meta.yml Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/meta.yml Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * fix typos * Update modules/nf-core/tcoffee/consensus/meta.yml Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/meta.yml Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/meta.yml Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/tcoffee/consensus/meta.yml Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> --------- Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Add bcftools/plugintag2tag (#6547) Add bcftools/pluginstag2tag * Added nf-test for bwameth/align (#6550) * Added nf-test for bwameth/align * Update modules/nf-core/bwameth/align/tests/main.nf.test * update single-end test assert * print version yml * ignore syntax warning during version capture * Simplified the version extraction --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> Co-authored-by: Sateesh * Added nf-test for msisensorpro/scan (#6561) * nf-test + update to genotypegvcfs (#6553) * nf-test + update to genotypegvcfs * fix linting * review comments * fix old typo * Update modules/nf-core/gatk4/genotypegvcfs/meta.yml Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Update modules/nf-core/gatk4/genotypegvcfs/meta.yml Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Update modules/nf-core/gatk4/genotypegvcfs/meta.yml Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Update modules/nf-core/gatk4/genotypegvcfs/meta.yml Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Update modules/nf-core/gatk4/genotypegvcfs/meta.yml Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> --------- Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Added nf-test for pirate (#6560) * Added nf-test for minia (#6564) * Added nf-test for purecn/intervalfile (#6558) * Added nf-test for haplogrep2/classify (#6572) * Added nf-test for hmmer/hmmfetch (#6574) * Added nf-test for mapdamage2 (#6578) * Added nf-test for biobambam/bamsormadup (#6579) * Fix wrong array definition in env schema (#6585) * new tool: jvarkit/vcfpolyx (#6580) * vcfpolyx, 1st commit * vcfpolyx * vcfployx, tests ok * fix env and meta ? * remove tab * remove ws * [automated] Fix linting with Prettier * fix conda ? * remove defaults * fix meta info * I hate myslef, fix warnings * add type to meta * fix snap md5 * fix meta3/meta4 https://github.com/nf-core/modules/pull/6580#discussion_r1745494016 * fix https://github.com/nf-core/modules/pull/6580#discussion_r1745463698 * Update modules/nf-core/jvarkit/vcfpolyx/main.nf Co-authored-by: Maxime U Garcia --------- Co-authored-by: nf-core-bot Co-authored-by: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Co-authored-by: Maxime U Garcia * Sort bcftools merge inputs, add index output and nf-test conversion (#6586) * Sort inputs and nf-test conversion * update snapshot * update mirtrace (#6593) * Orthofinder (#6288) * working with orthofinder continue feature * Working resume test * With existing data from datasets and chose stable expected outputs. * updated snap shot (sorted) * fix test to have untar-ed workdir dir input * Fix folder direction * Add new output inputs to yml * fix tag * working conda on gitpod * force diamond install to 2.1.9 * Removed defaults --------- Co-authored-by: Usman Rashid * Added nf-test for homer/annotatepeaks (#6573) * Added nf-test for homer/annotatepeaks * Removed defaults * Added nf-test for emboss/revseq (#6581) * Added nf-test for emboss/revseq * Removed defaults * Added nf-test for hapibd (#6575) * Added nf-test for hapibd * Removed defaults * Added nf-test for hypo (#6571) * Added nf-test for hypo * Removed defaults * Added nf-test for hmmer/hmmbuild (#6576) * Added nf-test for hmmer/hmmbuild * Removed defaults * Added nf-test for legsta (#6566) * Added nf-test for legsta * Removed defaults * Added nf-test for cnvkit/call (#6582) * Added nf-test for cnvkit/call * Removed defaults * Update pre-commit hook astral-sh/ruff-pre-commit to v0.6.4 (#6592) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Added nf-test for gubbins (#6598) * Added nf-test for gubbins * Version bump * Updated test names * Added nf-test for goleft/indexsplit (#6595) * Added nf-test for graphtyper/vcfconcatenate (#6596) * Added nf-test for geoquery/getgeo (#6594) * Added nf-test for geoquery/getgeo * Version bump and stub * Added versions trap * Locked r-base version * Updated power assertions * Fix bcftools merge for one sample (#6591) * Added nf-test for ivar/consensus (#6568) * Added nf-test for ivar/consensus * Verion bump * Added nf-test for circexplorer2/parse (#6577) * Added nf-test for circexplorer2/parse * Updated power assertion * Added nf-test for mmseqs/databases (#6563) * Added nf-test for mmseqs/databases * Updated power assertion * Removed defaults * Now sorting list * Bgzip and tabix paraphase (#6543) * Bgzip and tabix paraphase * Fixed snapshot size and added threads * remove defaults channel * fix tests * Added nf-test for ivar/variants (#6567) * Added nf-test for ivar/variants * Simplified version extraction * Version bump --------- Co-authored-by: Joon Klaps * Added nf-test for gfaffix (#6597) * Added nf-test for gfaffix * Version bump * Fixed linting * Fixed versions * version fix * Added nf-test for idr (#6570) * Added nf-test for idr * removed defaults * Added nf-test for gunc/downloaddb (#6599) * Added nf-test for metabat2/jgisummarizebamcontigdepths (#6565) * Added nf-test for metabat2/jgisummarizebamcontigdepths * Removed defaults * Added nf-test for krona/ktupdatetaxonomy (#6569) * Added nf-test for krona/ktupdatetaxonomy * Removed defaults * Updated power assertion * Mega conda environment update: Remove `name` and `defaults` (#6600) * Remove defaults channel from all modules * Remove 'name' from conda environment files * Update conda environment schema * Remove defaults from env template and GHA CI * Update Prettier in GHA test.yml workflow to match pre-commit version * Remove whitespace from environment.yml files * hmmsearch, rank and output fasta (#6601) * New subworkflow fasta_hmmsearch_rank_fastas * Add euk and mito SSU rRNA to tests * More tests * Fix trailing whitespace * Pre commit all files (#6604) * GitHub Actions: Always run pre-commit with all files. * First attempt at pre-commit on all files, automatic fixes * Ruff lint: DecryptionTimeout -> DecryptionTimeoutError * Ruff: disable block in template that uses Nextflow variables * Module meta.yml licenses - arrays in strings should not be in strings * License arrays: formatting * Add keywords to module meta files that were too short * Misc module meta.yml fixes * Wrap string licenses as arrays * Type: string instead of value * Fix more meta types * More types, keywords * Apply suggestions from code review Co-authored-by: Mahesh Binzer-Panchal * Boolean flag types --------- Co-authored-by: Mahesh Binzer-Panchal * Added nf-test for elprep/filter (#6517) * Added nf-test for elprep/filter * Updated power assertion * Now emitting logs --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for blat (#6603) Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Added nf-test for quast (#6554) * Added nf-test for quast * Update modules/nf-core/quast/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Update modules/nf-core/quast/tests/main.nf.test Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * Tests for each optional input and removed pytest * Removed "ref, nogff" test --------- Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> * bcftools csq (#6605) * bcftools csq * fix lint / format * env.yml * move fun at bottom * Update modules/nf-core/bcftools/csq/main.nf Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> --------- Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Add module and subworkflow mirtop (#6587) * add mirtop gff module * add mirtop/counts module * add mirtop/export module * add mirtop/stats module * update yml * add bam_stats_mirna_mirtop subworkflow * add required dependencies * update test * update subworkflow test * update yml and output files * fix tag linting issue? * fix linting * run prettier * try to solve conda issue * add a compatible pandas * fix linting * update failing ci mirtop/gff test * Added nf-test for angsd/contamination (#6602) * Added nf-test for angsd/contamination * Swap container version * Update snapshot --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Phil Ewels * Add support for pip dependencies and force version pinning in conda (#6588) * Add support for pip dependencies and force version pinning in conda * [automated] Fix linting with Prettier --------- Co-authored-by: nf-core-bot * Add `seqcluster` module (#6614) * add seqcluster module * run prettier * Update modules/nf-core/seqcluster/collapse/environment.yml Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Update modules/nf-core/seqcluster/collapse/main.nf Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Update modules/nf-core/seqcluster/collapse/tests/main.nf.test Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Update modules/nf-core/seqcluster/collapse/meta.yml Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> --------- Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> * Add PREFIX to SPADES warnings log (#6615) * Update main.nf * Update main.nf.test.snap * Update actions/setup-java digest to 2dfa201 (#6617) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Update GTDBTK/CLASSIFYWF: Fix bash failing if nothing to move in output directory (#6618) * Fix bash failing if nothing to move in output directory (which is a valid behaviour) * HarshilAlignmentTM * Fix fq/generate (#6610) Update snapshot, add stub * Fix `seqcluster` (#6616) * change test data with smrnaseq data and fix fastq capturing * point to nf-core repo * add pairhmm threads to haplotypecaller (#6620) * Nextclade vers bump (#6356) * Update environment.yml * Update main.nf Updated containers to 3.8.2 * Update meta.yml * Update main.nf * Create nf-test.config * Create main.nf.test nf-test module * Create main.nf.test.snap * Create nextflow.config * Update main.nf fixing biocontainer issue * Update meta.yml * nextclade version bump from 2.12 to 3.8.2 * Update meta.yml * Update test.yml regenerated test.yml * Update modules/nf-core/nextclade/datasetget/main.nf Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/nextclade/run/main.nf Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Delete tests/modules/nf-core/nextclade/run/test.yml deleted * Delete modules/nf-core/nextclade/run/tests/nextflow.config Deleting * Delete modules/nf-core/nextclade/run/nf-test.config * Delete modules/nf-core/nextclade/datasetget/tests/nextflow.config * Delete modules/nf-core/nextclade/datasetget/nf-test.config * Update main.nf.test * Update main.nf.test making tag adhere to guidelines * Update main.nf.test add params block [this mainly because I couldn't run the test locally without it) * Update main.nf.test.snap * Update main.nf.test * Update main.nf.test add stub * Update main.nf.test * Update tests/config/pytest_modules.yml Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update pytest_modules.yml * Delete tests/modules/nf-core/nextclade/datasetget/main.nf * Delete tests/modules/nf-core/nextclade/datasetget/test.yml * Delete tests/modules/nf-core/nextclade/run/main.nf * Update main.nf.test add stub to nextclade/datasetget test * Delete tests/modules/nf-core/nextclade/datasetget/nextflow.config * Update snapshot * Update meta.yml * Update main.nf.test updated main.nf.test * Update main.nf.test.snap * Add stubs and swap to only snapshoting part of the json * Update modules/nf-core/nextclade/datasetget/main.nf --------- Co-authored-by: shahirnm Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add optional config mode in `mirtrace/qc` (#6623) * add optional config file * update mirtrace/qc * new module gatk/variants2table (#6619) * gatk/variants2table * Update modules/nf-core/gatk4/variantstotable/tests/main.nf.test Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * fix for https://github.com/nf-core/modules/pull/6619 * add optional file arguments This is a suggestion to add additional optional file arguments per the modules guidelines: https://nf-co.re/docs/guidelines/components/modules#required-and-optional-input-files These suggestions are untested. I did not add the [gatk_config_file](https://gatk.broadinstitute.org/hc/en-us/articles/360036896892-VariantsToTable#--gatk-config-file) argument. My current opinion is that the type of settings this would control are best set elsewhere. * update add args, update tests * Update modules/nf-core/gatk4/variantstotable/main.nf Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Update modules/nf-core/gatk4/variantstotable/main.nf Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * fix md5 --------- Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> Co-authored-by: Chase Mateusiak * Split deepvariant 3 (#6172) * Move DeepVariant into a subcommand module rundeepvariant, preparing for split modules The test snapshot is updated because the process name in the version file changed. * Add a split DeepVariant workflow with individual processes for each step * Remove hash unique ID and fix input structure issue * Fixes for call_variants outputing sharded file * Fix test * Remove --channels insert_size, which is only applicable for short read data The channels should be specified in the pipeline config * Replace the model type value input with ext.args config * Fix tests: should run twice for two samples in input channel * Fix linting issues and input channel description * Fix formatting of md files Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> * Corrections / imrpovements from @fellen31 review * Check tfrecord file names * Updating conda skipping options, because the paths have changed * Add deprecation warning for top-level process and test for the deprecated process * also skip conda for the new deprecated module --------- Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> Co-authored-by: Maxime U Garcia * 4451 add vcf2maf nf test (#4463) * add nf-test case for vcf2maf without VEP * add VEP test case for vcf2maf nf-test * update linting for vcf2maf * fix prettier for vcf2maf * remove pytest files for vcf2maf * remove vcf2maf from pytest modules yml * add modules/nf-core/vcf2maf/tests/tags.yml * add line count to vcf2maf test * add line number and versions contents yaml to vcf2maf test * remove alternate container from vcf2maf testing and use the same container for testing with or without VEP * update modules/nf-core/vcf2maf/tests/main.nf.test * update modules/nf-core/vcf2maf/tests/main.nf.test * Update and fix tests * Apply suggestions from code review Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add conda declaration to nf-test * Remove output in snapshot * Add versions to snapshot --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> * Update mirtop modules and subworkflow (#6635) * add arity to mirtop/gff * add prefix to mirtop output * update tests and snapshots * update yml * Add bcftools/pluginimputeinfo (#6624) * Add bcftools/pluginimputeinfo * Remove TODO * Change label * Update meta.yml --------- Co-authored-by: James A. Fellows Yates * Get HISAT2 version from CLI (#6634) fix: Get version from cli * Fix tximport summarizedexperiment (#6638) * SummarizedExperiment: don't sanitise column names * tximport: explicitly disable name sanitisation * MEGAHIT: Add support for multi-libraries, export log (#6632) * Add support for coassembly, export log * Fix formatting * teensy bit more * New module jvarkit/wgscoverageplotter (#6633) * wgscoverageplotter * Apply suggestions from code review Co-authored-by: Maxime U Garcia * fix meta * change snap * fix tags * fix env.yml * Apply suggestions from code review Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> --------- Co-authored-by: Maxime U Garcia Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add openmsthirdparty/cometadapter (#6627) * Setup cometadapter module * cometadapter draft * finalize tests * remove defaults * enclosing input as channel * replace collect with map * add channel of again * fix input channles by joining them * update correct snapshot * fix lint * fix snapshots, comet writes timestamps in output file * prettier * Update environment.yml * strip out suffix version tag, which differs between container and conda * move to version content check instead of hash * align conda version and container version tag * Update output to use type dir for compatibility with tes. (#6645) Update output to use type dir for commpatibility with tes. * Update pre-commit hook astral-sh/ruff-pre-commit to v0.6.5 (#6642) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * minor changes to fastq preprocessing (#6643) * minor changes to fastq preprocessing * Update main.nf * Update bcftools/pluginimputeinfo meta.yml (#6646) Update meta.yml * Fix GTDBTK version calling in stub test (#6649) Use the proper version calling now implemented * flye: fix nf-test, update module (#6613) * fix nf-test, update module * Update nextflow.config * Update nextflow.config * update test * small hifi dataset * remove raw tests --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Add module openms/idmassaccuracy (#6647) * Setup cometadapter module * cometadapter draft * finalize tests * remove defaults * enclosing input as channel * replace collect with map * add channel of again * fix input channles by joining them * update correct snapshot * fix lint * fix snapshots, comet writes timestamps in output file * prettier * Update environment.yml * strip out suffix version tag, which differs between container and conda * move to version content check instead of hash * align conda version and container version tag * add idmassaccuracy module * shorten version parsing --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Stop nf-test complaining about missing dependency (#6652) * Finish filepaths * Fix tags * Added nf-test for untarfiles (#6412) * Added nf-test for untarfiles * Matched conda versions with docker/singularity using wave containers * Changed test name * Added deprecation message * Remove custom params in GTDBTK/CLASSIFYWF (#6651) * Use the proper version calling now implemented * Remove custom params * Fix test * Add UPP (#6546) * Add UPP * fix lint * Update UPP * fix prettier * Update modules/nf-core/upp/align/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * Update modules/nf-core/upp/align/tests/main.nf.test Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> * fixes * update * update tests * update * update * Update modules/nf-core/upp/align/main.nf Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> --------- Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> --------- Co-authored-by: Usman Rashid Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Simon Pearce <24893913+SPPearce@users.noreply.github.com> Co-authored-by: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Co-authored-by: Lili Andersson-Li <64467552+LilyAnderssonLee@users.noreply.github.com> Co-authored-by: James A. Fellows Yates Co-authored-by: YSims Co-authored-by: Mahesh Binzer-Panchal Co-authored-by: Famke Bäuerle <45968370+famosab@users.noreply.github.com> Co-authored-by: Chris Wyatt <9978862+chriswyatt1@users.noreply.github.com> Co-authored-by: Luisa Santus Co-authored-by: Francisco Martínez Co-authored-by: fmartinez Co-authored-by: FernandoDuarteF <123090819+FernandoDuarteF@users.noreply.github.com> Co-authored-by: Pieter Moris <13552343+pmoris@users.noreply.github.com> Co-authored-by: Matthias De Smet <11850640+matthdsm@users.noreply.github.com> Co-authored-by: Edmund Miller <20095261+edmundmiller@users.noreply.github.com> Co-authored-by: Matthias Hörtenhuber Co-authored-by: Felix Lenner <52530259+fellen31@users.noreply.github.com> Co-authored-by: Maxime U Garcia Co-authored-by: Ömer An Co-authored-by: Franziska Bonath <41994400+FranBonath@users.noreply.github.com> Co-authored-by: Maxime U Garcia Co-authored-by: Lucía Peña-Pérez Co-authored-by: Lucpen Co-authored-by: Anabella Trigila <18577080+atrigila@users.noreply.github.com> Co-authored-by: MargotCh <55975768+MargotCh@users.noreply.github.com> Co-authored-by: Krešimir Beštak <86408271+kbestak@users.noreply.github.com> Co-authored-by: Chiara Schiller <94467188+chiarasch@users.noreply.github.com> Co-authored-by: Miguel A. Ibarra-Arellano Co-authored-by: Krešimir Beštak Co-authored-by: Jonathan Manning Co-authored-by: Sateesh_Peri <33637490+sateeshperi@users.noreply.github.com> Co-authored-by: Eric Wei Co-authored-by: Sateesh Co-authored-by: Pierre Lindenbaum <33838+lindenb@users.noreply.github.com> Co-authored-by: nf-core-bot Co-authored-by: Joon Klaps Co-authored-by: Daniel Lundin Co-authored-by: Nur M Shahir Co-authored-by: shahirnm Co-authored-by: Chase Mateusiak Co-authored-by: Marius Bjørnstad Co-authored-by: Stephen Kelly Co-authored-by: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Co-authored-by: Jonas Scheid <43858870+jonasscheid@users.noreply.github.com> Co-authored-by: Venkat Malladi Co-authored-by: Júlia Mir Pedrol --- .github/CODEOWNERS | 1 + .github/ISSUE_TEMPLATE/new_module.yml | 7 + .github/ISSUE_TEMPLATE/update_module.yml | 36 + .github/renovate.json5 | 8 +- .github/scripts/license_message.py | 109 + .github/workflows/fix-linting.yml | 2 +- .github/workflows/test.yml | 106 +- .pre-commit-config.yaml | 6 +- modules/environment-schema.json | 39 +- modules/nf-core/abacas/environment.yml | 2 - modules/nf-core/abacas/tests/main.nf.test | 4 +- modules/nf-core/abricate/run/environment.yml | 2 - modules/nf-core/abricate/run/main.nf | 19 +- modules/nf-core/abricate/run/meta.yml | 4 + .../nf-core/abricate/run/tests/main.nf.test | 32 +- .../abricate/run/tests/main.nf.test.snap | 43 +- .../nf-core/abricate/summary/environment.yml | 2 - modules/nf-core/abricate/summary/meta.yml | 4 +- .../abricate/summary/tests/main.nf.test | 6 +- modules/nf-core/abritamr/run/environment.yml | 2 - .../nf-core/abritamr/run/tests/main.nf.test | 2 +- .../nf-core/adapterremoval/environment.yml | 2 - .../nf-core/adapterremoval/tests/main.nf.test | 14 +- .../adapterremovalfixprefix/environment.yml | 2 - .../tests/main.nf.test | 72 + .../tests/main.nf.test.snap | 72 + .../tests/nextflow.config | 5 + .../adapterremovalfixprefix/tests/tags.yml | 2 + modules/nf-core/admixture/environment.yml | 2 - modules/nf-core/admixture/meta.yml | 5 +- modules/nf-core/admixture/tests/main.nf.test | 2 +- modules/nf-core/affy/justrma/environment.yml | 3 +- modules/nf-core/affy/justrma/main.nf | 10 + .../affy/justrma/templates/affy_justrma.R | 6 +- .../nf-core/affy/justrma/tests/main.nf.test | 108 + .../affy/justrma/tests/main.nf.test.snap | 109 + .../affy/justrma/tests/nextflow.config | 6 + modules/nf-core/affy/justrma/tests/tags.yml | 2 + .../agat/convertspgff2gtf/environment.yml | 2 - .../agat/convertspgff2gtf/tests/main.nf.test | 4 +- .../agat/convertspgff2tsv/environment.yml | 2 - .../agat/convertspgff2tsv/tests/main.nf.test | 4 +- .../agat/convertspgxf2gxf/environment.yml | 2 - .../agat/convertspgxf2gxf/tests/main.nf.test | 4 +- .../nf-core/agat/spaddintrons/environment.yml | 2 - .../agat/spaddintrons/tests/main.nf.test | 4 +- .../environment.yml | 7 + .../agat/spfilterfeaturefromkilllist/main.nf | 53 + .../agat/spfilterfeaturefromkilllist/meta.yml | 60 + .../tests/main.nf.test | 104 + .../tests/main.nf.test.snap | 101 + .../agat/spmergeannotations/environment.yml | 7 + .../nf-core/agat/spmergeannotations/main.nf | 53 + .../nf-core/agat/spmergeannotations/meta.yml | 54 + .../spmergeannotations/tests/main.nf.test | 130 + .../tests/main.nf.test.snap | 92 + .../agat/spmergeannotations/tests/tags.yml | 2 + .../nf-core/agat/spstatistics/environment.yml | 2 - .../agat/spstatistics/tests/main.nf.test | 4 +- .../nf-core/agat/sqstatbasic/environment.yml | 2 - .../agat/sqstatbasic/tests/main.nf.test | 4 +- modules/nf-core/agrvate/environment.yml | 2 - modules/nf-core/agrvate/tests/main.nf.test | 4 +- modules/nf-core/ale/environment.yml | 2 - modules/nf-core/ale/tests/main.nf.test | 16 +- modules/nf-core/allelecounter/environment.yml | 2 - .../nf-core/allelecounter/tests/main.nf.test | 16 +- modules/nf-core/ampcombi/environment.yml | 2 - .../nf-core/ampcombi2/cluster/environment.yml | 2 - .../ampcombi2/complete/environment.yml | 2 - .../ampcombi2/parsetables/environment.yml | 2 - modules/nf-core/ampir/environment.yml | 2 - modules/nf-core/ampir/tests/main.nf.test | 4 +- .../nf-core/amplify/predict/environment.yml | 2 - .../amplify/predict/tests/main.nf.test | 2 +- modules/nf-core/amps/environment.yml | 2 - .../nf-core/amrfinderplus/run/environment.yml | 2 - .../amrfinderplus/update/environment.yml | 2 - .../angsd/contamination/environment.yml | 2 - modules/nf-core/angsd/contamination/main.nf | 16 +- modules/nf-core/angsd/contamination/meta.yml | 5 + .../angsd/contamination/tests/main.nf.test | 78 + .../contamination/tests/main.nf.test.snap | 60 + .../angsd/contamination/tests/nextflow.config | 5 + .../nf-core/angsd/docounts/environment.yml | 2 - modules/nf-core/angsd/docounts/meta.yml | 2 +- .../nf-core/angsd/docounts/tests/main.nf.test | 43 + .../angsd/docounts/tests/main.nf.test.snap | 31 + .../angsd/docounts/tests/nextflow.config | 5 + modules/nf-core/angsd/gl/environment.yml | 2 - modules/nf-core/angsd/gl/tests/main.nf.test | 32 +- .../nf-core/annotsv/annotsv/environment.yml | 2 - .../installannotations/environment.yml | 2 - .../anota2seq/anota2seqrun/environment.yml | 2 - .../antismash/antismashlite/environment.yml | 2 - .../antismashlite/tests/main.nf.test | 2 +- .../antismashlite/tests/main.nf.test.snap | 4 +- .../environment.yml | 2 - .../tests/main.nf.test | 111 +- .../tests/main.nf.test.snap | 8 +- .../nf-core/arcashla/extract/environment.yml | 2 - modules/nf-core/arcashla/extract/meta.yml | 2 +- .../arcashla/extract/tests/main.nf.test | 72 + .../arcashla/extract/tests/main.nf.test.snap | 43 + .../arcashla/extract/tests/nextflow.config | 5 + modules/nf-core/argnorm/environment.yml | 5 + modules/nf-core/argnorm/main.nf | 68 + modules/nf-core/argnorm/meta.yml | 60 + .../argnorm/tests/argnorm_hamronized.config | 5 + .../nf-core/argnorm/tests/argnorm_raw.config | 5 + modules/nf-core/argnorm/tests/main.nf.test | 155 ++ .../nf-core/argnorm/tests/main.nf.test.snap | 134 + modules/nf-core/argnorm/tests/tags.yml | 2 + modules/nf-core/aria2/environment.yml | 2 - modules/nf-core/ariba/getref/environment.yml | 2 - modules/nf-core/ariba/getref/main.nf | 16 +- modules/nf-core/ariba/getref/meta.yml | 7 +- .../nf-core/ariba/getref/tests/main.nf.test | 56 + .../ariba/getref/tests/main.nf.test.snap | 35 + modules/nf-core/ariba/getref/tests/tags.yml | 2 + modules/nf-core/ariba/run/environment.yml | 2 - modules/nf-core/ariba/run/main.nf | 2 +- modules/nf-core/ariba/run/tests/main.nf.test | 9 +- modules/nf-core/arriba/arriba/environment.yml | 2 - .../nf-core/arriba/download/environment.yml | 2 - modules/nf-core/arriba/download/main.nf | 2 + .../arriba/download/tests/main.nf.test | 35 + .../arriba/download/tests/main.nf.test.snap | 35 + modules/nf-core/art/illumina/environment.yml | 2 - modules/nf-core/art/illumina/main.nf | 6 +- modules/nf-core/art/illumina/meta.yml | 3 +- .../nf-core/art/illumina/tests/main.nf.test | 24 +- .../art/illumina/tests/main.nf.test.snap | 56 +- .../nf-core/artic/guppyplex/environment.yml | 2 - modules/nf-core/artic/minion/environment.yml | 2 - modules/nf-core/artic/minion/meta.yml | 6 +- modules/nf-core/ascat/environment.yml | 2 - modules/nf-core/ashlar/environment.yml | 4 +- modules/nf-core/ashlar/main.nf | 10 +- modules/nf-core/assemblyscan/environment.yml | 2 - modules/nf-core/assemblyscan/meta.yml | 2 + .../nf-core/assemblyscan/tests/main.nf.test | 2 +- modules/nf-core/ataqv/ataqv/environment.yml | 2 - modules/nf-core/ataqv/mkarv/environment.yml | 2 - modules/nf-core/ataqv/mkarv/meta.yml | 2 +- modules/nf-core/atlas/call/environment.yml | 2 - modules/nf-core/atlas/call/meta.yml | 6 +- modules/nf-core/atlas/call/tests/main.nf.test | 46 + .../atlas/call/tests/main.nf.test.snap | 15 + modules/nf-core/atlas/pmd/environment.yml | 2 - modules/nf-core/atlas/pmd/meta.yml | 2 +- modules/nf-core/atlas/pmd/tests/main.nf.test | 46 + .../nf-core/atlas/pmd/tests/main.nf.test.snap | 18 + modules/nf-core/atlas/recal/environment.yml | 2 - modules/nf-core/atlas/recal/meta.yml | 5 +- .../nf-core/atlas/recal/tests/main.nf.test | 44 + .../atlas/recal/tests/main.nf.test.snap | 15 + .../nf-core/atlas/splitmerge/environment.yml | 2 - modules/nf-core/atlas/splitmerge/main.nf | 3 +- modules/nf-core/atlas/splitmerge/meta.yml | 6 +- .../atlas/splitmerge/tests/main.nf.test | 43 + .../atlas/splitmerge/tests/main.nf.test.snap | 22 + .../gtf2featureannotation/environment.yml | 2 - .../authentict/deam2cont/environment.yml | 2 - modules/nf-core/authentict/deam2cont/meta.yml | 2 +- modules/nf-core/backsub/tests/main.nf.test | 4 +- modules/nf-core/bacphlip/environment.yml | 3 - modules/nf-core/bacphlip/tests/main.nf.test | 2 +- modules/nf-core/bakta/bakta/environment.yml | 2 - .../nf-core/bakta/bakta/tests/main.nf.test | 2 +- .../bakta/baktadbdownload/environment.yml | 2 - .../bam2fastx/bam2fastq/environment.yml | 2 - .../bam2fastx/bam2fastq/tests/main.nf.test | 37 + .../bam2fastq/tests/main.nf.test.snap | 35 + .../nf-core/bamaligncleaner/environment.yml | 2 - modules/nf-core/bamclipper/environment.yml | 2 - modules/nf-core/bamcmp/environment.yml | 2 - .../bamstats/generalstats/environment.yml | 2 - modules/nf-core/bamstats/generalstats/main.nf | 1 - .../bamstats/generalstats/tests/main.nf.test | 4 +- modules/nf-core/bamtofastq10x/environment.yml | 2 - .../nf-core/bamtools/convert/environment.yml | 2 - .../nf-core/bamtools/split/environment.yml | 2 - .../nf-core/bamtools/stats/environment.yml | 2 - .../nf-core/bamtools/stats/tests/main.nf.test | 35 + .../bamtools/stats/tests/main.nf.test.snap | 37 + .../nf-core/bamutil/trimbam/environment.yml | 2 - .../bamutil/trimbam/tests/main.nf.test | 41 + .../bamutil/trimbam/tests/main.nf.test.snap | 15 + modules/nf-core/bandage/image/environment.yml | 2 - .../nf-core/bandage/image/tests/main.nf.test | 40 + .../bandage/image/tests/main.nf.test.snap | 22 + modules/nf-core/barrnap/environment.yml | 2 - modules/nf-core/barrnap/main.nf | 6 +- modules/nf-core/barrnap/meta.yml | 5 +- modules/nf-core/barrnap/tests/main.nf.test | 57 + .../nf-core/barrnap/tests/main.nf.test.snap | 72 + modules/nf-core/barrnap/tests/tags.yml | 2 + modules/nf-core/basicpy/environment.yml | 2 - modules/nf-core/basicpy/meta.yml | 2 +- modules/nf-core/bbmap/align/environment.yml | 2 - modules/nf-core/bbmap/bbduk/environment.yml | 2 - .../nf-core/bbmap/bbduk/tests/main.nf.test | 22 +- modules/nf-core/bbmap/bbmerge/environment.yml | 2 - modules/nf-core/bbmap/bbnorm/environment.yml | 2 - modules/nf-core/bbmap/bbnorm/meta.yml | 2 +- .../nf-core/bbmap/bbnorm/tests/main.nf.test | 128 + .../bbmap/bbnorm/tests/main.nf.test.snap | 81 + .../bbmap/bbnorm/tests/nextflow.config | 3 + modules/nf-core/bbmap/bbsplit/environment.yml | 2 - modules/nf-core/bbmap/bbsplit/main.nf | 25 +- .../nf-core/bbmap/bbsplit/tests/main.nf.test | 114 +- .../bbmap/bbsplit/tests/main.nf.test.snap | 183 +- .../nf-core/bbmap/clumpify/environment.yml | 2 - .../nf-core/bbmap/clumpify/tests/main.nf.test | 72 + .../bbmap/clumpify/tests/main.nf.test.snap | 49 + .../bbmap/filterbyname/environment.yml | 2 - .../bbmap/filterbyname/tests/main.nf.test | 24 +- modules/nf-core/bbmap/index/environment.yml | 2 - modules/nf-core/bbmap/index/meta.yml | 2 +- .../nf-core/bbmap/index/tests/main.nf.test | 53 + .../bbmap/index/tests/main.nf.test.snap | 23 + modules/nf-core/bbmap/pileup/environment.yml | 2 - .../nf-core/bbmap/pileup/tests/main.nf.test | 35 + .../bbmap/pileup/tests/main.nf.test.snap | 55 + .../nf-core/bbmap/sendsketch/environment.yml | 2 - modules/nf-core/bbmap/sendsketch/meta.yml | 4 +- .../bbmap/sendsketch/tests/main.nf.test | 70 + .../bbmap/sendsketch/tests/main.nf.test.snap | 40 + .../nf-core/bcftools/annotate/environment.yml | 2 - modules/nf-core/bcftools/annotate/main.nf | 4 +- .../bcftools/annotate/tests/main.nf.test | 170 +- .../bcftools/annotate/tests/main.nf.test.snap | 160 +- modules/nf-core/bcftools/call/environment.yml | 2 - .../nf-core/bcftools/call/tests/main.nf.test | 40 +- .../nf-core/bcftools/concat/environment.yml | 2 - .../bcftools/concat/tests/main.nf.test | 68 +- .../bcftools/consensus/environment.yml | 2 - modules/nf-core/bcftools/consensus/main.nf | 4 +- modules/nf-core/bcftools/consensus/meta.yml | 4 + .../bcftools/consensus/tests/main.nf.test | 90 + .../consensus/tests/main.nf.test.snap | 101 + .../nf-core/bcftools/convert/environment.yml | 2 - modules/nf-core/bcftools/csq/environment.yml | 5 + modules/nf-core/bcftools/csq/main.nf | 81 + modules/nf-core/bcftools/csq/meta.yml | 81 + .../nf-core/bcftools/csq/tests/main.nf.test | 51 + .../bcftools/csq/tests/main.nf.test.snap | 15 + modules/nf-core/bcftools/csq/tests/tags.yml | 2 + modules/nf-core/bcftools/csq/tests/vcf.config | 4 + .../nf-core/bcftools/filter/environment.yml | 2 - .../nf-core/bcftools/index/environment.yml | 2 - modules/nf-core/bcftools/isec/environment.yml | 2 - modules/nf-core/bcftools/isec/main.nf | 24 +- modules/nf-core/bcftools/isec/meta.yml | 7 +- .../nf-core/bcftools/isec/tests/main.nf.test | 54 +- .../bcftools/isec/tests/main.nf.test.snap | 71 +- .../nf-core/bcftools/merge/environment.yml | 2 - modules/nf-core/bcftools/merge/main.nf | 22 +- modules/nf-core/bcftools/merge/meta.yml | 23 +- .../nf-core/bcftools/merge/tests/bcf.config | 3 + .../bcftools/merge/tests/bcf_gz.config | 3 + .../nf-core/bcftools/merge/tests/main.nf.test | 853 ++++++ .../bcftools/merge/tests/main.nf.test.snap | 607 +++++ .../bcftools/merge/tests/nextflow.config | 5 + .../bcftools/merge/tests/nextflow.gvcf.config | 5 + modules/nf-core/bcftools/merge/tests/tags.yml | 2 + .../nf-core/bcftools/merge/tests/vcf.config | 3 + .../bcftools/merge/tests/vcf_gz.config | 3 + .../bcftools/merge/tests/vcf_gz_index.config | 3 + .../merge/tests/vcf_gz_index_csi.config | 3 + .../merge/tests/vcf_gz_index_tbi.config | 3 + .../nf-core/bcftools/mpileup/environment.yml | 2 - .../bcftools/mpileup/tests/main.nf.test | 28 +- modules/nf-core/bcftools/norm/environment.yml | 2 - modules/nf-core/bcftools/norm/main.nf | 2 +- .../bcftools/pluginimputeinfo/environment.yml | 7 + .../nf-core/bcftools/pluginimputeinfo/main.nf | 76 + .../bcftools/pluginimputeinfo/meta.yml | 81 + .../pluginimputeinfo/tests/main.nf.test | 406 +++ .../pluginimputeinfo/tests/main.nf.test.snap | 333 +++ .../pluginimputeinfo/tests/nextflow.config | 13 + .../tests/vcf_gz_index.config | 13 + .../tests/vcf_gz_index_csi.config | 13 + .../tests/vcf_gz_index_tbi.config | 13 + .../bcftools/pluginscatter/environment.yml | 2 - .../bcftools/pluginsplit/environment.yml | 2 - modules/nf-core/bcftools/pluginsplit/main.nf | 20 +- .../bcftools/pluginsplit/tests/main.nf.test | 192 ++ .../pluginsplit/tests/main.nf.test.snap | 240 ++ .../pluginsplit/tests/nextflow.config | 5 + .../bcftools/pluginsplit/tests/tags.yml | 2 + .../bcftools/plugintag2tag/environment.yml | 5 + .../nf-core/bcftools/plugintag2tag/main.nf | 76 + .../nf-core/bcftools/plugintag2tag/meta.yml | 68 + .../bcftools/plugintag2tag/tests/main.nf.test | 290 +++ .../plugintag2tag/tests/main.nf.test.snap | 346 +++ .../plugintag2tag/tests/nextflow.config | 4 + .../bcftools/plugintag2tag/tests/tags.yml | 2 + .../plugintag2tag/tests/vcf_gz_index.config | 5 + .../tests/vcf_gz_index_csi.config | 5 + .../tests/vcf_gz_index_tbi.config | 5 + .../nf-core/bcftools/query/environment.yml | 2 - .../nf-core/bcftools/query/tests/main.nf.test | 16 +- .../nf-core/bcftools/reheader/environment.yml | 2 - modules/nf-core/bcftools/reheader/main.nf | 11 +- modules/nf-core/bcftools/reheader/meta.yml | 4 + .../bcftools/reheader/tests/main.nf.test | 233 +- .../bcftools/reheader/tests/main.nf.test.snap | 289 ++- .../reheader/tests/vcf_gz_index.config | 4 + .../reheader/tests/vcf_gz_index_csi.config | 4 + .../reheader/tests/vcf_gz_index_tbi.config | 5 + modules/nf-core/bcftools/roh/environment.yml | 2 - .../nf-core/bcftools/roh/tests/main.nf.test | 67 + .../bcftools/roh/tests/main.nf.test.snap | 68 + modules/nf-core/bcftools/sort/environment.yml | 2 - .../nf-core/bcftools/sort/tests/main.nf.test | 16 +- .../nf-core/bcftools/split/environment.yml | 2 - .../nf-core/bcftools/split/tests/main.nf.test | 40 + .../bcftools/split/tests/main.nf.test.snap | 15 + .../nf-core/bcftools/stats/environment.yml | 2 - modules/nf-core/bcftools/view/environment.yml | 2 - .../nf-core/bcftools/view/tests/main.nf.test | 40 +- modules/nf-core/bcl2fastq/environment.yml | 5 - modules/nf-core/bcl2fastq/main.nf | 14 +- modules/nf-core/bcl2fastq/meta.yml | 2 +- modules/nf-core/bcl2fastq/tests/main.nf.test | 4 +- .../nf-core/bcl2fastq/tests/main.nf.test.snap | 10 +- modules/nf-core/bclconvert/Dockerfile | 6 +- modules/nf-core/bclconvert/README.md | 4 +- modules/nf-core/bclconvert/main.nf | 16 +- modules/nf-core/bclconvert/tests/main.nf.test | 4 +- .../bclconvert/tests/main.nf.test.snap | 10 +- .../nf-core/beagle5/beagle/environment.yml | 2 - modules/nf-core/beagle5/beagle/meta.yml | 3 +- .../nf-core/beagle5/beagle/tests/main.nf.test | 106 + .../beagle5/beagle/tests/main.nf.test.snap | 44 + modules/nf-core/bedgovcf/environment.yml | 2 - modules/nf-core/bedgovcf/tests/main.nf.test | 8 +- .../bedops/convert2bed/environment.yml | 2 - .../bedops/convert2bed/tests/main.nf.test | 4 +- .../nf-core/bedops/gtf2bed/environment.yml | 2 - .../nf-core/bedops/gtf2bed/tests/main.nf.test | 4 +- .../nf-core/bedtools/bamtobed/environment.yml | 2 - .../bedtools/bamtobed/tests/main.nf.test | 4 +- .../nf-core/bedtools/closest/environment.yml | 2 - .../bedtools/closest/tests/main.nf.test | 18 +- .../bedtools/complement/environment.yml | 2 - .../bedtools/complement/tests/main.nf.test | 4 +- .../nf-core/bedtools/coverage/environment.yml | 2 - .../bedtools/coverage/tests/main.nf.test | 10 +- .../bedtools/genomecov/environment.yml | 2 - modules/nf-core/bedtools/genomecov/main.nf | 11 +- .../bedtools/genomecov/tests/main.nf.test | 78 +- .../genomecov/tests/main.nf.test.snap | 131 +- .../nf-core/bedtools/genomecov/tests/tags.yml | 2 - .../nf-core/bedtools/getfasta/environment.yml | 2 - .../bedtools/getfasta/tests/main.nf.test | 8 +- .../nf-core/bedtools/groupby/environment.yml | 2 - .../bedtools/groupby/tests/main.nf.test | 37 + .../bedtools/groupby/tests/main.nf.test.snap | 37 + .../bedtools/groupby/tests/nextflow.config | 5 + .../bedtools/intersect/environment.yml | 2 - .../nf-core/bedtools/jaccard/environment.yml | 2 - .../bedtools/jaccard/tests/main.nf.test | 66 + .../bedtools/jaccard/tests/main.nf.test.snap | 72 + .../bedtools/jaccard/tests/nextflow.config | 5 + .../bedtools/makewindows/environment.yml | 2 - .../bedtools/makewindows/tests/main.nf.test | 58 + .../makewindows/tests/main.nf.test.snap | 68 + .../makewindows/tests/nextflow.config | 5 + modules/nf-core/bedtools/map/environment.yml | 2 - .../nf-core/bedtools/map/tests/main.nf.test | 12 +- .../bedtools/maskfasta/environment.yml | 2 - .../bedtools/maskfasta/tests/main.nf.test | 35 + .../maskfasta/tests/main.nf.test.snap | 35 + .../nf-core/bedtools/merge/environment.yml | 2 - .../nf-core/bedtools/merge/tests/main.nf.test | 2 +- .../bedtools/multiinter/environment.yml | 2 - .../bedtools/multiinter/tests/main.nf.test | 65 + .../multiinter/tests/main.nf.test.snap | 72 + .../nf-core/bedtools/shift/environment.yml | 2 - .../nf-core/bedtools/shift/tests/main.nf.test | 36 + .../bedtools/shift/tests/main.nf.test.snap | 35 + .../bedtools/shift/tests/nextflow.config | 6 + modules/nf-core/bedtools/slop/environment.yml | 2 - .../nf-core/bedtools/slop/tests/main.nf.test | 36 + .../bedtools/slop/tests/main.nf.test.snap | 35 + .../bedtools/slop/tests/nextflow.config | 6 + modules/nf-core/bedtools/sort/environment.yml | 2 - .../nf-core/bedtools/split/environment.yml | 2 - .../nf-core/bedtools/split/tests/main.nf.test | 36 + .../bedtools/split/tests/main.nf.test.snap | 41 + .../nf-core/bedtools/subtract/environment.yml | 2 - .../bedtools/subtract/tests/main.nf.test | 36 + .../bedtools/subtract/tests/main.nf.test.snap | 35 + .../bedtools/unionbedg/environment.yml | 2 - modules/nf-core/bioawk/environment.yml | 2 - modules/nf-core/bioawk/main.nf | 2 +- modules/nf-core/bioawk/meta.yml | 2 +- modules/nf-core/bioawk/tests/main.nf.test | 35 + .../nf-core/bioawk/tests/main.nf.test.snap | 37 + modules/nf-core/bioawk/tests/nextflow.config | 6 + .../bammarkduplicates2/environment.yml | 2 - .../biobambam/bammarkduplicates2/main.nf | 12 + .../bammarkduplicates2/tests/main.nf.test | 63 + .../tests/main.nf.test.snap | 75 + .../biobambam/bammerge/environment.yml | 2 - modules/nf-core/biobambam/bammerge/meta.yml | 1 + .../biobambam/bammerge/tests/main.nf.test | 75 + .../bammerge/tests/main.nf.test.snap | 48 + .../biobambam/bammerge/tests/nextflow.config | 10 + .../biobambam/bamsormadup/environment.yml | 2 - modules/nf-core/biobambam/bamsormadup/main.nf | 18 + .../biobambam/bamsormadup/tests/main.nf.test | 105 + .../bamsormadup/tests/main.nf.test.snap | 115 + modules/nf-core/biohansel/environment.yml | 2 - modules/nf-core/biohansel/meta.yml | 2 +- modules/nf-core/biscuit/align/environment.yml | 2 - .../nf-core/biscuit/align/tests/main.nf.test | 8 +- .../biscuit/biscuitblaster/environment.yml | 2 - .../nf-core/biscuit/bsconv/environment.yml | 2 - .../nf-core/biscuit/bsconv/tests/main.nf.test | 10 +- .../nf-core/biscuit/epiread/environment.yml | 2 - modules/nf-core/biscuit/epiread/main.nf | 15 + .../biscuit/epiread/tests/main.nf.test | 125 + .../biscuit/epiread/tests/main.nf.test.snap | 142 + modules/nf-core/biscuit/index/environment.yml | 2 - modules/nf-core/biscuit/index/main.nf | 18 + modules/nf-core/biscuit/index/meta.yml | 2 +- .../nf-core/biscuit/index/tests/main.nf.test | 52 + .../biscuit/index/tests/main.nf.test.snap | 84 + .../nf-core/biscuit/mergecg/environment.yml | 2 - .../nf-core/biscuit/pileup/environment.yml | 2 - modules/nf-core/biscuit/pileup/main.nf | 11 + .../nf-core/biscuit/pileup/tests/main.nf.test | 120 + .../biscuit/pileup/tests/main.nf.test.snap | 61 + modules/nf-core/biscuit/qc/environment.yml | 2 - modules/nf-core/biscuit/qc/main.nf | 18 + modules/nf-core/biscuit/qc/tests/main.nf.test | 70 + .../biscuit/qc/tests/main.nf.test.snap | 104 + .../nf-core/biscuit/vcf2bed/environment.yml | 2 - modules/nf-core/biscuit/vcf2bed/main.nf | 12 + .../biscuit/vcf2bed/tests/main.nf.test | 58 + .../biscuit/vcf2bed/tests/main.nf.test.snap | 72 + modules/nf-core/bismark/align/environment.yml | 2 - modules/nf-core/bismark/align/meta.yml | 2 +- .../nf-core/bismark/align/tests/main.nf.test | 78 +- .../bismark/align/tests/main.nf.test.snap | 136 +- .../bismark/coverage2cytosine/environment.yml | 2 - .../bismark/coverage2cytosine/meta.yml | 2 +- .../coverage2cytosine/tests/main.nf.test | 13 +- .../coverage2cytosine/tests/main.nf.test.snap | 10 +- .../bismark/deduplicate/environment.yml | 2 - .../bismark/deduplicate/tests/main.nf.test | 9 +- .../deduplicate/tests/main.nf.test.snap | 63 +- .../bismark/genomepreparation/environment.yml | 2 - .../bismark/genomepreparation/meta.yml | 2 +- .../genomepreparation/tests/main.nf.test | 2 +- .../methylationextractor/environment.yml | 2 - .../methylationextractor/tests/main.nf.test | 12 +- .../tests/main.nf.test.snap | 38 +- .../nf-core/bismark/report/environment.yml | 2 - modules/nf-core/bismark/report/meta.yml | 3 - .../nf-core/bismark/report/tests/main.nf.test | 18 +- .../nf-core/bismark/summary/environment.yml | 2 - .../bismark/summary/tests/main.nf.test | 16 +- .../nf-core/blast/blastdbcmd/environment.yml | 2 - modules/nf-core/blast/blastn/environment.yml | 2 - .../nf-core/blast/blastn/tests/main.nf.test | 6 +- modules/nf-core/blast/blastp/environment.yml | 2 - .../nf-core/blast/blastp/tests/main.nf.test | 12 +- .../nf-core/blast/makeblastdb/environment.yml | 2 - .../blast/makeblastdb/tests/main.nf.test | 92 +- .../blast/makeblastdb/tests/main.nf.test.snap | 143 +- modules/nf-core/blast/tblastn/environment.yml | 2 - .../nf-core/blast/tblastn/tests/main.nf.test | 6 +- .../blast/updateblastdb/environment.yml | 2 - modules/nf-core/blat/environment.yml | 2 - modules/nf-core/blat/meta.yml | 2 +- modules/nf-core/blat/tests/main.nf.test | 75 + modules/nf-core/blat/tests/main.nf.test.snap | 72 + modules/nf-core/blat/tests/nextflow.config | 5 + modules/nf-core/bowtie/align/environment.yml | 3 +- modules/nf-core/bowtie/align/main.nf | 35 +- modules/nf-core/bowtie/align/meta.yml | 21 +- .../nf-core/bowtie/align/tests/main.nf.test | 129 + .../bowtie/align/tests/main.nf.test.snap | 192 ++ modules/nf-core/bowtie/align/tests/tags.yml | 2 + modules/nf-core/bowtie/build/environment.yml | 2 - modules/nf-core/bowtie/build/main.nf | 32 +- modules/nf-core/bowtie/build/meta.yml | 12 +- .../nf-core/bowtie/build/tests/main.nf.test | 57 + .../bowtie/build/tests/main.nf.test.snap | 96 + modules/nf-core/bowtie/build/tests/tags.yml | 2 + modules/nf-core/bowtie2/align/environment.yml | 2 - .../nf-core/bowtie2/align/tests/main.nf.test | 90 +- modules/nf-core/bowtie2/build/environment.yml | 2 - .../nf-core/bracken/bracken/environment.yml | 2 - modules/nf-core/bracken/bracken/main.nf | 9 +- .../bracken/bracken/tests/genus_test.config | 5 + .../bracken/bracken/tests/main.nf.test | 48 +- .../bracken/bracken/tests/main.nf.test.snap | 83 +- modules/nf-core/bracken/build/environment.yml | 2 - .../nf-core/bracken/build/tests/main.nf.test | 34 +- .../bracken/build/tests/main.nf.test.snap | 59 +- .../combinebrackenoutputs/environment.yml | 2 - modules/nf-core/busco/busco/environment.yml | 2 - .../nf-core/busco/busco/tests/main.nf.test | 20 +- .../busco/generateplot/environment.yml | 2 - .../busco/generateplot/tests/main.nf.test | 4 +- modules/nf-core/bwa/aln/environment.yml | 2 - modules/nf-core/bwa/aln/tests/main.nf.test | 10 +- modules/nf-core/bwa/index/environment.yml | 2 - modules/nf-core/bwa/mem/environment.yml | 2 - modules/nf-core/bwa/mem/tests/main.nf.test | 139 +- .../nf-core/bwa/mem/tests/main.nf.test.snap | 203 +- modules/nf-core/bwa/sampe/environment.yml | 5 +- modules/nf-core/bwa/sampe/tests/main.nf.test | 10 +- modules/nf-core/bwa/samse/environment.yml | 5 +- modules/nf-core/bwa/samse/tests/main.nf.test | 6 +- modules/nf-core/bwamem2/index/environment.yml | 2 - modules/nf-core/bwamem2/mem/environment.yml | 2 - .../nf-core/bwamem2/mem/tests/main.nf.test | 99 +- .../bwamem2/mem/tests/main.nf.test.snap | 108 +- modules/nf-core/bwameme/index/environment.yml | 2 - modules/nf-core/bwameme/mem/environment.yml | 2 - modules/nf-core/bwameme/mem/main.nf | 13 +- modules/nf-core/bwameme/mem/meta.yml | 5 +- .../nf-core/bwameme/mem/tests/main.nf.test | 118 +- .../bwameme/mem/tests/main.nf.test.snap | 183 +- modules/nf-core/bwameth/align/environment.yml | 4 +- modules/nf-core/bwameth/align/main.nf | 17 +- modules/nf-core/bwameth/align/meta.yml | 2 +- .../nf-core/bwameth/align/tests/main.nf.test | 112 + .../bwameth/align/tests/main.nf.test.snap | 63 + modules/nf-core/bwameth/index/environment.yml | 4 +- modules/nf-core/bwameth/index/main.nf | 6 +- modules/nf-core/bwameth/index/meta.yml | 2 +- .../nf-core/bwameth/index/tests/main.nf.test | 31 + .../bwameth/index/tests/main.nf.test.snap | 41 + modules/nf-core/cadd/environment.yml | 2 - modules/nf-core/cafe/environment.yml | 7 + modules/nf-core/cafe/main.nf | 62 + modules/nf-core/cafe/meta.yml | 61 + modules/nf-core/cafe/tests/main.nf.test | 66 + modules/nf-core/cafe/tests/main.nf.test.snap | 42 + modules/nf-core/calder2/environment.yml | 4 +- modules/nf-core/calder2/main.nf | 34 +- modules/nf-core/calder2/meta.yml | 8 +- modules/nf-core/calder2/tests/main.nf.test | 135 + .../nf-core/calder2/tests/main.nf.test.snap | 113 + modules/nf-core/calder2/tests/nextflow.config | 3 + modules/nf-core/canu/environment.yml | 2 - modules/nf-core/canu/meta.yml | 6 +- modules/nf-core/cat/cat/environment.yml | 2 - modules/nf-core/cat/cat/main.nf | 1 - modules/nf-core/cat/cat/tests/main.nf.test | 27 +- .../nf-core/cat/cat/tests/main.nf.test.snap | 74 +- modules/nf-core/cat/fastq/environment.yml | 2 - modules/nf-core/cat/fastq/main.nf | 10 +- modules/nf-core/cat/fastq/tests/main.nf.test | 136 +- .../nf-core/cat/fastq/tests/main.nf.test.snap | 207 ++ modules/nf-core/cdhit/cdhit/environment.yml | 2 - .../nf-core/cdhit/cdhit/tests/main.nf.test | 2 +- .../nf-core/cdhit/cdhitest/environment.yml | 2 - modules/nf-core/cdhit/cdhitest/meta.yml | 2 +- .../nf-core/cdhit/cdhitest/tests/main.nf.test | 57 + .../cdhit/cdhitest/tests/main.nf.test.snap | 108 + modules/nf-core/celesta/tests/main.nf.test | 13 +- .../nf-core/cellbender/merge/environment.yml | 5 + modules/nf-core/cellbender/merge/main.nf | 35 + modules/nf-core/cellbender/merge/meta.yml | 43 + .../cellbender/merge/templates/merge.py | 54 + .../cellbender/merge/tests/main.nf.test | 55 + .../cellbender/merge/tests/main.nf.test.snap | 60 + .../nf-core/cellbender/merge/tests/tags.yml | 2 + .../removebackground/environment.yml | 5 + .../cellbender/removebackground/main.nf | 65 + .../cellbender/removebackground/meta.yml | 75 + .../removebackground/tests/epochs.config | 6 + .../removebackground/tests/main.nf.test | 66 + .../removebackground/tests/main.nf.test.snap | 196 ++ .../removebackground/tests/tags.yml | 2 + modules/nf-core/cellpose/tests/main.nf.test | 4 +- .../count/templates/cellranger_count.py | 6 +- .../cellranger/count/tests/main.nf.test | 12 +- modules/nf-core/cellranger/mkfastq/main.nf | 48 +- .../cellranger/mkfastq/tests/main.nf.test | 35 +- .../mkfastq/tests/main.nf.test.snap | 140 +- .../cellranger/mkgtf/tests/main.nf.test | 4 +- modules/nf-core/cellranger/mkref/main.nf | 4 + .../cellranger/mkref/tests/main.nf.test | 13 +- .../cellranger/mkref/tests/main.nf.test.snap | 48 +- .../multi/templates/cellranger_multi.py | 18 +- .../cellranger/multi/tests/main.nf.test | 144 +- .../nf-core/cellranger/vdj/tests/main.nf.test | 20 +- modules/nf-core/cellrangerarc/mkgtf/main.nf | 11 + .../cellrangerarc/mkgtf/tests/main.nf.test | 53 + .../mkgtf/tests/main.nf.test.snap | 48 + .../cellrangerarc/mkgtf/tests/nextflow.config | 25 + modules/nf-core/cellrangerarc/mkref/main.nf | 4 +- .../cellrangeratac/count/environment.yml | 2 - modules/nf-core/cellrangeratac/count/meta.yml | 2 +- .../cellrangeratac/mkfastq/environment.yml | 2 - .../nf-core/cellrangeratac/mkfastq/meta.yml | 2 +- .../cellrangeratac/mkref/environment.yml | 2 - modules/nf-core/cellrangeratac/mkref/meta.yml | 2 +- modules/nf-core/cellsnp/modea/environment.yml | 2 - .../nf-core/centrifuge/build/environment.yml | 2 - .../centrifuge/build/tests/main.nf.test | 16 +- .../centrifuge/centrifuge/environment.yml | 2 - .../centrifuge/centrifuge/tests/main.nf.test | 10 +- .../centrifuge/tests/main.nf.test.snap | 22 +- .../centrifuge/kreport/environment.yml | 2 - .../centrifuge/kreport/tests/main.nf.test | 5 +- .../kreport/tests/main.nf.test.snap | 13 +- .../nf-core/checkm/lineagewf/environment.yml | 4 +- modules/nf-core/checkm/lineagewf/main.nf | 4 +- .../checkm/lineagewf/tests/main.nf.test | 6 +- .../checkm/lineagewf/tests/main.nf.test.snap | 6 +- modules/nf-core/checkm/qa/environment.yml | 2 - .../checkm2/databasedownload/environment.yml | 2 - .../nf-core/checkm2/predict/environment.yml | 2 - .../checkm2/predict/tests/main.nf.test | 2 +- modules/nf-core/checkqc/environment.yml | 10 + modules/nf-core/checkqc/main.nf | 56 + modules/nf-core/checkqc/meta.yml | 43 + modules/nf-core/checkqc/tests/main.nf.test | 116 + .../nf-core/checkqc/tests/main.nf.test.snap | 68 + modules/nf-core/checkqc/tests/nextflow.config | 5 + modules/nf-core/checkqc/tests/tags.yml | 2 + .../checkv/downloaddatabase/environment.yml | 2 - .../nf-core/checkv/endtoend/environment.yml | 2 - .../checkv/endtoend/tests/main.nf.test | 2 +- .../checkv/updatedatabase/environment.yml | 2 - .../checkv/updatedatabase/tests/main.nf.test | 16 +- .../updatedatabase/tests/main.nf.test.snap | 22 +- .../chewbbaca/createschema/environment.yml | 7 + .../nf-core/chewbbaca/createschema/main.nf | 69 + .../nf-core/chewbbaca/createschema/meta.yml | 66 + .../chewbbaca/createschema/tests/main.nf.test | 120 + .../createschema/tests/main.nf.test.snap | 139 + .../chewbbaca/createschema/tests/tags.yml | 2 + modules/nf-core/chopper/environment.yml | 2 - modules/nf-core/chopper/meta.yml | 2 +- modules/nf-core/chopper/tests/main.nf.test | 2 +- .../nf-core/chromap/chromap/environment.yml | 6 +- modules/nf-core/chromap/chromap/main.nf | 19 +- .../chromap/chromap/tests/main.nf.test | 143 +- .../chromap/chromap/tests/main.nf.test.snap | 143 +- modules/nf-core/chromap/index/environment.yml | 4 +- modules/nf-core/chromap/index/main.nf | 17 +- .../nf-core/chromap/index/tests/main.nf.test | 37 +- .../chromap/index/tests/main.nf.test.snap | 48 +- modules/nf-core/chromograph/environment.yml | 2 - .../nf-core/chromograph/tests/main.nf.test | 2 +- .../circexplorer2/annotate/environment.yml | 2 - .../nf-core/circexplorer2/annotate/meta.yml | 3 +- .../circexplorer2/annotate/tests/main.nf.test | 73 + .../annotate/tests/main.nf.test.snap | 54 + .../circexplorer2/parse/environment.yml | 2 - modules/nf-core/circexplorer2/parse/meta.yml | 2 +- .../circexplorer2/parse/tests/main.nf.test | 62 + .../parse/tests/main.nf.test.snap | 48 + .../circulargenerator/environment.yml | 2 - .../circularmapper/circulargenerator/main.nf | 25 +- .../circularmapper/circulargenerator/meta.yml | 32 +- .../circulargenerator/tests/main.nf.test | 10 +- .../circulargenerator/tests/main.nf.test.snap | 44 +- .../realignsamfile/environment.yml | 2 - .../circularmapper/realignsamfile/main.nf | 5 +- .../circularmapper/realignsamfile/meta.yml | 14 + .../realignsamfile/tests/main.nf.test | 24 +- .../realignsamfile/tests/main.nf.test.snap | 12 +- modules/nf-core/clame/environment.yml | 2 - modules/nf-core/clame/tests/main.nf.test | 2 +- modules/nf-core/clippy/environment.yml | 2 - modules/nf-core/clippy/meta.yml | 2 +- modules/nf-core/clonalframeml/environment.yml | 2 - .../nf-core/clonalframeml/tests/main.nf.test | 35 + .../clonalframeml/tests/main.nf.test.snap | 105 + .../nf-core/clustalo/align/environment.yml | 2 - .../nf-core/clustalo/align/tests/main.nf.test | 8 +- .../clustalo/guidetree/environment.yml | 2 - .../clustalo/guidetree/tests/main.nf.test | 2 +- modules/nf-core/cmseq/polymut/environment.yml | 2 - modules/nf-core/cmseq/polymut/main.nf | 12 + .../nf-core/cmseq/polymut/tests/main.nf.test | 114 + .../cmseq/polymut/tests/main.nf.test.snap | 142 + modules/nf-core/cnvkit/access/environment.yml | 2 - .../nf-core/cnvkit/access/tests/main.nf.test | 94 + .../cnvkit/access/tests/main.nf.test.snap | 101 + .../nf-core/cnvkit/antitarget/environment.yml | 2 - modules/nf-core/cnvkit/batch/environment.yml | 7 +- .../nf-core/cnvkit/batch/tests/main.nf.test | 105 +- .../cnvkit/batch/tests/main.nf.test.snap | 87 +- modules/nf-core/cnvkit/call/environment.yml | 2 - modules/nf-core/cnvkit/call/main.nf | 11 + .../nf-core/cnvkit/call/tests/main.nf.test | 83 + .../cnvkit/call/tests/main.nf.test.snap | 107 + modules/nf-core/cnvkit/export/environment.yml | 2 - .../cnvkit/genemetrics/environment.yml | 2 - modules/nf-core/cnvkit/genemetrics/main.nf | 0 modules/nf-core/cnvkit/genemetrics/meta.yml | 0 .../cnvkit/genemetrics/tests/main.nf.test | 59 + .../genemetrics/tests/main.nf.test.snap | 72 + .../nf-core/cnvkit/reference/environment.yml | 2 - modules/nf-core/cnvkit/target/environment.yml | 2 - modules/nf-core/cnvkit/target/main.nf | 11 + .../nf-core/cnvkit/target/tests/main.nf.test | 89 + .../cnvkit/target/tests/main.nf.test.snap | 101 + .../nf-core/cnvnator/cnvnator/environment.yml | 2 - modules/nf-core/cnvnator/cnvnator/meta.yml | 2 +- .../cnvnator/convert2vcf/environment.yml | 2 - modules/nf-core/cnvnator/convert2vcf/meta.yml | 2 +- .../nf-core/cnvpytor/callcnvs/environment.yml | 2 - modules/nf-core/cnvpytor/callcnvs/main.nf | 8 +- modules/nf-core/cnvpytor/callcnvs/meta.yml | 6 +- .../cnvpytor/callcnvs/tests/main.nf.test | 59 + .../cnvpytor/callcnvs/tests/main.nf.test.snap | 68 + .../cnvpytor/histogram/environment.yml | 2 - modules/nf-core/cnvpytor/histogram/meta.yml | 1 + .../cnvpytor/importreaddepth/environment.yml | 5 +- .../nf-core/cnvpytor/importreaddepth/main.nf | 8 +- .../nf-core/cnvpytor/importreaddepth/meta.yml | 4 +- .../importreaddepth/tests/main.nf.test | 97 + .../importreaddepth/tests/main.nf.test.snap | 61 + .../importreaddepth/tests/nextflow.config | 8 + .../cnvpytor/partition/environment.yml | 2 - modules/nf-core/cnvpytor/partition/meta.yml | 1 + modules/nf-core/cnvpytor/view/environment.yml | 2 - modules/nf-core/cnvpytor/view/main.nf | 4 +- modules/nf-core/cnvpytor/view/meta.yml | 4 +- .../nf-core/cnvpytor/view/tests/main.nf.test | 90 + .../cnvpytor/view/tests/main.nf.test.snap | 111 + .../cnvpytor/view/tests/nextflow.config | 5 + modules/nf-core/cobrameta/environment.yml | 2 - .../cobs/classicconstruct/environment.yml | 2 - modules/nf-core/cobs/classicconstruct/main.nf | 4 +- .../cobs/classicconstruct/tests/main.nf.test | 10 +- .../classicconstruct/tests/main.nf.test.snap | 15 +- .../cobs/compactconstruct/environment.yml | 2 - .../cobs/compactconstruct/tests/main.nf.test | 4 +- .../nf-core/concoct/concoct/environment.yml | 2 - modules/nf-core/concoct/concoct/main.nf | 21 +- modules/nf-core/concoct/concoct/meta.yml | 4 +- .../concoct/concoct/tests/main.nf.test | 105 + .../concoct/concoct/tests/main.nf.test.snap | 173 ++ .../nf-core/concoct/concoct/tests/tags.yml | 2 + .../concoctcoveragetable/environment.yml | 2 - .../concoct/concoctcoveragetable/main.nf | 16 +- .../concoct/concoctcoveragetable/meta.yml | 2 +- .../concoctcoveragetable/tests/main.nf.test | 84 + .../tests/main.nf.test.snap | 70 + .../concoctcoveragetable/tests/tags.yml | 2 + .../concoct/cutupfasta/environment.yml | 2 - modules/nf-core/concoct/cutupfasta/main.nf | 18 +- modules/nf-core/concoct/cutupfasta/meta.yml | 2 +- .../concoct/cutupfasta/tests/main.nf.test | 60 + .../cutupfasta/tests/main.nf.test.snap | 84 + .../nf-core/concoct/cutupfasta/tests/tags.yml | 2 + .../concoct/extractfastabins/environment.yml | 2 - .../nf-core/concoct/extractfastabins/main.nf | 17 +- .../nf-core/concoct/extractfastabins/meta.yml | 2 +- .../extractfastabins/tests/main.nf.test | 124 + .../extractfastabins/tests/main.nf.test.snap | 72 + .../concoct/extractfastabins/tests/tags.yml | 2 + .../mergecutupclustering/environment.yml | 2 - .../concoct/mergecutupclustering/main.nf | 17 +- .../concoct/mergecutupclustering/meta.yml | 2 +- .../mergecutupclustering/tests/main.nf.test | 107 + .../tests/main.nf.test.snap | 70 + .../mergecutupclustering/tests/tags.yml | 2 + modules/nf-core/conifer/environment.yml | 2 - .../assesssignificance/environment.yml | 2 - .../controlfreec/freec/environment.yml | 2 - .../controlfreec/freec/tests/main.nf.test | 8 +- .../freec/tests/main.nf.test.snap | 25 +- .../controlfreec/freec2bed/environment.yml | 2 - .../controlfreec/freec2circos/environment.yml | 2 - .../controlfreec/makegraph/environment.yml | 2 - .../controlfreec/makegraph2/environment.yml | 2 - .../nf-core/cooler/balance/environment.yml | 2 - modules/nf-core/cooler/cload/environment.yml | 2 - modules/nf-core/cooler/digest/environment.yml | 2 - .../nf-core/cooler/digest/tests/main.nf.test | 34 + .../cooler/digest/tests/main.nf.test.snap | 25 + modules/nf-core/cooler/dump/environment.yml | 4 +- modules/nf-core/cooler/dump/main.nf | 16 +- .../nf-core/cooler/dump/tests/main.nf.test | 60 + .../cooler/dump/tests/main.nf.test.snap | 68 + .../nf-core/cooler/makebins/environment.yml | 2 - .../cooler/makebins/tests/main.nf.test | 36 + .../cooler/makebins/tests/main.nf.test.snap | 35 + modules/nf-core/cooler/merge/environment.yml | 2 - .../nf-core/cooler/zoomify/environment.yml | 2 - modules/nf-core/coreograph/environment.yml | 2 - modules/nf-core/coreograph/meta.yml | 2 +- .../nf-core/crabz/compress/environment.yml | 2 - .../nf-core/crabz/decompress/environment.yml | 2 - .../crisprcleanr/normalize/environment.yml | 2 - .../nf-core/crisprcleanr/normalize/meta.yml | 2 +- modules/nf-core/crumble/environment.yml | 2 - modules/nf-core/crumble/main.nf | 23 +- modules/nf-core/crumble/meta.yml | 2 +- modules/nf-core/crumble/tests/main.nf.test | 100 + .../nf-core/crumble/tests/main.nf.test.snap | 105 + modules/nf-core/crumble/tests/nextflow.config | 5 + modules/nf-core/csvtk/concat/environment.yml | 2 - modules/nf-core/csvtk/join/environment.yml | 2 - modules/nf-core/csvtk/split/environment.yml | 2 - .../custom/catadditionalfasta/environment.yml | 4 +- .../nf-core/custom/catadditionalfasta/main.nf | 15 +- .../catadditionalfasta/templates/fasta2gtf.py | 4 +- .../catadditionalfasta/tests/main.nf.test | 40 +- .../tests/main.nf.test.snap | 83 +- .../dumpsoftwareversions/environment.yml | 2 - .../templates/dumpsoftwareversions.py | 3 +- .../custom/getchromsizes/environment.yml | 5 +- modules/nf-core/custom/getchromsizes/main.nf | 7 +- .../custom/getchromsizes/tests/main.nf.test | 51 +- .../getchromsizes/tests/main.nf.test.snap | 140 +- .../nf-core/custom/gtffilter/environment.yml | 7 + modules/nf-core/custom/gtffilter/main.nf | 37 + modules/nf-core/custom/gtffilter/meta.yml | 51 + .../custom/gtffilter/templates/gtffilter.py | 124 + .../custom/gtffilter/tests/main.nf.test | 115 + .../custom/gtffilter/tests/main.nf.test.snap | 134 + .../nf-core/custom/gtffilter/tests/tags.yml | 2 + .../custom/matrixfilter/environment.yml | 2 - modules/nf-core/custom/matrixfilter/meta.yml | 6 + .../matrixfilter/templates/matrixfilter.R | 26 +- .../sratoolsncbisettings/environment.yml | 2 - .../custom/tabulartogseacls/environment.yml | 4 +- .../custom/tabulartogseagct/environment.yml | 4 +- .../nf-core/custom/tx2gene/environment.yml | 2 - .../custom/tx2gene/templates/tx2gene.py | 7 +- .../nf-core/custom/tx2gene/tests/main.nf.test | 45 +- .../custom/tx2gene/tests/main.nf.test.snap | 96 +- modules/nf-core/cutadapt/environment.yml | 2 - modules/nf-core/cutadapt/tests/main.nf.test | 6 +- modules/nf-core/cutesv/environment.yml | 2 - modules/nf-core/cutesv/meta.yml | 1 + .../nf-core/damageprofiler/environment.yml | 2 - modules/nf-core/damageprofiler/meta.yml | 2 +- .../nf-core/dastool/dastool/environment.yml | 2 - .../dastool/fastatocontig2bin/environment.yml | 2 - .../dastool/fastatocontig2bin/meta.yml | 2 +- .../dastool/scaffolds2bin/environment.yml | 2 - .../nf-core/dastool/scaffolds2bin/meta.yml | 2 +- modules/nf-core/datavzrd/environment.yml | 5 + modules/nf-core/datavzrd/main.nf | 63 + modules/nf-core/datavzrd/meta.yml | 46 + modules/nf-core/datavzrd/tests/main.nf.test | 112 + .../nf-core/datavzrd/tests/main.nf.test.snap | 162 ++ modules/nf-core/datavzrd/tests/tags.yml | 2 + modules/nf-core/dedup/environment.yml | 2 - .../deeparg/downloaddata/environment.yml | 2 - .../nf-core/deeparg/predict/environment.yml | 2 - .../deeparg/predict/tests/main.nf.test | 4 +- .../nf-core/deepbgc/download/environment.yml | 2 - .../nf-core/deepbgc/pipeline/environment.yml | 2 - modules/nf-core/deepbgc/pipeline/meta.yml | 3 + .../deepbgc/pipeline/tests/main.nf.test | 2 +- .../deepcell/mesmer/tests/main.nf.test | 2 +- modules/nf-core/deeptmhmm/environment.yml | 2 - .../deeptools/bamcoverage/environment.yml | 6 +- modules/nf-core/deeptools/bamcoverage/main.nf | 25 +- .../nf-core/deeptools/bamcoverage/meta.yml | 2 + .../deeptools/bamcoverage/tests/main.nf.test | 118 + .../bamcoverage/tests/main.nf.test.snap | 94 + .../deeptools/bamcoverage/tests/tags.yml | 2 + .../deeptools/computematrix/environment.yml | 4 +- .../nf-core/deeptools/computematrix/main.nf | 16 +- .../computematrix/tests/main.nf.test | 67 + .../computematrix/tests/main.nf.test.snap | 72 + .../computematrix/tests/nextflow.config | 7 + .../deeptools/computematrix/tests/tags.yml | 2 + .../deeptools/multibamsummary/environment.yml | 4 +- .../nf-core/deeptools/multibamsummary/main.nf | 22 +- .../deeptools/multibamsummary/meta.yml | 6 +- .../multibamsummary/tests/main.nf.test | 75 + .../multibamsummary/tests/main.nf.test.snap | 50 + .../deeptools/multibamsummary/tests/tags.yml | 2 + .../deeptools/plotcorrelation/environment.yml | 4 +- .../nf-core/deeptools/plotcorrelation/main.nf | 17 +- .../deeptools/plotcorrelation/meta.yml | 6 +- .../plotcorrelation/tests/main.nf.test | 194 ++ .../plotcorrelation/tests/main.nf.test.snap | 114 + .../deeptools/plotcorrelation/tests/tags.yml | 2 + .../deeptools/plotfingerprint/environment.yml | 4 +- .../nf-core/deeptools/plotfingerprint/main.nf | 17 +- .../plotfingerprint/tests/main.nf.test | 62 + .../plotfingerprint/tests/main.nf.test.snap | 90 + .../deeptools/plotfingerprint/tests/tags.yml | 2 + .../deeptools/plotheatmap/environment.yml | 6 +- modules/nf-core/deeptools/plotheatmap/main.nf | 16 +- .../deeptools/plotheatmap/tests/main.nf.test | 60 + .../plotheatmap/tests/main.nf.test.snap | 69 + .../deeptools/plotheatmap/tests/tags.yml | 2 + .../nf-core/deeptools/plotpca/environment.yml | 4 +- modules/nf-core/deeptools/plotpca/main.nf | 16 +- modules/nf-core/deeptools/plotpca/meta.yml | 6 +- .../deeptools/plotpca/tests/main.nf.test | 98 + .../deeptools/plotpca/tests/main.nf.test.snap | 65 + .../nf-core/deeptools/plotpca/tests/tags.yml | 2 + .../deeptools/plotprofile/environment.yml | 4 +- modules/nf-core/deeptools/plotprofile/main.nf | 16 +- .../deeptools/plotprofile/tests/main.nf.test | 60 + .../plotprofile/tests/main.nf.test.snap | 69 + .../deeptools/plotprofile/tests/tags.yml | 2 + modules/nf-core/deepvariant/README.md | 54 +- .../nf-core/deepvariant/callvariants/main.nf | 58 + .../nf-core/deepvariant/callvariants/meta.yml | 40 + .../callvariants/tests/main.nf.test | 85 + .../callvariants/tests/main.nf.test.snap | 59 + .../callvariants/tests/nextflow.config | 11 + .../deepvariant/callvariants/tests/tags.yml | 2 + modules/nf-core/deepvariant/main.nf | 60 +- .../nf-core/deepvariant/makeexamples/main.nf | 66 + .../nf-core/deepvariant/makeexamples/meta.yml | 88 + .../makeexamples/tests/main.nf.test | 228 ++ .../makeexamples/tests/main.nf.test.snap | 134 + .../makeexamples/tests/nextflow.config | 6 + .../deepvariant/makeexamples/tests/tags.yml | 2 + modules/nf-core/deepvariant/meta.yml | 11 +- .../deepvariant/postprocessvariants/main.nf | 77 + .../deepvariant/postprocessvariants/meta.yml | 90 + .../postprocessvariants/tests/main.nf.test | 118 + .../tests/main.nf.test.snap | 180 ++ .../postprocessvariants/tests/nextflow.config | 10 + .../postprocessvariants/tests/tags.yml | 2 + .../deepvariant/rundeepvariant/main.nf | 78 + .../deepvariant/rundeepvariant/meta.yml | 92 + .../rundeepvariant/tests/main.nf.test | 166 ++ .../rundeepvariant/tests/main.nf.test.snap | 358 +++ .../tests/nextflow-intervals.config | 8 + .../nextflow-non-autosomal-calling.config | 8 + .../rundeepvariant/tests/nextflow.config | 8 + .../deepvariant/rundeepvariant/tests/tags.yml | 2 + .../nf-core/deepvariant/tests/main.nf.test | 82 +- .../deepvariant/tests/main.nf.test.snap | 269 -- .../tests/nextflow-intervals.config | 8 - .../nf-core/deepvariant/tests/nextflow.config | 8 - modules/nf-core/delly/call/environment.yml | 2 - modules/nf-core/demuxem/environment.yml | 2 - .../deseq2/differential/environment.yml | 2 - .../nf-core/diamond/blastp/environment.yml | 2 - .../nf-core/diamond/blastp/tests/main.nf.test | 25 +- .../diamond/blastp/tests/main.nf.test.snap | 32 +- .../nf-core/diamond/blastx/environment.yml | 2 - .../nf-core/diamond/blastx/tests/main.nf.test | 16 +- .../diamond/blastx/tests/main.nf.test.snap | 23 +- .../nf-core/diamond/cluster/environment.yml | 7 + modules/nf-core/diamond/cluster/main.nf | 51 + modules/nf-core/diamond/cluster/meta.yml | 51 + .../diamond/cluster/tests/main.nf.test | 75 + .../diamond/cluster/tests/main.nf.test.snap | 103 + .../nf-core/diamond/cluster/tests/tags.yml | 2 + .../nf-core/diamond/makedb/environment.yml | 2 - .../nf-core/diamond/makedb/tests/main.nf.test | 21 +- .../diamond/makedb/tests/main.nf.test.snap | 114 +- modules/nf-core/dragmap/align/environment.yml | 2 - .../nf-core/dragmap/hashtable/environment.yml | 2 - modules/nf-core/dragonflye/environment.yml | 2 - .../dshbio/exportsegments/environment.yml | 2 - .../dshbio/exportsegments/tests/main.nf.test | 109 + .../exportsegments/tests/main.nf.test.snap | 134 + .../nf-core/dshbio/filterbed/environment.yml | 2 - modules/nf-core/dshbio/filterbed/main.nf | 12 + .../dshbio/filterbed/tests/main.nf.test | 59 + .../dshbio/filterbed/tests/main.nf.test.snap | 68 + .../dshbio/filterbed/tests/nextflow.config | 6 + .../nf-core/dshbio/filtergff3/environment.yml | 2 - .../dshbio/filtergff3/tests/main.nf.test | 38 + .../dshbio/filtergff3/tests/main.nf.test.snap | 35 + .../dshbio/filtergff3/tests/nextflow.config | 6 + .../nf-core/dshbio/splitbed/environment.yml | 2 - modules/nf-core/dshbio/splitbed/main.nf | 12 + .../dshbio/splitbed/tests/main.nf.test | 59 + .../dshbio/splitbed/tests/main.nf.test.snap | 80 + .../dshbio/splitbed/tests/nextflow.config | 5 + .../nf-core/dshbio/splitgff3/environment.yml | 2 - modules/nf-core/dshbio/splitgff3/main.nf | 12 + .../dshbio/splitgff3/tests/main.nf.test | 57 + .../dshbio/splitgff3/tests/main.nf.test.snap | 74 + .../dshbio/splitgff3/tests/nextflow.config | 6 + modules/nf-core/duphold/environment.yml | 2 - modules/nf-core/duphold/meta.yml | 5 +- modules/nf-core/dupradar/environment.yml | 2 - modules/nf-core/dupradar/main.nf | 3 +- modules/nf-core/dupradar/templates/dupradar.r | 15 +- modules/nf-core/dupradar/tests/main.nf.test | 76 +- .../nf-core/dupradar/tests/main.nf.test.snap | 630 ++--- modules/nf-core/dysgu/environment.yml | 5 + modules/nf-core/dysgu/main.nf | 55 + modules/nf-core/dysgu/meta.yml | 68 + modules/nf-core/dysgu/tests/main.nf.test | 96 + modules/nf-core/dysgu/tests/main.nf.test.snap | 75 + modules/nf-core/dysgu/tests/nextflow.config | 5 + modules/nf-core/dysgu/tests/tags.yml | 2 + modules/nf-core/ectyper/environment.yml | 2 - modules/nf-core/ectyper/tests/main.nf.test | 40 + .../nf-core/ectyper/tests/main.nf.test.snap | 25 + modules/nf-core/eggnogmapper/environment.yml | 2 - modules/nf-core/eggnogmapper/meta.yml | 5 + .../nf-core/eggnogmapper/tests/main.nf.test | 6 +- modules/nf-core/eido/convert/environment.yml | 5 +- modules/nf-core/eido/convert/main.nf | 16 +- modules/nf-core/eido/convert/meta.yml | 2 +- .../nf-core/eido/convert/tests/main.nf.test | 78 + .../eido/convert/tests/main.nf.test.snap | 71 + .../eido/convert/tests/nextflow.config | 5 + modules/nf-core/eido/validate/environment.yml | 2 - modules/nf-core/eido/validate/meta.yml | 2 +- .../nf-core/eido/validate/tests/main.nf.test | 64 + .../eido/validate/tests/main.nf.test.snap | 28 + .../eido/validate/tests/nextflow.config | 5 + .../eigenstratsnpcoverage/environment.yml | 2 - .../eigenstratsnpcoverage/meta.yml | 2 +- modules/nf-core/eklipse/environment.yml | 2 - modules/nf-core/eklipse/tests/main.nf.test | 6 +- modules/nf-core/elprep/filter/environment.yml | 4 +- modules/nf-core/elprep/filter/main.nf | 24 +- modules/nf-core/elprep/filter/meta.yml | 8 +- .../nf-core/elprep/filter/tests/main.nf.test | 103 + .../elprep/filter/tests/main.nf.test.snap | 90 + .../elprep/filter/tests/nextflow.config | 5 + modules/nf-core/elprep/merge/environment.yml | 2 - modules/nf-core/elprep/merge/meta.yml | 2 +- modules/nf-core/elprep/split/environment.yml | 4 +- modules/nf-core/elprep/split/main.nf | 22 +- modules/nf-core/elprep/split/meta.yml | 3 +- .../nf-core/elprep/split/tests/main.nf.test | 63 + .../elprep/split/tests/main.nf.test.snap | 54 + .../elprep/split/tests/nextflow.config | 5 + modules/nf-core/emboss/cons/environment.yml | 2 - .../nf-core/emboss/cons/tests/main.nf.test | 57 + .../emboss/cons/tests/main.nf.test.snap | 72 + modules/nf-core/emboss/revseq/environment.yml | 2 - .../nf-core/emboss/revseq/tests/main.nf.test | 57 + .../emboss/revseq/tests/main.nf.test.snap | 72 + modules/nf-core/emboss/seqret/environment.yml | 2 - modules/nf-core/emmtyper/environment.yml | 2 - modules/nf-core/emmtyper/tests/main.nf.test | 32 + .../nf-core/emmtyper/tests/main.nf.test.snap | 37 + modules/nf-core/endorspy/environment.yml | 2 - modules/nf-core/endorspy/meta.yml | 2 +- .../ensemblvep/download/environment.yml | 4 +- modules/nf-core/ensemblvep/download/main.nf | 4 +- .../ensemblvep/download/tests/main.nf.test | 4 +- .../download/tests/main.nf.test.snap | 444 ++-- .../ensemblvep/download/tests/nextflow.config | 2 +- modules/nf-core/ensemblvep/environment.yml | 2 - .../ensemblvep/filtervep/environment.yml | 4 +- modules/nf-core/ensemblvep/filtervep/main.nf | 5 +- .../ensemblvep/filtervep/tests/main.nf.test | 136 + .../filtervep/tests/main.nf.test.snap | 26 + .../filtervep/tests/nextflow.config | 10 + .../ensemblvep/filtervep/tests/tab.gz.config | 24 + .../ensemblvep/filtervep/tests/tags.yml | 2 + .../ensemblvep/filtervep/tests/vcf.config | 23 + .../nf-core/ensemblvep/vep/environment.yml | 4 +- modules/nf-core/ensemblvep/vep/main.nf | 8 +- .../nf-core/ensemblvep/vep/tests/main.nf.test | 6 +- .../ensemblvep/vep/tests/main.nf.test.snap | 12 +- .../ensemblvep/vep/tests/nextflow.config | 2 +- .../entrezdirect/esearch/environment.yml | 2 - modules/nf-core/entrezdirect/esearch/meta.yml | 4 +- .../entrezdirect/esummary/environment.yml | 2 - modules/nf-core/entrezdirect/esummary/main.nf | 14 + .../nf-core/entrezdirect/esummary/meta.yml | 4 +- .../entrezdirect/esummary/tests/main.nf.test | 122 + .../esummary/tests/main.nf.test.snap | 86 + .../entrezdirect/xtract/environment.yml | 2 - modules/nf-core/entrezdirect/xtract/meta.yml | 6 +- modules/nf-core/epang/place/environment.yml | 2 - modules/nf-core/epang/place/main.nf | 18 + modules/nf-core/epang/place/meta.yml | 2 +- .../nf-core/epang/place/tests/main.nf.test | 79 + .../epang/place/tests/main.nf.test.snap | 32 + .../nf-core/epang/place/tests/nextflow.config | 5 + modules/nf-core/epang/split/environment.yml | 2 - modules/nf-core/epang/split/meta.yml | 2 +- modules/nf-core/estsfs/environment.yml | 7 + modules/nf-core/estsfs/main.nf | 5 +- modules/nf-core/estsfs/meta.yml | 2 +- modules/nf-core/estsfs/tests/main.nf.test | 60 + .../nf-core/estsfs/tests/main.nf.test.snap | 100 + .../nf-core/evigene/tr2aacds/environment.yml | 7 + modules/nf-core/evigene/tr2aacds/main.nf | 107 + modules/nf-core/evigene/tr2aacds/meta.yml | 56 + .../evigene/tr2aacds/tests/main.nf.test | 64 + .../evigene/tr2aacds/tests/main.nf.test.snap | 120 + .../nf-core/expansionhunter/environment.yml | 3 - .../expansionhunter/tests/main.nf.test | 20 +- .../merge/environment.yml | 2 - .../expansionhunterdenovo/merge/meta.yml | 2 +- .../profile/environment.yml | 2 - .../expansionhunterdenovo/profile/meta.yml | 2 +- .../profile/tests/main.nf.test | 63 + .../profile/tests/main.nf.test.snap | 144 ++ modules/nf-core/falco/environment.yml | 2 - modules/nf-core/famsa/align/environment.yml | 2 - .../nf-core/famsa/align/tests/main.nf.test | 8 +- .../nf-core/famsa/guidetree/environment.yml | 2 - modules/nf-core/famsa/guidetree/main.nf | 1 - .../famsa/guidetree/tests/main.nf.test | 2 +- modules/nf-core/faqcs/environment.yml | 2 - modules/nf-core/faqcs/main.nf | 1 - modules/nf-core/fargene/environment.yml | 2 - modules/nf-core/fargene/main.nf | 32 +- modules/nf-core/fargene/meta.yml | 6 +- modules/nf-core/fargene/tests/main.nf.test | 62 +- .../nf-core/fargene/tests/main.nf.test.snap | 275 +- modules/nf-core/fastani/environment.yml | 2 - modules/nf-core/fastani/tests/main.nf.test | 4 +- .../nf-core/fastavalidator/environment.yml | 2 - .../nf-core/fastavalidator/tests/main.nf.test | 4 +- modules/nf-core/fastawindows/environment.yml | 2 - modules/nf-core/fastawindows/main.nf | 19 + modules/nf-core/fastawindows/meta.yml | 2 +- .../nf-core/fastawindows/tests/main.nf.test | 57 + .../fastawindows/tests/main.nf.test.snap | 196 ++ modules/nf-core/fastk/fastk/environment.yml | 2 - .../nf-core/fastk/fastk/tests/main.nf.test | 12 +- modules/nf-core/fastk/histex/environment.yml | 2 - modules/nf-core/fastk/histex/meta.yml | 3 +- modules/nf-core/fastk/merge/environment.yml | 2 - modules/nf-core/fastk/merge/meta.yml | 2 +- modules/nf-core/fastme/environment.yml | 2 - modules/nf-core/fastp/environment.yml | 2 - modules/nf-core/fastp/main.nf | 6 +- modules/nf-core/fastp/tests/main.nf.test | 371 +-- modules/nf-core/fastp/tests/main.nf.test.snap | 781 ++++-- modules/nf-core/fastqc/environment.yml | 2 - modules/nf-core/fastqc/main.nf | 5 +- modules/nf-core/fastqc/tests/main.nf.test | 225 +- .../nf-core/fastqc/tests/main.nf.test.snap | 370 ++- modules/nf-core/fastqscan/environment.yml | 2 - modules/nf-core/fastqscan/tests/main.nf.test | 2 +- .../buildfromindex/environment.yml | 2 - .../fastqscreen/fastqscreen/environment.yml | 3 +- .../nf-core/fastqscreen/fastqscreen/main.nf | 10 +- .../nf-core/fastqscreen/fastqscreen/meta.yml | 18 +- .../fastqscreen/tests/main.nf.test | 32 +- .../fastqscreen/tests/main.nf.test.snap | 65 +- .../fastqscreen/tests/nextflow.config | 5 + modules/nf-core/fasttree/environment.yml | 2 - modules/nf-core/fasttree/meta.yml | 1 + modules/nf-core/fasttree/tests/main.nf.test | 31 + .../nf-core/fasttree/tests/main.nf.test.snap | 25 + .../nf-core/fastx/collapser/environment.yml | 2 - .../fastx/collapser/tests/main.nf.test | 4 +- .../nf-core/fcs/fcsadaptor/environment.yml | 2 - .../nf-core/fcs/fcsadaptor/tests/main.nf.test | 6 +- modules/nf-core/fcs/fcsgx/environment.yml | 2 - modules/nf-core/fcs/fcsgx/meta.yml | 2 +- modules/nf-core/ffq/environment.yml | 2 - modules/nf-core/ffq/meta.yml | 2 +- modules/nf-core/ffq/tests/main.nf.test | 50 + modules/nf-core/ffq/tests/main.nf.test.snap | 48 + .../callduplexconsensusreads/environment.yml | 4 +- .../fgbio/callduplexconsensusreads/main.nf | 34 +- .../fgbio/callduplexconsensusreads/meta.yml | 11 +- .../tests/main.nf.test | 62 + .../tests/main.nf.test.snap | 72 + .../callduplexconsensusreads/tests/tags.yml | 2 + .../environment.yml | 4 +- .../fgbio/callmolecularconsensusreads/main.nf | 41 +- .../callmolecularconsensusreads/meta.yml | 11 +- .../tests/main.nf.test | 72 + .../tests/main.nf.test.snap | 68 + .../tests/sort.config | 6 + .../tests/tags.yml | 2 + .../collectduplexseqmetrics/environment.yml | 8 + .../fgbio/collectduplexseqmetrics/main.nf | 80 + .../fgbio/collectduplexseqmetrics/meta.yml | 78 + .../tests/main.nf.test | 79 + .../tests/main.nf.test.snap | 106 + .../collectduplexseqmetrics/tests/tags.yml | 2 + .../nf-core/fgbio/fastqtobam/environment.yml | 4 +- modules/nf-core/fgbio/fastqtobam/main.nf | 27 +- .../fgbio/fastqtobam/tests/main.nf.test | 28 +- .../fgbio/fastqtobam/tests/main.nf.test.snap | 56 +- .../filterconsensusreads/environment.yml | 4 +- .../fgbio/filterconsensusreads/main.nf | 30 +- .../fgbio/filterconsensusreads/meta.yml | 29 +- .../filterconsensusreads/tests/main.nf.test | 69 + .../tests/main.nf.test.snap | 72 + .../fgbio/filterconsensusreads/tests/tags.yml | 2 + .../fgbio/groupreadsbyumi/environment.yml | 4 +- modules/nf-core/fgbio/groupreadsbyumi/main.nf | 47 +- .../nf-core/fgbio/groupreadsbyumi/meta.yml | 3 +- .../fgbio/groupreadsbyumi/tests/main.nf.test | 60 + .../groupreadsbyumi/tests/main.nf.test.snap | 108 + .../fgbio/groupreadsbyumi/tests/tags.yml | 2 + modules/nf-core/fgbio/sortbam/environment.yml | 4 +- modules/nf-core/fgbio/sortbam/main.nf | 35 +- .../nf-core/fgbio/sortbam/tests/main.nf.test | 56 + .../fgbio/sortbam/tests/main.nf.test.snap | 68 + modules/nf-core/fgbio/sortbam/tests/tags.yml | 2 + .../nf-core/fgbio/zipperbams/environment.yml | 4 +- modules/nf-core/fgbio/zipperbams/main.nf | 40 +- modules/nf-core/fgbio/zipperbams/meta.yml | 38 +- .../fgbio/zipperbams/tests/main.nf.test | 83 + .../fgbio/zipperbams/tests/main.nf.test.snap | 72 + .../fgbio/zipperbams/tests/nextflow.config | 5 + .../nf-core/fgbio/zipperbams/tests/tags.yml | 2 + modules/nf-core/filtlong/environment.yml | 2 - modules/nf-core/filtlong/tests/main.nf.test | 51 +- .../nf-core/filtlong/tests/main.nf.test.snap | 37 +- .../nf-core/filtlong/tests/nextflow.config | 4 - modules/nf-core/filtlong/tests/tags.yml | 2 - modules/nf-core/flash/environment.yml | 2 - modules/nf-core/flash/tests/main.nf.test | 14 +- modules/nf-core/flash/tests/main.nf.test.snap | 87 +- modules/nf-core/flye/environment.yml | 4 +- modules/nf-core/flye/main.nf | 4 +- modules/nf-core/flye/meta.yml | 2 +- modules/nf-core/flye/tests/main.nf.test | 206 +- modules/nf-core/flye/tests/main.nf.test.snap | 202 +- modules/nf-core/flye/tests/nextflow.config | 4 - .../nf-core/foldcomp/compress/environment.yml | 2 - .../foldcomp/compress/tests/main.nf.test | 6 +- .../foldcomp/decompress/environment.yml | 2 - .../foldcomp/decompress/tests/main.nf.test | 2 +- .../nf-core/foldmason/easymsa/environment.yml | 8 + modules/nf-core/foldmason/easymsa/main.nf | 56 + modules/nf-core/foldmason/easymsa/meta.yml | 55 + .../foldmason/easymsa/tests/main.nf.test | 114 + .../foldmason/easymsa/tests/main.nf.test.snap | 137 + .../nf-core/foldmason/easymsa/tests/tags.yml | 2 + .../nf-core/foldseek/createdb/environment.yml | 3 +- modules/nf-core/foldseek/createdb/main.nf | 35 +- modules/nf-core/foldseek/createdb/meta.yml | 2 +- .../foldseek/createdb/tests/main.nf.test | 32 +- .../foldseek/createdb/tests/main.nf.test.snap | 134 +- .../foldseek/easysearch/environment.yml | 3 +- modules/nf-core/foldseek/easysearch/main.nf | 4 +- modules/nf-core/foldseek/easysearch/meta.yml | 2 +- .../foldseek/easysearch/tests/main.nf.test | 52 +- .../easysearch/tests/main.nf.test.snap | 31 + modules/nf-core/fq/generate/environment.yml | 2 - modules/nf-core/fq/generate/main.nf | 12 + modules/nf-core/fq/generate/meta.yml | 4 +- .../nf-core/fq/generate/tests/main.nf.test | 23 +- .../fq/generate/tests/main.nf.test.snap | 57 +- .../nf-core/fq/generate/tests/nextflow.config | 5 +- modules/nf-core/fq/lint/environment.yml | 2 - modules/nf-core/fq/lint/meta.yml | 7 +- modules/nf-core/fq/lint/tests/main.nf.test | 8 +- modules/nf-core/fq/subsample/environment.yml | 2 - modules/nf-core/fq/subsample/main.nf | 12 + .../nf-core/fq/subsample/tests/main.nf.test | 89 +- .../fq/subsample/tests/main.nf.test.snap | 266 ++ modules/nf-core/fqtk/environment.yml | 2 - modules/nf-core/fqtk/main.nf | 1 - modules/nf-core/freebayes/environment.yml | 2 - modules/nf-core/freebayes/tests/main.nf.test | 101 +- .../nf-core/freebayes/tests/main.nf.test.snap | 96 +- modules/nf-core/freyja/boot/environment.yml | 2 - .../nf-core/freyja/boot/tests/main.nf.test | 5 +- modules/nf-core/freyja/demix/environment.yml | 2 - .../nf-core/freyja/demix/tests/main.nf.test | 4 +- modules/nf-core/freyja/update/environment.yml | 2 - .../nf-core/freyja/variants/environment.yml | 2 - .../freyja/variants/tests/main.nf.test | 4 +- modules/nf-core/galah/environment.yml | 2 - modules/nf-core/galah/meta.yml | 2 +- modules/nf-core/gamma/gamma/environment.yml | 2 - modules/nf-core/gamma/gamma/meta.yml | 4 +- .../nf-core/gamma/gamma/tests/main.nf.test | 60 + .../gamma/gamma/tests/main.nf.test.snap | 156 ++ .../nf-core/gamma/gamma/tests/nextflow.config | 3 + modules/nf-core/gangstr/environment.yml | 2 - modules/nf-core/gangstr/meta.yml | 2 +- .../nf-core/ganon/buildcustom/environment.yml | 2 - .../nf-core/ganon/classify/environment.yml | 2 - modules/nf-core/ganon/report/environment.yml | 2 - .../nf-core/ganon/report/tests/main.nf.test | 4 +- modules/nf-core/ganon/table/environment.yml | 2 - .../nf-core/ganon/table/tests/main.nf.test | 4 +- .../gappa/examineassign/environment.yml | 2 - modules/nf-core/gappa/examineassign/main.nf | 13 + modules/nf-core/gappa/examineassign/meta.yml | 2 +- .../gappa/examineassign/tests/main.nf.test | 79 + .../examineassign/tests/main.nf.test.snap | 91 + .../gappa/examineassign/tests/nextflow.config | 4 + .../gappa/examinegraft/environment.yml | 2 - modules/nf-core/gappa/examinegraft/main.nf | 11 + modules/nf-core/gappa/examinegraft/meta.yml | 6 +- .../gappa/examinegraft/tests/main.nf.test | 58 + .../examinegraft/tests/main.nf.test.snap | 68 + .../gappa/examineheattree/environment.yml | 2 - modules/nf-core/gappa/examineheattree/main.nf | 13 + .../nf-core/gappa/examineheattree/meta.yml | 2 +- .../gappa/examineheattree/tests/main.nf.test | 68 + .../examineheattree/tests/main.nf.test.snap | 124 + .../examineheattree/tests/nextflow.config | 6 + .../gatk/indelrealigner/environment.yml | 2 - modules/nf-core/gatk/indelrealigner/meta.yml | 7 +- .../realignertargetcreator/environment.yml | 2 - .../gatk/realignertargetcreator/meta.yml | 7 +- .../realignertargetcreator/tests/main.nf.test | 49 + .../tests/main.nf.test.snap | 35 + .../gatk/unifiedgenotyper/environment.yml | 2 - .../gatk/unifiedgenotyper/tests/main.nf.test | 56 + .../unifiedgenotyper/tests/main.nf.test.snap | 15 + .../addorreplacereadgroups/environment.yml | 2 - .../gatk4/annotateintervals/environment.yml | 2 - .../annotateintervals/tests/main.nf.test | 58 +- .../nf-core/gatk4/applybqsr/environment.yml | 2 - .../nf-core/gatk4/applyvqsr/environment.yml | 2 - .../gatk4/asereadcounter/environment.yml | 2 - .../gatk4/baserecalibrator/environment.yml | 2 - .../gatk4/bedtointervallist/environment.yml | 2 - .../calculatecontamination/environment.yml | 2 - .../calibratedragstrmodel/environment.yml | 2 - .../calibratedragstrmodel/tests/main.nf.test | 137 + .../tests/main.nf.test.snap | 78 + .../gatk4/collectreadcounts/environment.yml | 2 - .../collectreadcounts/tests/main.nf.test | 104 + .../collectreadcounts/tests/main.nf.test.snap | 97 + .../tests/nextflow.cram.config | 5 + .../tests/nextflow.hdf5.config | 5 + .../tests/nextflow.tsv.config | 5 + .../gatk4/collectsvevidence/environment.yml | 2 - .../collectsvevidence/tests/main.nf.test | 121 + .../collectsvevidence/tests/main.nf.test.snap | 52 + .../collectsvevidence/tests/nextflow.config | 5 + .../gatk4/combinegvcfs/environment.yml | 2 - .../gatk4/composestrtablefile/environment.yml | 2 - .../composestrtablefile/tests/main.nf.test | 38 + .../tests/main.nf.test.snap | 15 + .../condensedepthevidence/environment.yml | 2 - .../condensedepthevidence/tests/main.nf.test | 44 + .../tests/main.nf.test.snap | 19 + .../environment.yml | 2 - .../createsequencedictionary/environment.yml | 2 - .../environment.yml | 2 - .../gatk4/denoisereadcounts/environment.yml | 2 - .../denoisereadcounts/tests/main.nf.test | 17 +- .../denoisereadcounts/tests/main.nf.test.snap | 7 +- .../estimatelibrarycomplexity/environment.yml | 2 - .../nf-core/gatk4/fastqtosam/environment.yml | 2 - .../gatk4/fastqtosam/tests/main.nf.test | 64 + .../gatk4/fastqtosam/tests/main.nf.test.snap | 28 + .../gatk4/filterintervals/environment.yml | 2 - .../gatk4/filterintervals/tests/main.nf.test | 38 + .../filterintervals/tests/main.nf.test.snap | 35 + .../filterintervals/tests/nextflow.config | 5 + .../gatk4/filtermutectcalls/environment.yml | 2 - .../filtervarianttranches/environment.yml | 2 - .../gatk4/gatherbqsrreports/environment.yml | 2 - .../gatherbqsrreports/tests/main.nf.test | 60 + .../gatherbqsrreports/tests/main.nf.test.snap | 72 + .../gatherpileupsummaries/environment.yml | 2 - .../gatk4/gatherpileupsummaries/main.nf | 2 +- .../gatherpileupsummaries/tests/main.nf.test | 37 + .../tests/main.nf.test.snap | 37 + .../tests/nextflow.config | 5 + .../gatk4/genomicsdbimport/environment.yml | 2 - .../gatk4/genomicsdbimport/tests/main.nf.test | 41 +- .../genomicsdbimport/tests/main.nf.test.snap | 92 +- .../gatk4/genotypegvcfs/environment.yml | 2 - modules/nf-core/gatk4/genotypegvcfs/main.nf | 18 +- modules/nf-core/gatk4/genotypegvcfs/meta.yml | 29 +- .../gatk4/genotypegvcfs/tests/main.nf.test | 285 ++ .../genotypegvcfs/tests/main.nf.test.snap | 191 ++ .../gatk4/getpileupsummaries/environment.yml | 2 - .../gatk4/haplotypecaller/environment.yml | 2 - modules/nf-core/gatk4/haplotypecaller/main.nf | 1 + .../gatk4/haplotypecaller/tests/main.nf.test | 86 +- .../haplotypecaller/tests/main.nf.test.snap | 88 +- .../gatk4/indexfeaturefile/environment.yml | 2 - .../gatk4/indexfeaturefile/tests/main.nf.test | 8 +- .../gatk4/intervallisttobed/environment.yml | 2 - .../gatk4/intervallisttools/environment.yml | 2 - .../learnreadorientationmodel/environment.yml | 2 - .../tests/main.nf.test | 38 + .../tests/main.nf.test.snap | 21 + .../tests/nextflow.config | 5 + .../leftalignandtrimvariants/environment.yml | 2 - .../tests/main.nf.test | 76 + .../tests/main.nf.test.snap | 30 + .../tests/nextflow.config | 6 + .../gatk4/markduplicates/environment.yml | 2 - .../gatk4/mergebamalignment/environment.yml | 2 - .../mergebamalignment/tests/main.nf.test | 73 + .../mergebamalignment/tests/main.nf.test.snap | 48 + .../gatk4/mergemutectstats/environment.yml | 2 - .../nf-core/gatk4/mergevcfs/environment.yml | 2 - modules/nf-core/gatk4/mutect2/environment.yml | 2 - .../nf-core/gatk4/mutect2/tests/main.nf.test | 124 +- .../gatk4/preprocessintervals/environment.yml | 2 - .../preprocessintervals/tests/main.nf.test | 49 + .../tests/main.nf.test.snap | 35 + .../preprocessintervals/tests/nextflow.config | 5 + .../nf-core/gatk4/printreads/environment.yml | 2 - .../gatk4/printreads/tests/main.nf.test | 95 + .../gatk4/printreads/tests/main.nf.test.snap | 40 + .../gatk4/printsvevidence/environment.yml | 2 - .../nf-core/gatk4/reblockgvcf/environment.yml | 2 - .../gatk4/reblockgvcf/tests/main.nf.test | 48 +- .../gatk4/reblockgvcf/tests/main.nf.test.snap | 27 +- .../nf-core/gatk4/revertsam/environment.yml | 2 - .../gatk4/revertsam/tests/main.nf.test | 59 + .../gatk4/revertsam/tests/main.nf.test.snap | 48 + .../nf-core/gatk4/samtofastq/environment.yml | 2 - .../gatk4/samtofastq/tests/main.nf.test | 88 + .../gatk4/samtofastq/tests/main.nf.test.snap | 66 + .../gatk4/selectvariants/environment.yml | 2 - .../gatk4/selectvariants/tests/main.nf.test | 10 +- .../nf-core/gatk4/shiftfasta/environment.yml | 2 - .../gatk4/shiftfasta/tests/main.nf.test | 44 + .../gatk4/shiftfasta/tests/main.nf.test.snap | 133 + .../gatk4/shiftfasta/tests/nextflow.config | 5 + .../gatk4/sitedepthtobaf/environment.yml | 2 - .../nf-core/gatk4/splitcram/environment.yml | 2 - modules/nf-core/gatk4/splitcram/main.nf | 19 + .../gatk4/splitcram/tests/main.nf.test | 63 + .../gatk4/splitcram/tests/main.nf.test.snap | 53 + .../gatk4/splitcram/tests/nextflow.config | 5 + .../gatk4/splitintervals/environment.yml | 2 - .../gatk4/splitintervals/tests/main.nf.test | 109 + .../splitintervals/tests/main.nf.test.snap | 119 + .../splitintervals/tests/nextflow.config | 5 + .../gatk4/splitncigarreads/environment.yml | 2 - .../gatk4/splitncigarreads/tests/main.nf.test | 42 +- .../splitncigarreads/tests/main.nf.test.snap | 27 +- .../nf-core/gatk4/svannotate/environment.yml | 2 - .../gatk4/svannotate/tests/main.nf.test | 53 +- .../gatk4/svannotate/tests/main.nf.test.snap | 27 +- .../nf-core/gatk4/svcluster/environment.yml | 2 - .../gatk4/svcluster/tests/main.nf.test | 20 +- .../gatk4/svcluster/tests/main.nf.test.snap | 9 +- .../gatk4/variantfiltration/environment.yml | 2 - .../gatk4/variantrecalibrator/environment.yml | 2 - .../gatk4/variantstotable/environment.yml | 6 + modules/nf-core/gatk4/variantstotable/main.nf | 63 + .../nf-core/gatk4/variantstotable/meta.yml | 83 + .../gatk4/variantstotable/tests/main.nf.test | 91 + .../variantstotable/tests/main.nf.test.snap | 69 + .../variantstotable/tests/nextflow.config | 6 + .../gatk4/variantstotable/tests/tags.yml | 2 + .../gatk4spark/applybqsr/environment.yml | 2 - .../baserecalibrator/environment.yml | 2 - .../gatk4spark/markduplicates/environment.yml | 2 - modules/nf-core/gawk/environment.yml | 2 - modules/nf-core/gecco/run/environment.yml | 2 - .../gem2/gem2bedmappability/environment.yml | 2 - .../nf-core/gem2/gem2bedmappability/meta.yml | 2 +- .../nf-core/gem2/gemindexer/environment.yml | 2 - modules/nf-core/gem2/gemindexer/meta.yml | 2 +- .../gem2/gemmappability/environment.yml | 2 - modules/nf-core/gem2/gemmappability/meta.yml | 2 +- .../nf-core/gem3/gem3indexer/environment.yml | 2 - .../nf-core/gem3/gem3mapper/environment.yml | 2 - .../gem3/gem3mapper/tests/main.nf.test | 10 +- modules/nf-core/genescopefk/environment.yml | 2 - modules/nf-core/genescopefk/meta.yml | 2 +- modules/nf-core/genmap/index/environment.yml | 2 - modules/nf-core/genmap/index/main.nf | 4 +- .../nf-core/genmap/index/tests/main.nf.test | 57 + .../genmap/index/tests/main.nf.test.snap | 112 + modules/nf-core/genmap/map/environment.yml | 2 - modules/nf-core/genmap/map/main.nf | 4 +- .../nf-core/genmod/annotate/environment.yml | 2 - .../genmod/annotate/tests/main.nf.test | 2 +- .../nf-core/genmod/compound/environment.yml | 2 - .../genmod/compound/tests/main.nf.test | 2 +- modules/nf-core/genmod/models/environment.yml | 2 - .../nf-core/genmod/models/tests/main.nf.test | 4 +- modules/nf-core/genmod/score/environment.yml | 2 - .../nf-core/genmod/score/tests/main.nf.test | 6 +- .../nf-core/genomad/download/environment.yml | 2 - .../nf-core/genomad/endtoend/environment.yml | 2 - modules/nf-core/genomad/endtoend/meta.yml | 4 +- .../genomad/endtoend/tests/main.nf.test | 4 +- modules/nf-core/genomescope2/environment.yml | 2 - .../nf-core/genotyphi/parse/environment.yml | 2 - modules/nf-core/genotyphi/parse/meta.yml | 3 +- modules/nf-core/genrich/environment.yml | 2 - modules/nf-core/geofetch/environment.yml | 2 - .../nf-core/geoquery/getgeo/environment.yml | 5 +- modules/nf-core/geoquery/getgeo/main.nf | 18 +- modules/nf-core/geoquery/getgeo/meta.yml | 2 +- .../geoquery/getgeo/tests/main.nf.test | 94 + .../geoquery/getgeo/tests/main.nf.test.snap | 116 + .../geoquery/getgeo/tests/nextflow.config | 6 + .../getorganelle/config/environment.yml | 7 + modules/nf-core/getorganelle/config/main.nf | 4 +- .../getorganelle/config/tests/main.nf.test | 73 + .../config/tests/main.nf.test.snap | 177 ++ modules/nf-core/gfaffix/environment.yml | 4 +- modules/nf-core/gfaffix/main.nf | 14 +- modules/nf-core/gfaffix/tests/main.nf.test | 63 + .../nf-core/gfaffix/tests/main.nf.test.snap | 83 + modules/nf-core/gfastats/environment.yml | 2 - modules/nf-core/gfastats/meta.yml | 2 +- .../nf-core/gfatools/gfa2fa/environment.yml | 2 - modules/nf-core/gfatools/gfa2fa/main.nf | 2 +- modules/nf-core/gfatools/gfa2fa/meta.yml | 2 +- .../gfatools/gfa2fa/tests/main.nf.test | 57 + .../gfatools/gfa2fa/tests/main.nf.test.snap | 72 + modules/nf-core/gfatools/stat/environment.yml | 2 - modules/nf-core/gfatools/stat/meta.yml | 2 +- .../nf-core/gfatools/stat/tests/main.nf.test | 57 + .../gfatools/stat/tests/main.nf.test.snap | 72 + modules/nf-core/gffcompare/environment.yml | 2 - modules/nf-core/gffcompare/meta.yml | 1 + modules/nf-core/gffcompare/tests/main.nf.test | 103 + .../gffcompare/tests/main.nf.test.snap | 365 +++ modules/nf-core/gffread/environment.yml | 2 - modules/nf-core/gget/gget/environment.yml | 2 - modules/nf-core/gget/gget/meta.yml | 4 +- modules/nf-core/glimpse/chunk/environment.yml | 2 - .../glimpse/concordance/environment.yml | 2 - .../nf-core/glimpse/ligate/environment.yml | 2 - modules/nf-core/glimpse/phase/environment.yml | 2 - .../nf-core/glimpse/sample/environment.yml | 2 - .../nf-core/glimpse2/chunk/environment.yml | 2 - .../glimpse2/concordance/environment.yml | 2 - modules/nf-core/glimpse2/concordance/meta.yml | 2 +- .../nf-core/glimpse2/ligate/environment.yml | 2 - .../nf-core/glimpse2/phase/environment.yml | 2 - modules/nf-core/glimpse2/phase/main.nf | 34 +- modules/nf-core/glimpse2/phase/meta.yml | 2 +- .../nf-core/glimpse2/phase/tests/main.nf.test | 136 + .../glimpse2/phase/tests/main.nf.test.snap | 29 + .../glimpse2/splitreference/environment.yml | 2 - modules/nf-core/glnexus/environment.yml | 2 - modules/nf-core/glnexus/meta.yml | 1 + modules/nf-core/gmmdemux/environment.yml | 7 + modules/nf-core/gmmdemux/main.nf | 73 + modules/nf-core/gmmdemux/meta.yml | 97 + modules/nf-core/gmmdemux/tests/main.nf.test | 118 + .../nf-core/gmmdemux/tests/main.nf.test.snap | 105 + .../nf-core/gmmdemux/tests/nextflow.config | 16 + modules/nf-core/gmmdemux/tests/tags.yml | 2 + modules/nf-core/gnu/sort/environment.yml | 2 - modules/nf-core/gnu/split/environment.yml | 2 - .../nf-core/goat/taxonsearch/environment.yml | 2 - modules/nf-core/goat/taxonsearch/main.nf | 15 + .../goat/taxonsearch/tests/main.nf.test | 107 + .../goat/taxonsearch/tests/main.nf.test.snap | 134 + .../goat/taxonsearch/tests/nextflow.config | 5 + .../nf-core/goleft/indexcov/environment.yml | 3 +- modules/nf-core/goleft/indexcov/main.nf | 25 +- modules/nf-core/goleft/indexcov/meta.yml | 2 +- .../goleft/indexcov/tests/main.nf.test | 131 + .../goleft/indexcov/tests/main.nf.test.snap | 205 ++ .../nf-core/goleft/indexcov/tests/tags.yml | 2 + .../nf-core/goleft/indexsplit/environment.yml | 2 - modules/nf-core/goleft/indexsplit/meta.yml | 2 +- .../goleft/indexsplit/tests/main.nf.test | 68 + .../goleft/indexsplit/tests/main.nf.test.snap | 72 + .../nf-core/gprofiler2/gost/environment.yml | 2 - modules/nf-core/grabix/check/environment.yml | 2 - .../nf-core/graphmap2/align/environment.yml | 2 - .../nf-core/graphmap2/index/environment.yml | 2 - modules/nf-core/graphmap2/index/main.nf | 11 + .../graphmap2/index/tests/main.nf.test | 52 + .../graphmap2/index/tests/main.nf.test.snap | 48 + .../graphtyper/genotype/environment.yml | 2 - modules/nf-core/graphtyper/genotype/meta.yml | 2 +- .../graphtyper/vcfconcatenate/environment.yml | 2 - .../nf-core/graphtyper/vcfconcatenate/main.nf | 15 + .../graphtyper/vcfconcatenate/meta.yml | 2 +- .../vcfconcatenate/tests/main.nf.test | 70 + .../vcfconcatenate/tests/main.nf.test.snap | 69 + .../vcfconcatenate/tests/nextflow.config | 5 + modules/nf-core/gridss/gridss/environment.yml | 2 - modules/nf-core/gridss/gridss/main.nf | 11 +- modules/nf-core/gridss/gridss/meta.yml | 18 +- .../nf-core/gridss/gridss/tests/main.nf.test | 145 ++ .../gridss/gridss/tests/main.nf.test.snap | 83 + modules/nf-core/gridss/gridss/tests/tags.yml | 2 + .../gridss/gridssgenerateponbedpe/meta.yml | 2 +- .../gridss/gridsssomaticfilter/meta.yml | 2 +- modules/nf-core/gsea/gsea/environment.yml | 2 - .../nf-core/gstama/collapse/environment.yml | 2 - modules/nf-core/gstama/collapse/meta.yml | 4 +- .../gstama/collapse/tests/main.nf.test | 49 + .../gstama/collapse/tests/main.nf.test.snap | 67 + .../gstama/collapse/tests/nextflow.config | 6 + modules/nf-core/gstama/merge/environment.yml | 2 - .../nf-core/gstama/merge/tests/main.nf.test | 47 + .../gstama/merge/tests/main.nf.test.snap | 44 + .../gstama/merge/tests/nextflow.config | 5 + .../gstama/polyacleanup/environment.yml | 2 - .../gstama/polyacleanup/tests/main.nf.test | 42 + .../polyacleanup/tests/main.nf.test.snap | 33 + .../gstama/polyacleanup/tests/nextflow.config | 3 + modules/nf-core/gt/gff3/environment.yml | 2 - modules/nf-core/gt/gff3/tests/main.nf.test | 2 +- .../nf-core/gt/gff3validator/environment.yml | 2 - .../gt/gff3validator/tests/main.nf.test | 16 +- modules/nf-core/gt/ltrharvest/environment.yml | 2 - .../nf-core/gt/ltrharvest/tests/main.nf.test | 25 +- .../gt/ltrharvest/tests/main.nf.test.snap | 46 +- modules/nf-core/gt/stat/environment.yml | 2 - modules/nf-core/gt/stat/tests/main.nf.test | 4 +- .../nf-core/gt/suffixerator/environment.yml | 2 - .../gt/suffixerator/tests/main.nf.test | 24 +- .../nf-core/gtdbtk/classifywf/environment.yml | 2 - modules/nf-core/gtdbtk/classifywf/main.nf | 54 +- modules/nf-core/gtdbtk/classifywf/meta.yml | 3 + .../gtdbtk/classifywf/tests/main.nf.test | 7 +- .../gtdbtk/classifywf/tests/main.nf.test.snap | 8 +- modules/nf-core/gtfsort/environment.yml | 2 - modules/nf-core/gtfsort/tests/main.nf.test | 4 +- modules/nf-core/gubbins/environment.yml | 4 +- modules/nf-core/gubbins/main.nf | 29 +- modules/nf-core/gubbins/meta.yml | 1 + modules/nf-core/gubbins/tests/main.nf.test | 63 + .../nf-core/gubbins/tests/main.nf.test.snap | 113 + .../nf-core/gunc/downloaddb/environment.yml | 2 - modules/nf-core/gunc/downloaddb/main.nf | 11 + .../gunc/downloaddb/tests/main.nf.test | 56 + .../gunc/downloaddb/tests/main.nf.test.snap | 38 + .../nf-core/gunc/mergecheckm/environment.yml | 2 - modules/nf-core/gunc/run/environment.yml | 2 - modules/nf-core/gunzip/environment.yml | 6 +- modules/nf-core/gunzip/main.nf | 17 +- modules/nf-core/gunzip/meta.yml | 1 + modules/nf-core/gunzip/tests/main.nf.test | 85 + .../nf-core/gunzip/tests/main.nf.test.snap | 103 + modules/nf-core/gunzip/tests/nextflow.config | 5 + .../gvcftools/extractvariants/environment.yml | 2 - .../nf-core/gvcftools/extractvariants/main.nf | 12 + .../gvcftools/extractvariants/meta.yml | 2 +- .../extractvariants/tests/main.nf.test | 88 + .../extractvariants/tests/main.nf.test.snap | 63 + .../hamronization/abricate/environment.yml | 2 - .../hamronization/abricate/tests/main.nf.test | 4 +- .../amrfinderplus/environment.yml | 2 - .../hamronization/deeparg/environment.yml | 2 - .../hamronization/deeparg/tests/main.nf.test | 4 +- .../hamronization/fargene/environment.yml | 2 - .../hamronization/fargene/tests/main.nf.test | 2 +- .../fargene/tests/main.nf.test.snap | 6 +- .../nf-core/hamronization/rgi/environment.yml | 2 - .../hamronization/summarize/environment.yml | 2 - .../summarize/tests/main.nf.test | 4 +- modules/nf-core/hapibd/environment.yml | 2 - modules/nf-core/hapibd/main.nf | 21 + modules/nf-core/hapibd/meta.yml | 2 +- modules/nf-core/hapibd/tests/main.nf.test | 99 + .../nf-core/hapibd/tests/main.nf.test.snap | 103 + modules/nf-core/haplocheck/environment.yml | 2 - modules/nf-core/haplocheck/meta.yml | 2 +- modules/nf-core/haplocheck/tests/main.nf.test | 56 + .../haplocheck/tests/main.nf.test.snap | 100 + .../haplogrep2/classify/environment.yml | 2 - modules/nf-core/haplogrep2/classify/meta.yml | 6 +- .../haplogrep2/classify/tests/main.nf.test | 59 + .../classify/tests/main.nf.test.snap | 72 + modules/nf-core/happy/ftxpy/environment.yml | 2 - .../nf-core/happy/ftxpy/tests/main.nf.test | 20 +- modules/nf-core/happy/happy/environment.yml | 2 - modules/nf-core/happy/happy/main.nf | 18 +- modules/nf-core/happy/happy/meta.yml | 31 +- .../nf-core/happy/happy/tests/main.nf.test | 96 + .../happy/happy/tests/main.nf.test.snap | 265 ++ modules/nf-core/happy/prepy/environment.yml | 2 - .../nf-core/happy/prepy/tests/main.nf.test | 22 +- modules/nf-core/happy/sompy/environment.yml | 2 - modules/nf-core/happy/sompy/main.nf | 2 +- modules/nf-core/happy/sompy/meta.yml | 28 +- .../nf-core/happy/sompy/tests/main.nf.test | 127 + .../happy/sompy/tests/main.nf.test.snap | 111 + .../nf-core/happy/sompy/tests/nextflow.config | 5 + modules/nf-core/hicap/environment.yml | 2 - modules/nf-core/hicap/main.nf | 13 + modules/nf-core/hicap/tests/main.nf.test | 67 + modules/nf-core/hicap/tests/main.nf.test.snap | 108 + .../hicexplorer/hicpca/environment.yml | 2 - modules/nf-core/hicexplorer/hicpca/meta.yml | 2 +- modules/nf-core/hifiasm/environment.yml | 2 - modules/nf-core/hisat2/align/environment.yml | 2 - modules/nf-core/hisat2/align/main.nf | 24 +- .../nf-core/hisat2/align/tests/main.nf.test | 202 ++ .../hisat2/align/tests/main.nf.test.snap | 338 ++- modules/nf-core/hisat2/build/environment.yml | 2 - modules/nf-core/hisat2/build/main.nf | 14 +- .../nf-core/hisat2/build/tests/main.nf.test | 47 +- .../hisat2/build/tests/main.nf.test.snap | 41 + .../hisat2/extractsplicesites/environment.yml | 2 - .../nf-core/hisat2/extractsplicesites/main.nf | 14 +- .../extractsplicesites/tests/main.nf.test | 26 + .../tests/main.nf.test.snap | 37 + .../hlala/preparegraph/environment.yml | 2 - modules/nf-core/hlala/preparegraph/meta.yml | 2 +- modules/nf-core/hlala/typing/environment.yml | 2 - modules/nf-core/hlala/typing/meta.yml | 2 +- .../nf-core/hmmcopy/gccounter/environment.yml | 2 - .../hmmcopy/gccounter/tests/main.nf.test | 2 +- .../hmmcopy/generatemap/environment.yml | 2 - .../hmmcopy/generatemap/tests/main.nf.test | 2 +- .../hmmcopy/mapcounter/environment.yml | 2 - .../hmmcopy/mapcounter/tests/main.nf.test | 2 +- .../hmmcopy/readcounter/environment.yml | 2 - .../hmmcopy/readcounter/tests/main.nf.test | 4 +- .../nf-core/hmmer/eslalimask/environment.yml | 2 - modules/nf-core/hmmer/eslalimask/meta.yml | 12 +- .../nf-core/hmmer/eslreformat/environment.yml | 2 - modules/nf-core/hmmer/eslreformat/meta.yml | 2 + .../nf-core/hmmer/hmmalign/environment.yml | 2 - modules/nf-core/hmmer/hmmalign/meta.yml | 4 + .../nf-core/hmmer/hmmbuild/environment.yml | 2 - modules/nf-core/hmmer/hmmbuild/main.nf | 12 + modules/nf-core/hmmer/hmmbuild/meta.yml | 2 +- .../nf-core/hmmer/hmmbuild/tests/main.nf.test | 66 + .../hmmer/hmmbuild/tests/main.nf.test.snap | 55 + .../nf-core/hmmer/hmmfetch/environment.yml | 2 - .../nf-core/hmmer/hmmfetch/tests/main.nf.test | 115 + .../hmmer/hmmfetch/tests/main.nf.test.snap | 166 ++ modules/nf-core/hmmer/hmmrank/environment.yml | 11 + modules/nf-core/hmmer/hmmrank/main.nf | 70 + modules/nf-core/hmmer/hmmrank/meta.yml | 63 + .../nf-core/hmmer/hmmrank/tests/main.nf.test | 63 + .../hmmer/hmmrank/tests/main.nf.test.snap | 64 + modules/nf-core/hmmer/hmmrank/tests/tags.yml | 2 + .../nf-core/hmmer/hmmsearch/environment.yml | 2 - .../nf-core/hmtnote/annotate/environment.yml | 2 - .../homer/annotatepeaks/environment.yml | 2 - modules/nf-core/homer/annotatepeaks/main.nf | 12 + .../homer/annotatepeaks/tests/main.nf.test | 68 + .../annotatepeaks/tests/main.nf.test.snap | 62 + .../homer/annotatepeaks/tests/nextflow.config | 3 + .../nf-core/homer/findpeaks/environment.yml | 2 - .../homer/maketagdirectory/environment.yml | 2 - .../homer/makeucscfile/environment.yml | 2 - modules/nf-core/homer/pos2bed/environment.yml | 2 - modules/nf-core/hpsuissero/environment.yml | 2 - modules/nf-core/hpsuissero/main.nf | 12 + modules/nf-core/hpsuissero/tests/main.nf.test | 57 + .../hpsuissero/tests/main.nf.test.snap | 72 + modules/nf-core/htseq/count/environment.yml | 2 - .../nf-core/htseq/count/tests/main.nf.test | 12 +- .../htsnimtools/vcfcheck/environment.yml | 2 - modules/nf-core/humid/environment.yml | 2 - modules/nf-core/hypo/environment.yml | 2 - modules/nf-core/hypo/meta.yml | 2 +- modules/nf-core/hypo/tests/main.nf.test | 76 + modules/nf-core/hypo/tests/main.nf.test.snap | 72 + .../ichorcna/createpon/environment.yml | 4 +- modules/nf-core/ichorcna/createpon/main.nf | 90 +- modules/nf-core/ichorcna/createpon/meta.yml | 9 + .../ichorcna/createpon/tests/main.nf.test | 96 + .../createpon/tests/main.nf.test.snap | 44 + .../nf-core/ichorcna/createpon/tests/tags.yml | 2 + modules/nf-core/ichorcna/run/environment.yml | 4 +- modules/nf-core/ichorcna/run/main.nf | 115 +- modules/nf-core/ichorcna/run/meta.yml | 62 +- .../nf-core/ichorcna/run/tests/main.nf.test | 78 + .../ichorcna/run/tests/main.nf.test.snap | 167 ++ .../ichorcna/run/tests/nextflow.config | 8 + modules/nf-core/ichorcna/run/tests/tags.yml | 2 + .../icountmini/metagene/environment.yml | 2 - .../nf-core/icountmini/peaks/environment.yml | 2 - .../icountmini/segment/environment.yml | 2 - modules/nf-core/icountmini/segment/main.nf | 13 + .../icountmini/segment/tests/main.nf.test | 60 + .../segment/tests/main.nf.test.snap | 108 + .../nf-core/icountmini/sigxls/environment.yml | 2 - modules/nf-core/icountmini/sigxls/main.nf | 1 - .../icountmini/summary/environment.yml | 2 - modules/nf-core/idemux/environment.yml | 2 - modules/nf-core/idemux/tests/main.nf.test | 12 +- modules/nf-core/idr/environment.yml | 2 - modules/nf-core/idr/main.nf | 19 + modules/nf-core/idr/meta.yml | 6 +- modules/nf-core/idr/tests/main.nf.test | 127 + modules/nf-core/idr/tests/main.nf.test.snap | 88 + modules/nf-core/igv/js/environment.yml | 6 +- modules/nf-core/igv/js/main.nf | 15 +- modules/nf-core/igv/js/meta.yml | 2 +- modules/nf-core/igv/js/tests/main.nf.test | 61 + .../nf-core/igv/js/tests/main.nf.test.snap | 144 ++ modules/nf-core/igv/js/tests/nextflow.config | 12 + modules/nf-core/igvreports/environment.yml | 2 - modules/nf-core/igvreports/main.nf | 4 +- modules/nf-core/igvreports/tests/main.nf.test | 16 +- .../nf-core/ilastik/multicut/environment.yml | 2 - modules/nf-core/ilastik/multicut/meta.yml | 2 +- .../pixelclassification/environment.yml | 2 - .../ilastik/pixelclassification/meta.yml | 2 +- .../nf-core/instrain/compare/environment.yml | 5 +- modules/nf-core/instrain/compare/meta.yml | 21 +- .../instrain/compare/tests/main.nf.test | 10 +- .../nf-core/instrain/profile/environment.yml | 5 +- modules/nf-core/instrain/profile/meta.yml | 24 + .../instrain/profile/tests/main.nf.test | 8 +- modules/nf-core/interproscan/environment.yml | 2 - modules/nf-core/interproscan/main.nf | 2 +- .../nf-core/interproscan/tests/main.nf.test | 6 +- .../nf-core/iphop/download/environment.yml | 2 - modules/nf-core/iphop/download/meta.yml | 2 +- modules/nf-core/iphop/predict/environment.yml | 2 - modules/nf-core/iphop/predict/meta.yml | 2 +- modules/nf-core/iqtree/environment.yml | 2 - modules/nf-core/islandpath/environment.yml | 2 - modules/nf-core/ismapper/environment.yml | 2 - modules/nf-core/ismapper/main.nf | 13 + modules/nf-core/ismapper/meta.yml | 3 +- modules/nf-core/ismapper/tests/main.nf.test | 88 + .../nf-core/ismapper/tests/main.nf.test.snap | 67 + .../nf-core/isoseq/cluster/environment.yml | 2 - modules/nf-core/isoseq/refine/environment.yml | 2 - modules/nf-core/isoseq3/tag/environment.yml | 2 - .../nf-core/isoseq3/tag/tests/main.nf.test | 4 +- .../nf-core/ivar/consensus/environment.yml | 4 +- modules/nf-core/ivar/consensus/main.nf | 18 +- .../nf-core/ivar/consensus/tests/main.nf.test | 100 + .../ivar/consensus/tests/main.nf.test.snap | 117 + .../ivar/consensus/tests/nextflow.config | 5 + modules/nf-core/ivar/trim/environment.yml | 4 +- modules/nf-core/ivar/trim/main.nf | 19 +- modules/nf-core/ivar/trim/tests/main.nf.test | 68 + .../nf-core/ivar/trim/tests/main.nf.test.snap | 69 + modules/nf-core/ivar/variants/environment.yml | 4 +- modules/nf-core/ivar/variants/main.nf | 19 +- .../nf-core/ivar/variants/tests/main.nf.test | 118 + .../ivar/variants/tests/main.nf.test.snap | 188 ++ modules/nf-core/jasminesv/environment.yml | 2 - .../nf-core/jupyternotebook/environment.yml | 2 - modules/nf-core/jupyternotebook/meta.yml | 6 +- .../nf-core/jvarkit/vcfpolyx/environment.yml | 7 + modules/nf-core/jvarkit/vcfpolyx/main.nf | 65 + modules/nf-core/jvarkit/vcfpolyx/meta.yml | 94 + .../jvarkit/vcfpolyx/tests/main.nf.test | 43 + .../jvarkit/vcfpolyx/tests/main.nf.test.snap | 15 + .../nf-core/jvarkit/vcfpolyx/tests/tags.yml | 2 + .../wgscoverageplotter/environment.yml | 7 + .../jvarkit/wgscoverageplotter/main.nf | 51 + .../jvarkit/wgscoverageplotter/meta.yml | 79 + .../wgscoverageplotter/tests/main.nf.test | 71 + .../tests/main.nf.test.snap | 28 + .../wgscoverageplotter/tests/nextflow.config | 7 + .../jvarkit/wgscoverageplotter/tests/tags.yml | 2 + modules/nf-core/kaiju/kaiju/environment.yml | 2 - .../nf-core/kaiju/kaiju2krona/environment.yml | 2 - modules/nf-core/kaiju/kaiju2krona/main.nf | 1 - .../nf-core/kaiju/kaiju2table/environment.yml | 2 - .../kaiju/mergeoutputs/environment.yml | 2 - modules/nf-core/kaiju/mkfmi/environment.yml | 2 - modules/nf-core/kalign/align/environment.yml | 2 - .../nf-core/kalign/align/tests/main.nf.test | 8 +- .../nf-core/kallisto/index/environment.yml | 2 - modules/nf-core/kallisto/index/main.nf | 2 +- .../nf-core/kallisto/index/tests/main.nf.test | 23 + .../kallisto/index/tests/main.nf.test.snap | 43 +- .../nf-core/kallisto/quant/environment.yml | 2 - modules/nf-core/kallisto/quant/main.nf | 6 + .../nf-core/kallisto/quant/tests/main.nf.test | 98 +- .../kallisto/quant/tests/main.nf.test.snap | 182 +- .../kallistobustools/count/environment.yml | 2 - .../kallistobustools/ref/environment.yml | 2 - modules/nf-core/kat/hist/environment.yml | 2 - modules/nf-core/kat/hist/meta.yml | 2 +- .../khmer/normalizebymedian/environment.yml | 2 - .../nf-core/khmer/normalizebymedian/meta.yml | 5 +- .../nf-core/khmer/uniquekmers/environment.yml | 2 - modules/nf-core/khmer/uniquekmers/meta.yml | 3 +- modules/nf-core/kleborate/environment.yml | 2 - modules/nf-core/kleborate/main.nf | 11 + modules/nf-core/kleborate/meta.yml | 8 +- modules/nf-core/kleborate/tests/main.nf.test | 65 + .../nf-core/kleborate/tests/main.nf.test.snap | 72 + modules/nf-core/kmcp/compute/environment.yml | 2 - .../kmcp/compute/tests/main.nf.test.snap | 4 +- modules/nf-core/kmcp/index/environment.yml | 2 - modules/nf-core/kmcp/merge/environment.yml | 2 - modules/nf-core/kmcp/merge/meta.yml | 2 +- modules/nf-core/kmcp/profile/environment.yml | 2 - .../kmcp/profile/tests/main.nf.test.snap | 4 +- modules/nf-core/kmcp/search/environment.yml | 2 - modules/nf-core/kofamscan/environment.yml | 2 - modules/nf-core/kofamscan/meta.yml | 2 +- modules/nf-core/kraken2/add/environment.yml | 2 - .../nf-core/kraken2/add/tests/main.nf.test | 18 +- modules/nf-core/kraken2/build/environment.yml | 2 - .../nf-core/kraken2/build/tests/main.nf.test | 10 +- .../kraken2/buildstandard/environment.yml | 9 + modules/nf-core/kraken2/buildstandard/main.nf | 46 + .../nf-core/kraken2/buildstandard/meta.yml | 36 + .../kraken2/buildstandard/tests/main.nf.test | 34 + .../buildstandard/tests/main.nf.test.snap | 29 + .../kraken2/buildstandard/tests/tags.yml | 2 + .../nf-core/kraken2/kraken2/environment.yml | 2 - .../kraken2/kraken2/tests/main.nf.test | 12 +- .../combinekreports/environment.yml | 2 - .../krakentools/combinekreports/main.nf | 13 + .../krakentools/combinekreports/meta.yml | 2 +- .../combinekreports/tests/main.nf.test | 55 + .../combinekreports/tests/main.nf.test.snap | 68 + .../combinekreports/tests/tags.yml | 2 + .../extractkrakenreads/environment.yml | 2 - .../krakentools/extractkrakenreads/main.nf | 23 + .../extractkrakenreads/tests/main.nf.test | 164 +- .../tests/main.nf.test.snap | 117 + .../krakentools/kreport2krona/environment.yml | 2 - .../nf-core/krakentools/kreport2krona/main.nf | 13 + .../krakentools/kreport2krona/meta.yml | 2 +- .../kreport2krona/tests/main.nf.test | 85 + .../kreport2krona/tests/main.nf.test.snap | 72 + .../krakentools/kreport2krona/tests/tags.yml | 4 + .../nf-core/krakenuniq/build/environment.yml | 2 - .../krakenuniq/download/environment.yml | 2 - .../preloadedkrakenuniq/environment.yml | 2 - modules/nf-core/krona/kronadb/environment.yml | 2 - .../krona/ktimporttaxonomy/environment.yml | 4 +- .../nf-core/krona/ktimporttaxonomy/main.nf | 19 +- .../nf-core/krona/ktimporttaxonomy/meta.yml | 2 +- .../krona/ktimporttaxonomy/tests/main.nf.test | 61 + .../ktimporttaxonomy/tests/main.nf.test.snap | 47 + .../krona/ktimporttaxonomy/tests/tags.yml | 2 + .../krona/ktimporttext/environment.yml | 2 - modules/nf-core/krona/ktimporttext/main.nf | 12 + modules/nf-core/krona/ktimporttext/meta.yml | 2 +- .../krona/ktimporttext/tests/main.nf.test | 54 + .../ktimporttext/tests/main.nf.test.snap | 47 + .../nf-core/krona/ktimporttext/tests/tags.yml | 2 + .../krona/ktupdatetaxonomy/environment.yml | 2 - .../nf-core/krona/ktupdatetaxonomy/main.nf | 14 + .../krona/ktupdatetaxonomy/tests/main.nf.test | 54 + .../ktupdatetaxonomy/tests/main.nf.test.snap | 38 + modules/nf-core/last/dotplot/environment.yml | 4 +- modules/nf-core/last/dotplot/main.nf | 11 +- modules/nf-core/last/dotplot/meta.yml | 8 + .../nf-core/last/dotplot/tests/main.nf.test | 30 +- .../last/dotplot/tests/main.nf.test.snap | 18 +- modules/nf-core/last/lastal/environment.yml | 4 +- modules/nf-core/last/lastal/main.nf | 32 +- modules/nf-core/last/lastal/meta.yml | 4 + .../nf-core/last/lastal/tests/main.nf.test | 14 +- .../last/lastal/tests/main.nf.test.snap | 86 +- modules/nf-core/last/lastdb/environment.yml | 4 +- modules/nf-core/last/lastdb/main.nf | 4 +- .../nf-core/last/lastdb/tests/main.nf.test | 6 +- .../last/lastdb/tests/main.nf.test.snap | 32 +- .../nf-core/last/mafconvert/environment.yml | 4 +- modules/nf-core/last/mafconvert/main.nf | 4 +- .../last/mafconvert/tests/main.nf.test | 4 +- .../last/mafconvert/tests/main.nf.test.snap | 16 +- modules/nf-core/last/mafswap/environment.yml | 4 +- modules/nf-core/last/mafswap/main.nf | 4 +- .../nf-core/last/mafswap/tests/main.nf.test | 4 +- .../last/mafswap/tests/main.nf.test.snap | 16 +- modules/nf-core/last/postmask/environment.yml | 4 +- modules/nf-core/last/postmask/main.nf | 4 +- .../nf-core/last/postmask/tests/main.nf.test | 4 +- .../last/postmask/tests/main.nf.test.snap | 16 +- modules/nf-core/last/split/environment.yml | 4 +- modules/nf-core/last/split/main.nf | 30 +- modules/nf-core/last/split/meta.yml | 4 + modules/nf-core/last/split/tests/main.nf.test | 4 +- .../last/split/tests/main.nf.test.snap | 48 +- modules/nf-core/last/train/environment.yml | 4 +- modules/nf-core/last/train/main.nf | 18 +- modules/nf-core/last/train/meta.yml | 5 + modules/nf-core/last/train/tests/main.nf.test | 11 +- .../last/train/tests/main.nf.test.snap | 60 +- .../nf-core/learnmsa/align/environment.yml | 2 - modules/nf-core/leehom/environment.yml | 2 - modules/nf-core/legsta/environment.yml | 2 - modules/nf-core/legsta/main.nf | 11 + modules/nf-core/legsta/meta.yml | 2 + modules/nf-core/legsta/tests/main.nf.test | 57 + .../nf-core/legsta/tests/main.nf.test.snap | 72 + .../nf-core/leviosam2/index/environment.yml | 2 - .../leviosam2/index/tests/main.nf.test | 8 +- .../nf-core/leviosam2/lift/environment.yml | 2 - modules/nf-core/leviosam2/lift/main.nf | 1 - .../nf-core/leviosam2/lift/tests/main.nf.test | 24 +- .../leviosam2/lift/tests/main.nf.test.snap | 16 +- modules/nf-core/liftoff/environment.yml | 7 +- modules/nf-core/liftoff/tests/main.nf.test | 12 +- modules/nf-core/liftoff/tests/tags.yml | 2 - modules/nf-core/lima/environment.yml | 2 - modules/nf-core/lima/tests/main.nf.test | 32 +- .../limma/differential/environment.yml | 2 - modules/nf-core/lissero/environment.yml | 2 - modules/nf-core/lissero/main.nf | 11 + modules/nf-core/lissero/tests/main.nf.test | 57 + .../nf-core/lissero/tests/main.nf.test.snap | 50 + .../nf-core/lofreq/alnqual/environment.yml | 2 - modules/nf-core/lofreq/call/environment.yml | 2 - modules/nf-core/lofreq/call/main.nf | 11 + .../nf-core/lofreq/call/tests/main.nf.test | 94 + .../lofreq/call/tests/main.nf.test.snap | 63 + .../lofreq/callparallel/environment.yml | 2 - modules/nf-core/lofreq/callparallel/main.nf | 41 +- modules/nf-core/lofreq/callparallel/meta.yml | 20 +- .../lofreq/callparallel/tests/main.nf.test | 109 + .../callparallel/tests/main.nf.test.snap | 93 + .../lofreq/callparallel/tests/tags.yml | 2 + modules/nf-core/lofreq/filter/environment.yml | 2 - modules/nf-core/lofreq/filter/main.nf | 11 + .../nf-core/lofreq/filter/tests/main.nf.test | 74 + .../lofreq/filter/tests/main.nf.test.snap | 101 + modules/nf-core/lofreq/filter/tests/tags.yml | 2 + .../nf-core/lofreq/indelqual/environment.yml | 2 - modules/nf-core/lofreq/indelqual/main.nf | 16 +- modules/nf-core/lofreq/indelqual/meta.yml | 10 +- .../lofreq/indelqual/tests/main.nf.test | 71 + .../lofreq/indelqual/tests/main.nf.test.snap | 49 + .../lofreq/indelqual/tests/nextflow.config | 6 + .../nf-core/lofreq/indelqual/tests/tags.yml | 2 + .../nf-core/lofreq/somatic/environment.yml | 2 - modules/nf-core/lofreq/somatic/main.nf | 33 +- modules/nf-core/lofreq/somatic/meta.yml | 15 +- .../nf-core/lofreq/somatic/tests/main.nf.test | 87 + .../lofreq/somatic/tests/main.nf.test.snap | 48 + .../nf-core/lofreq/viterbi/environment.yml | 2 - modules/nf-core/lofreq/viterbi/main.nf | 4 +- modules/nf-core/lofreq/viterbi/meta.yml | 6 + .../nf-core/lofreq/viterbi/tests/main.nf.test | 14 +- .../lofreq/viterbi/tests/main.nf.test.snap | 4 +- .../longphase/haplotag/environment.yml | 7 + modules/nf-core/longphase/haplotag/main.nf | 66 + modules/nf-core/longphase/haplotag/meta.yml | 89 + .../longphase/haplotag/tests/main.nf.test | 202 ++ .../haplotag/tests/main.nf.test.snap | 159 ++ .../longphase/haplotag/tests/nextflow.config | 5 + .../nf-core/longphase/haplotag/tests/tags.yml | 2 + .../nf-core/longphase/phase/environment.yml | 8 + modules/nf-core/longphase/phase/main.nf | 69 + modules/nf-core/longphase/phase/meta.yml | 81 + .../longphase/phase/tests/main.nf.test | 157 ++ .../longphase/phase/tests/main.nf.test.snap | 134 + .../longphase/phase/tests/nextflow.config | 5 + .../nf-core/longphase/phase/tests/tags.yml | 2 + modules/nf-core/ltrfinder/environment.yml | 2 - modules/nf-core/ltrfinder/tests/main.nf.test | 36 +- .../nf-core/ltrfinder/tests/main.nf.test.snap | 57 +- modules/nf-core/ltrfinder/tests/tags.yml | 2 - modules/nf-core/ltrharvest/environment.yml | 2 - modules/nf-core/ltrharvest/tests/main.nf.test | 45 +- .../ltrharvest/tests/main.nf.test.snap | 55 +- modules/nf-core/ltrharvest/tests/tags.yml | 2 - .../nf-core/ltrretriever/lai/environment.yml | 2 - .../ltrretriever/lai/tests/main.nf.test | 6 +- .../ltrretriever/ltrretriever/environment.yml | 2 - .../nf-core/ltrretriever/ltrretriever/main.nf | 37 +- .../ltrretriever/tests/main.nf.test | 97 +- .../ltrretriever/tests/main.nf.test.snap | 47 +- .../ltrretriever/tests/nextflow.config | 12 +- .../ltrretriever/ltrretriever/tests/tags.yml | 2 - .../nf-core/macrel/contigs/environment.yml | 4 +- modules/nf-core/macrel/contigs/main.nf | 22 +- .../nf-core/macrel/contigs/tests/main.nf.test | 66 + .../macrel/contigs/tests/main.nf.test.snap | 150 ++ .../nf-core/macs2/callpeak/environment.yml | 6 +- modules/nf-core/macs2/callpeak/main.nf | 20 +- .../nf-core/macs2/callpeak/tests/bam.config | 5 + .../nf-core/macs2/callpeak/tests/bed.config | 5 + .../nf-core/macs2/callpeak/tests/main.nf.test | 113 + .../macs2/callpeak/tests/main.nf.test.snap | 358 +++ .../nf-core/macs3/callpeak/environment.yml | 7 + modules/nf-core/macs3/callpeak/main.nf | 70 + modules/nf-core/macs3/callpeak/meta.yml | 73 + .../nf-core/macs3/callpeak/tests/bam.config | 5 + .../nf-core/macs3/callpeak/tests/bed.config | 5 + .../nf-core/macs3/callpeak/tests/main.nf.test | 113 + .../macs3/callpeak/tests/main.nf.test.snap | 358 +++ modules/nf-core/mafft/environment.yml | 2 - modules/nf-core/mafft/tests/main.nf.test | 30 +- modules/nf-core/mageck/count/environment.yml | 2 - modules/nf-core/mageck/mle/environment.yml | 2 - modules/nf-core/mageck/mle/tests/main.nf.test | 10 +- modules/nf-core/mageck/test/environment.yml | 2 - modules/nf-core/magus/align/environment.yml | 2 - .../nf-core/magus/guidetree/environment.yml | 2 - modules/nf-core/malt/build/environment.yml | 2 - modules/nf-core/malt/build/tests/main.nf.test | 7 +- .../malt/build/tests/main.nf.test.snap | 15 +- modules/nf-core/malt/run/environment.yml | 2 - modules/nf-core/malt/run/meta.yml | 2 +- modules/nf-core/malt/run/tests/main.nf.test | 9 +- .../nf-core/malt/run/tests/main.nf.test.snap | 13 +- modules/nf-core/maltextract/environment.yml | 2 - .../nf-core/maltextract/tests/main.nf.test | 15 +- .../maltextract/tests/main.nf.test.snap | 17 +- .../manta/convertinversion/environment.yml | 2 - .../nf-core/manta/germline/environment.yml | 2 - modules/nf-core/manta/somatic/environment.yml | 2 - .../nf-core/manta/tumoronly/environment.yml | 2 - modules/nf-core/mapad/index/environment.yml | 2 - modules/nf-core/mapad/index/main.nf | 2 +- .../mapad/index/tests/main.nf.test.snap | 6 +- modules/nf-core/mapad/map/environment.yml | 2 - modules/nf-core/mapad/map/main.nf | 2 +- modules/nf-core/mapad/map/tests/main.nf.test | 4 +- .../nf-core/mapad/map/tests/main.nf.test.snap | 4 +- modules/nf-core/mapdamage2/environment.yml | 2 - modules/nf-core/mapdamage2/main.nf | 13 + modules/nf-core/mapdamage2/tests/main.nf.test | 80 + .../mapdamage2/tests/main.nf.test.snap | 209 ++ modules/nf-core/mash/dist/environment.yml | 2 - modules/nf-core/mash/dist/main.nf | 11 + modules/nf-core/mash/dist/meta.yml | 5 +- modules/nf-core/mash/dist/tests/main.nf.test | 60 + .../nf-core/mash/dist/tests/main.nf.test.snap | 72 + modules/nf-core/mash/screen/environment.yml | 2 - .../nf-core/mash/screen/tests/main.nf.test | 12 +- modules/nf-core/mash/sketch/environment.yml | 2 - .../nf-core/mash/sketch/tests/main.nf.test | 8 +- modules/nf-core/mashmap/environment.yml | 7 + modules/nf-core/mashmap/main.nf | 48 + modules/nf-core/mashmap/meta.yml | 57 + modules/nf-core/mashmap/tests/main.nf.test | 69 + .../nf-core/mashmap/tests/main.nf.test.snap | 72 + modules/nf-core/mashmap/tests/tags.yml | 2 + modules/nf-core/mashtree/environment.yml | 2 - modules/nf-core/mashtree/main.nf | 13 + modules/nf-core/mashtree/tests/main.nf.test | 68 + .../nf-core/mashtree/tests/main.nf.test.snap | 77 + modules/nf-core/maxbin2/environment.yml | 2 - modules/nf-core/maxbin2/tests/main.nf.test | 47 + .../nf-core/maxbin2/tests/main.nf.test.snap | 59 + modules/nf-core/maxquant/lfq/environment.yml | 2 - modules/nf-core/maxquant/lfq/meta.yml | 2 + modules/nf-core/mcquant/tests/main.nf.test | 12 +- modules/nf-core/mcroni/environment.yml | 2 - modules/nf-core/mcroni/main.nf | 13 + modules/nf-core/mcroni/meta.yml | 3 +- modules/nf-core/mcroni/tests/main.nf.test | 57 + .../nf-core/mcroni/tests/main.nf.test.snap | 96 + .../nf-core/mcstaging/imc2mc/environment.yml | 11 + modules/nf-core/mcstaging/imc2mc/main.nf | 50 + modules/nf-core/mcstaging/imc2mc/meta.yml | 52 + .../mcstaging/imc2mc/tests/main.nf.test | 60 + .../mcstaging/imc2mc/tests/main.nf.test.snap | 28 + .../mcstaging/imc2mc/tests/nextflow.config | 7 + .../nf-core/mcstaging/imc2mc/tests/tags.yml | 2 + .../nf-core/mcstaging/phenoimager2mc/main.nf | 52 + .../nf-core/mcstaging/phenoimager2mc/meta.yml | 50 + .../phenoimager2mc/tests/main.nf.test | 65 + .../phenoimager2mc/tests/main.nf.test.snap | 28 + .../phenoimager2mc/tests/nextflow.config | 8 + .../mcstaging/phenoimager2mc/tests/tags.yml | 2 + modules/nf-core/md5sum/environment.yml | 2 - modules/nf-core/md5sum/main.nf | 67 +- modules/nf-core/md5sum/meta.yml | 8 +- modules/nf-core/md5sum/tests/main.nf.test | 127 +- .../nf-core/md5sum/tests/main.nf.test.snap | 185 +- modules/nf-core/medaka/environment.yml | 2 - modules/nf-core/medaka/tests/main.nf.test | 12 +- .../nf-core/medaka/tests/main.nf.test.snap | 36 +- modules/nf-core/megahit/environment.yml | 4 +- modules/nf-core/megahit/main.nf | 98 +- modules/nf-core/megahit/meta.yml | 20 +- modules/nf-core/megahit/tests/main.nf.test | 126 + .../nf-core/megahit/tests/main.nf.test.snap | 172 ++ modules/nf-core/megahit/tests/tags.yml | 2 + .../nf-core/megan/daa2info/environment.yml | 2 - modules/nf-core/megan/daa2info/meta.yml | 2 +- .../nf-core/megan/rma2info/environment.yml | 4 +- modules/nf-core/megan/rma2info/main.nf | 17 +- modules/nf-core/megan/rma2info/meta.yml | 2 +- .../nf-core/megan/rma2info/tests/main.nf.test | 63 + .../megan/rma2info/tests/main.nf.test.snap | 67 + .../megan/rma2info/tests/nextflow.config | 3 + modules/nf-core/megan/rma2info/tests/tags.yml | 2 + modules/nf-core/meningotype/environment.yml | 2 - modules/nf-core/meningotype/main.nf | 11 + .../nf-core/meningotype/tests/main.nf.test | 53 + .../meningotype/tests/main.nf.test.snap | 72 + modules/nf-core/merfin/hist/environment.yml | 2 - .../nf-core/merqury/hapmers/environment.yml | 2 - .../merqury/hapmers/tests/main.nf.test | 6 +- .../nf-core/merqury/merqury/environment.yml | 2 - .../merqury/merqury/tests/main.nf.test | 14 +- .../nf-core/merquryfk/katcomp/environment.yml | 2 - modules/nf-core/merquryfk/katcomp/meta.yml | 2 +- .../nf-core/merquryfk/katgc/environment.yml | 2 - modules/nf-core/merquryfk/katgc/meta.yml | 2 +- .../merquryfk/merquryfk/environment.yml | 5 - modules/nf-core/merquryfk/merquryfk/main.nf | 58 +- modules/nf-core/merquryfk/merquryfk/meta.yml | 96 +- .../merquryfk/merquryfk/tests/main.nf.test | 170 ++ .../merquryfk/tests/main.nf.test.snap | 454 ++++ .../merquryfk/merquryfk/tests/nextflow.config | 8 + .../merquryfk/tests/nextflow.pdf.config | 9 + .../merquryfk/tests/nextflow.png.config | 9 + .../merquryfk/tests/nextflow.trio.config | 9 + .../merquryfk/merquryfk/tests/tags.yml | 2 + modules/nf-core/meryl/count/environment.yml | 2 - .../nf-core/meryl/histogram/environment.yml | 2 - .../nf-core/meryl/unionsum/environment.yml | 2 - .../environment.yml | 2 - .../jgisummarizebamcontigdepths/main.nf | 11 + .../tests/main.nf.test | 60 + .../tests/main.nf.test.snap | 68 + .../nf-core/metabat2/metabat2/environment.yml | 2 - .../metaeuk/easypredict/environment.yml | 2 - modules/nf-core/metaeuk/easypredict/meta.yml | 2 +- .../nf-core/metamaps/classify/environment.yml | 2 - .../metamaps/classify/tests/main.nf.test | 4 +- .../metamaps/classify/tests/main.nf.test.snap | 4 +- .../metamaps/mapdirectly/environment.yml | 2 - .../metamaps/mapdirectly/tests/main.nf.test | 4 +- .../mapdirectly/tests/main.nf.test.snap | 4 +- .../nf-core/metaphlan/makedb/environment.yml | 4 +- modules/nf-core/metaphlan/makedb/main.nf | 11 +- .../metaphlan/makedb/tests/main.nf.test | 52 + .../metaphlan/makedb/tests/main.nf.test.snap | 73 + .../metaphlan/makedb/tests/nextflow.config | 5 + .../mergemetaphlantables/environment.yml | 4 +- .../metaphlan/mergemetaphlantables/main.nf | 16 +- .../mergemetaphlantables/tests/main.nf.test | 79 + .../tests/main.nf.test.snap | 68 + .../tests/nextflow.config | 10 + .../mergemetaphlantables/tests/tags.yml | 4 + .../metaphlan/metaphlan/environment.yml | 4 +- modules/nf-core/metaphlan/metaphlan/main.nf | 21 +- modules/nf-core/metaphlan/metaphlan/meta.yml | 4 +- .../metaphlan/metaphlan/tests/main.nf.test | 136 + .../metaphlan/tests/main.nf.test.snap | 145 ++ .../metaphlan/metaphlan/tests/nextflow.config | 10 + .../metaphlan/metaphlan/tests/tags.yml | 3 + .../mergemetaphlantables/environment.yml | 2 - .../metaphlan3/metaphlan3/environment.yml | 2 - .../methyldackel/extract/environment.yml | 4 +- modules/nf-core/methyldackel/extract/main.nf | 16 +- .../methyldackel/extract/tests/main.nf.test | 90 + .../extract/tests/main.nf.test.snap | 125 + .../extract/tests/nextflow.config | 5 + .../methyldackel/mbias/environment.yml | 4 +- modules/nf-core/methyldackel/mbias/main.nf | 15 +- .../methyldackel/mbias/tests/main.nf.test | 68 + .../mbias/tests/main.nf.test.snap | 56 + modules/nf-core/midas/run/environment.yml | 2 - modules/nf-core/midas/run/meta.yml | 2 +- .../mindagap/duplicatefinder/environment.yml | 2 - .../nf-core/mindagap/mindagap/environment.yml | 2 - modules/nf-core/minia/environment.yml | 2 - modules/nf-core/minia/main.nf | 13 + modules/nf-core/minia/meta.yml | 4 +- modules/nf-core/minia/tests/main.nf.test | 71 + modules/nf-core/minia/tests/main.nf.test.snap | 82 + modules/nf-core/miniasm/environment.yml | 2 - modules/nf-core/miniasm/tests/main.nf.test | 8 +- .../nf-core/minimap2/align/environment.yml | 3 - modules/nf-core/minimap2/align/main.nf | 15 +- .../nf-core/minimap2/align/tests/main.nf.test | 205 +- .../minimap2/align/tests/main.nf.test.snap | 284 +- .../nf-core/minimap2/index/environment.yml | 2 - .../nf-core/miniprot/align/environment.yml | 2 - .../nf-core/miniprot/align/tests/main.nf.test | 89 + .../miniprot/align/tests/main.nf.test.snap | 119 + .../miniprot/align/tests/nextflow.gff.config | 5 + .../miniprot/align/tests/nextflow.paf.config | 5 + .../nf-core/miniprot/index/environment.yml | 2 - .../nf-core/miniprot/index/tests/main.nf.test | 51 + .../miniprot/index/tests/main.nf.test.snap | 68 + modules/nf-core/miranda/environment.yml | 2 - modules/nf-core/miranda/meta.yml | 2 +- modules/nf-core/miranda/tests/main.nf.test | 69 + .../nf-core/miranda/tests/main.nf.test.snap | 54 + modules/nf-core/miranda/tests/nextflow.config | 8 + modules/nf-core/mirtop/counts/environment.yml | 9 + modules/nf-core/mirtop/counts/main.nf | 53 + modules/nf-core/mirtop/counts/meta.yml | 57 + .../nf-core/mirtop/counts/tests/main.nf.test | 97 + .../mirtop/counts/tests/main.nf.test.snap | 47 + .../mirtop/counts/tests/nextflow.config | 5 + modules/nf-core/mirtop/export/environment.yml | 10 + modules/nf-core/mirtop/export/main.nf | 57 + modules/nf-core/mirtop/export/meta.yml | 65 + .../nf-core/mirtop/export/tests/main.nf.test | 92 + .../mirtop/export/tests/main.nf.test.snap | 102 + modules/nf-core/mirtop/gff/environment.yml | 8 + modules/nf-core/mirtop/gff/main.nf | 55 + modules/nf-core/mirtop/gff/meta.yml | 57 + modules/nf-core/mirtop/gff/tests/main.nf.test | 80 + .../mirtop/gff/tests/main.nf.test.snap | 48 + modules/nf-core/mirtop/stats/environment.yml | 8 + modules/nf-core/mirtop/stats/main.nf | 51 + modules/nf-core/mirtop/stats/meta.yml | 50 + .../nf-core/mirtop/stats/tests/main.nf.test | 58 + .../mirtop/stats/tests/main.nf.test.snap | 100 + modules/nf-core/mirtrace/qc/environment.yml | 7 + modules/nf-core/mirtrace/qc/main.nf | 64 + modules/nf-core/mirtrace/qc/meta.yml | 69 + .../nf-core/mirtrace/qc/tests/main.nf.test | 129 + .../mirtrace/qc/tests/main.nf.test.snap | 242 ++ modules/nf-core/mlst/environment.yml | 2 - .../nf-core/mmseqs/cluster/environment.yml | 2 - .../nf-core/mmseqs/createdb/environment.yml | 2 - .../mmseqs/createdb/tests/main.nf.test | 18 +- .../mmseqs/createdb/tests/main.nf.test.snap | 56 +- .../mmseqs/createindex/environment.yml | 2 - .../mmseqs/createindex/tests/main.nf.test | 3 +- .../createindex/tests/main.nf.test.snap | 12 +- .../nf-core/mmseqs/createtsv/environment.yml | 2 - .../mmseqs/createtsv/tests/main.nf.test | 19 +- .../mmseqs/createtsv/tests/main.nf.test.snap | 79 +- .../nf-core/mmseqs/databases/environment.yml | 2 - modules/nf-core/mmseqs/databases/main.nf | 4 +- .../mmseqs/databases/tests/main.nf.test | 55 + .../mmseqs/databases/tests/main.nf.test.snap | 74 + .../nf-core/mmseqs/easysearch/environment.yml | 2 - .../nf-core/mmseqs/linclust/environment.yml | 2 - .../mmseqs/linclust/tests/main.nf.test | 28 +- .../mmseqs/linclust/tests/main.nf.test.snap | 32 +- modules/nf-core/mmseqs/search/environment.yml | 2 - .../nf-core/mmseqs/taxonomy/environment.yml | 2 - .../mmseqs/taxonomy/tests/main.nf.test | 20 +- .../mmseqs/taxonomy/tests/main.nf.test.snap | 137 +- .../mmseqs/tsv2exprofiledb/environment.yml | 2 - .../nf-core/mobsuite/recon/environment.yml | 5 +- modules/nf-core/mobsuite/recon/main.nf | 17 +- modules/nf-core/mobsuite/recon/meta.yml | 1 + .../nf-core/mobsuite/recon/tests/main.nf.test | 58 + .../mobsuite/recon/tests/main.nf.test.snap | 132 + modules/nf-core/modkit/pileup/environment.yml | 2 - .../molkartgarage/clahe/tests/main.nf.test | 4 +- modules/nf-core/mosdepth/environment.yml | 2 - modules/nf-core/mosdepth/tests/main.nf.test | 50 +- .../nf-core/motus/downloaddb/environment.yml | 2 - modules/nf-core/motus/downloaddb/meta.yml | 2 +- modules/nf-core/motus/merge/environment.yml | 2 - modules/nf-core/motus/merge/meta.yml | 2 +- modules/nf-core/motus/profile/environment.yml | 4 +- modules/nf-core/motus/profile/main.nf | 28 +- .../nf-core/motus/profile/tests/main.nf.test | 167 ++ .../motus/profile/tests/main.nf.test.snap | 243 ++ modules/nf-core/motus/profile/tests/tags.yml | 2 + modules/nf-core/msisensor/msi/environment.yml | 2 - modules/nf-core/msisensor/msi/meta.yml | 5 +- .../nf-core/msisensor/scan/environment.yml | 2 - modules/nf-core/msisensor/scan/meta.yml | 4 +- .../nf-core/msisensor2/msi/environment.yml | 2 - modules/nf-core/msisensor2/msi/meta.yml | 6 +- .../nf-core/msisensor2/scan/environment.yml | 2 - modules/nf-core/msisensor2/scan/main.nf | 11 + modules/nf-core/msisensor2/scan/meta.yml | 9 +- .../msisensor2/scan/tests/main.nf.test | 60 + .../msisensor2/scan/tests/main.nf.test.snap | 48 + .../msisensorpro/msisomatic/environment.yml | 2 - .../nf-core/msisensorpro/msisomatic/meta.yml | 6 +- .../nf-core/msisensorpro/scan/environment.yml | 2 - modules/nf-core/msisensorpro/scan/main.nf | 11 + .../msisensorpro/scan/tests/main.nf.test | 58 + .../msisensorpro/scan/tests/main.nf.test.snap | 72 + .../nf-core/mtmalign/align/environment.yml | 2 - modules/nf-core/mtnucratio/environment.yml | 2 - modules/nf-core/mtnucratio/main.nf | 13 + modules/nf-core/mtnucratio/tests/main.nf.test | 55 + .../mtnucratio/tests/main.nf.test.snap | 108 + .../nf-core/mudskipper/bulk/environment.yml | 2 - modules/nf-core/mudskipper/bulk/meta.yml | 3 + .../mudskipper/bulk/tests/main.nf.test | 12 +- .../nf-core/mudskipper/index/environment.yml | 2 - .../mudskipper/index/tests/main.nf.test | 2 +- modules/nf-core/multiqc/environment.yml | 4 +- modules/nf-core/multiqc/main.nf | 14 +- modules/nf-core/multiqc/meta.yml | 13 + modules/nf-core/multiqc/tests/main.nf.test | 8 + .../nf-core/multiqc/tests/main.nf.test.snap | 14 +- modules/nf-core/multiqc/tests/nextflow.config | 5 + .../nf-core/multivcfanalyzer/environment.yml | 2 - modules/nf-core/multivcfanalyzer/main.nf | 62 +- modules/nf-core/multivcfanalyzer/meta.yml | 6 +- .../multivcfanalyzer/tests/main.nf.test | 128 + .../multivcfanalyzer/tests/main.nf.test.snap | 232 ++ .../nf-core/multivcfanalyzer/tests/tags.yml | 2 + modules/nf-core/mummer/environment.yml | 2 - modules/nf-core/muscle/environment.yml | 2 - modules/nf-core/muscle/meta.yml | 1 + .../nf-core/muscle5/super5/environment.yml | 2 - modules/nf-core/mygene/environment.yml | 2 - modules/nf-core/mygene/templates/mygene.py | 4 +- .../nf-core/mykrobe/predict/environment.yml | 2 - modules/nf-core/mykrobe/predict/main.nf | 13 + modules/nf-core/mykrobe/predict/meta.yml | 2 +- .../mykrobe/predict/tests/main.nf.test | 66 + .../mykrobe/predict/tests/main.nf.test.snap | 66 + modules/nf-core/nanocomp/environment.yml | 2 - modules/nf-core/nanocomp/main.nf | 6 +- modules/nf-core/nanocomp/meta.yml | 2 +- modules/nf-core/nanocomp/tests/main.nf.test | 119 + .../nf-core/nanocomp/tests/main.nf.test.snap | 362 +++ modules/nf-core/nanofilt/environment.yml | 2 - modules/nf-core/nanofilt/tests/main.nf.test | 4 +- modules/nf-core/nanolyse/environment.yml | 2 - modules/nf-core/nanolyse/main.nf | 12 + modules/nf-core/nanolyse/meta.yml | 4 +- modules/nf-core/nanolyse/tests/main.nf.test | 65 + .../nf-core/nanolyse/tests/main.nf.test.snap | 62 + .../nf-core/nanolyse/tests/nextflow.config | 5 + .../nf-core/nanomonsv/parse/environment.yml | 2 - modules/nf-core/nanomonsv/parse/meta.yml | 2 +- modules/nf-core/nanoplot/environment.yml | 2 - modules/nf-core/nanoplot/tests/main.nf.test | 36 +- .../nf-core/nanoplot/tests/main.nf.test.snap | 44 +- modules/nf-core/nanoq/environment.yml | 7 + modules/nf-core/nanoq/main.nf | 49 + modules/nf-core/nanoq/meta.yml | 60 + modules/nf-core/nanoq/tests/main.nf.test | 122 + modules/nf-core/nanoq/tests/main.nf.test.snap | 267 ++ modules/nf-core/nanoq/tests/tags.yml | 2 + modules/nf-core/narfmap/align/environment.yml | 4 +- modules/nf-core/narfmap/align/main.nf | 39 +- .../nf-core/narfmap/align/tests/main.nf.test | 209 +- .../narfmap/align/tests/main.nf.test.snap | 147 +- .../narfmap/align/tests/segfault.nf.test | 68 + .../narfmap/align/tests/segfault.nf.test.snap | 31 + .../nf-core/narfmap/hashtable/environment.yml | 4 +- modules/nf-core/narfmap/hashtable/main.nf | 6 +- .../narfmap/hashtable/tests/main.nf.test | 4 +- .../narfmap/hashtable/tests/main.nf.test.snap | 8 + .../ncbigenomedownload/environment.yml | 2 - .../ncbigenomedownload/tests/main.nf.test | 41 + .../tests/main.nf.test.snap | 39 + .../ncbigenomedownload/tests/nextflow.config | 5 + .../nextclade/datasetget/environment.yml | 4 +- modules/nf-core/nextclade/datasetget/main.nf | 26 +- modules/nf-core/nextclade/datasetget/meta.yml | 8 +- .../nextclade/datasetget/tests/main.nf.test | 53 + .../datasetget/tests/main.nf.test.snap | 41 + modules/nf-core/nextclade/run/environment.yml | 4 +- modules/nf-core/nextclade/run/main.nf | 24 +- modules/nf-core/nextclade/run/meta.yml | 32 +- .../nf-core/nextclade/run/tests/main.nf.test | 82 + .../nextclade/run/tests/main.nf.test.snap | 245 ++ modules/nf-core/nextgenmap/environment.yml | 2 - modules/nf-core/nextgenmap/main.nf | 11 + modules/nf-core/nextgenmap/tests/main.nf.test | 98 + .../nextgenmap/tests/main.nf.test.snap | 63 + modules/nf-core/ngmaster/environment.yml | 3 +- modules/nf-core/ngmaster/main.nf | 12 + modules/nf-core/ngmaster/tests/main.nf.test | 53 + .../nf-core/ngmaster/tests/main.nf.test.snap | 72 + modules/nf-core/ngmerge/environment.yml | 2 - modules/nf-core/ngmerge/meta.yml | 2 +- modules/nf-core/ngmerge/tests/main.nf.test | 43 + .../nf-core/ngmerge/tests/main.nf.test.snap | 17 + .../ngsbits/samplegender/environment.yml | 2 - .../ngsbits/samplegender/tests/main.nf.test | 4 +- .../ngscheckmate/fastq/environment.yml | 2 - .../ngscheckmate/fastq/tests/main.nf.test | 17 +- .../fastq/tests/main.nf.test.snap | 8 +- .../nf-core/ngscheckmate/ncm/environment.yml | 2 - .../ngscheckmate/ncm/tests/main.nf.test | 76 +- .../ngscheckmate/ncm/tests/main.nf.test.snap | 31 +- .../patterngenerator/environment.yml | 2 - .../ngscheckmate/patterngenerator/main.nf | 8 +- .../patterngenerator/tests/main.nf.test | 13 +- .../patterngenerator/tests/main.nf.test.snap | 6 +- .../ngscheckmate/vafncm/environment.yml | 2 - .../ngscheckmate/vafncm/tests/main.nf.test | 21 +- .../vafncm/tests/main.nf.test.snap | 8 +- .../nf-core/nonpareil/curve/environment.yml | 4 +- modules/nf-core/nonpareil/curve/main.nf | 4 +- modules/nf-core/nonpareil/curve/meta.yml | 2 +- .../nonpareil/curve/tests/main.nf.test | 54 +- .../nonpareil/curve/tests/main.nf.test.snap | 41 +- .../nonpareil/nonpareil/environment.yml | 4 +- modules/nf-core/nonpareil/nonpareil/main.nf | 12 +- .../nonpareil/nonpareil/tests/main.nf.test | 35 +- .../nonpareil/tests/main.nf.test.snap | 113 +- .../nonpareilcurvesr/environment.yml | 7 + .../nonpareil/nonpareilcurvesr/main.nf | 57 + .../nonpareil/nonpareilcurvesr/meta.yml | 63 + .../nonpareilcurvesr/tests/main.nf.test | 76 + .../nonpareilcurvesr/tests/main.nf.test.snap | 99 + .../nonpareil/nonpareilcurvesr/tests/tags.yml | 2 + modules/nf-core/nonpareil/set/environment.yml | 4 +- modules/nf-core/nonpareil/set/main.nf | 4 +- modules/nf-core/nonpareil/set/meta.yml | 2 +- .../nf-core/nonpareil/set/tests/main.nf.test | 51 +- .../nonpareil/set/tests/main.nf.test.snap | 39 +- modules/nf-core/nucmer/environment.yml | 2 - modules/nf-core/nucmer/meta.yml | 1 + modules/nf-core/oatk/environment.yml | 2 - modules/nf-core/oatk/tests/main.nf.test | 36 +- modules/nf-core/oatk/tests/main.nf.test.snap | 82 +- modules/nf-core/odgi/build/environment.yml | 2 - modules/nf-core/odgi/build/tests/main.nf.test | 2 +- modules/nf-core/odgi/draw/environment.yml | 2 - modules/nf-core/odgi/draw/test/main.nf.test | 35 - modules/nf-core/odgi/draw/tests/main.nf.test | 35 + .../draw/{test => tests}/main.nf.test.snap | 0 modules/nf-core/odgi/layout/environment.yml | 2 - .../nf-core/odgi/layout/tests/main.nf.test | 2 +- modules/nf-core/odgi/sort/environment.yml | 2 - modules/nf-core/odgi/sort/tests/main.nf.test | 10 +- .../nf-core/odgi/sort/tests/main.nf.test.snap | 36 +- modules/nf-core/odgi/squeeze/environment.yml | 2 - .../nf-core/odgi/squeeze/tests/main.nf.test | 8 +- .../odgi/squeeze/tests/main.nf.test.snap | 36 +- modules/nf-core/odgi/stats/environment.yml | 2 - modules/nf-core/odgi/stats/main.nf | 4 +- modules/nf-core/odgi/stats/tests/main.nf.test | 8 +- .../odgi/stats/tests/main.nf.test.snap | 42 +- modules/nf-core/odgi/unchop/environment.yml | 2 - .../nf-core/odgi/unchop/tests/main.nf.test | 8 +- .../odgi/unchop/tests/main.nf.test.snap | 36 +- modules/nf-core/odgi/view/environment.yml | 2 - modules/nf-core/odgi/view/tests/main.nf.test | 2 +- modules/nf-core/odgi/viz/environment.yml | 2 - modules/nf-core/odgi/viz/tests/main.nf.test | 2 +- modules/nf-core/oncocnv/environment.yml | 2 - modules/nf-core/oncocnv/meta.yml | 2 +- .../openms/decoydatabase/environment.yml | 2 - modules/nf-core/openms/decoydatabase/meta.yml | 3 +- .../openms/decoydatabase/tests/main.nf.test | 2 +- .../nf-core/openms/idfilter/environment.yml | 2 - .../openms/idmassaccuracy/environment.yml | 5 + modules/nf-core/openms/idmassaccuracy/main.nf | 52 + .../nf-core/openms/idmassaccuracy/meta.yml | 55 + .../openms/idmassaccuracy/tests/main.nf.test | 81 + .../idmassaccuracy/tests/main.nf.test.snap | 90 + .../idmassaccuracy/tests/nextflow.config | 27 + .../nf-core/openms/idmerger/environment.yml | 2 - .../nf-core/openms/idripper/environment.yml | 2 - .../openms/idripper/tests/main.nf.test | 4 +- .../openms/idscoreswitcher/environment.yml | 2 - .../openms/idscoreswitcher/tests/main.nf.test | 4 +- .../openms/peakpickerhires/environment.yml | 2 - .../openms/peptideindexer/environment.yml | 2 - .../cometadapter/environment.yml | 5 + .../openmsthirdparty/cometadapter/main.nf | 55 + .../openmsthirdparty/cometadapter/meta.yml | 55 + .../cometadapter/tests/main.nf.test | 86 + .../cometadapter/tests/main.nf.test.snap | 59 + .../cometadapter/tests/nextflow.config | 20 + .../cometadapter/tests/tags.yml | 2 + modules/nf-core/optitype/environment.yml | 2 - modules/nf-core/orthofinder/environment.yml | 7 +- modules/nf-core/orthofinder/main.nf | 33 +- modules/nf-core/orthofinder/meta.yml | 12 + .../nf-core/orthofinder/tests/main.nf.test | 73 +- .../orthofinder/tests/main.nf.test.snap | 353 +-- .../nf-core/paftools/sam2paf/environment.yml | 2 - modules/nf-core/paftools/sam2paf/main.nf | 2 +- .../paftools/sam2paf/tests/main.nf.test | 57 + .../paftools/sam2paf/tests/main.nf.test.snap | 68 + modules/nf-core/pairix/environment.yml | 2 - modules/nf-core/pairix/meta.yml | 2 + modules/nf-core/pairix/tests/main.nf.test | 32 + .../nf-core/pairix/tests/main.nf.test.snap | 39 + .../nf-core/pairtools/dedup/environment.yml | 2 - modules/nf-core/pairtools/dedup/main.nf | 2 +- .../pairtools/dedup/tests/main.nf.test | 39 + .../pairtools/dedup/tests/main.nf.test.snap | 30 + .../pairtools/dedup/tests/nextflow.config | 5 + .../nf-core/pairtools/flip/environment.yml | 2 - modules/nf-core/pairtools/flip/main.nf | 2 +- .../nf-core/pairtools/flip/tests/main.nf.test | 38 + .../pairtools/flip/tests/main.nf.test.snap | 21 + .../nf-core/pairtools/merge/environment.yml | 2 - modules/nf-core/pairtools/merge/main.nf | 2 +- .../pairtools/merge/tests/main.nf.test | 37 + .../pairtools/merge/tests/main.nf.test.snap | 21 + .../nf-core/pairtools/parse/environment.yml | 2 - modules/nf-core/pairtools/parse/main.nf | 2 +- .../pairtools/parse/tests/main.nf.test | 40 + .../pairtools/parse/tests/main.nf.test.snap | 30 + .../pairtools/parse/tests/nextflow.config | 5 + .../pairtools/restrict/environment.yml | 2 - modules/nf-core/pairtools/restrict/main.nf | 2 +- .../pairtools/restrict/tests/main.nf.test | 40 + .../restrict/tests/main.nf.test.snap | 21 + .../pairtools/restrict/tests/nextflow.config | 5 + .../nf-core/pairtools/select/environment.yml | 2 - modules/nf-core/pairtools/select/main.nf | 2 +- .../pairtools/select/tests/main.nf.test | 39 + .../pairtools/select/tests/main.nf.test.snap | 28 + .../pairtools/select/tests/nextflow.config | 5 + .../nf-core/pairtools/sort/environment.yml | 2 - modules/nf-core/pairtools/sort/main.nf | 2 +- .../nf-core/pairtools/sort/tests/main.nf.test | 38 + .../pairtools/sort/tests/main.nf.test.snap | 21 + .../pairtools/sort/tests/nextflow.config | 5 + .../nf-core/pairtools/split/environment.yml | 2 - modules/nf-core/pairtools/split/main.nf | 2 +- .../pairtools/split/tests/main.nf.test | 4 +- .../nf-core/pairtools/stats/environment.yml | 2 - modules/nf-core/pairtools/stats/main.nf | 2 +- .../pairtools/stats/tests/main.nf.test | 33 + .../pairtools/stats/tests/main.nf.test.snap | 37 + .../panacus/histgrowth/environment.yml | 2 - .../panacus/histgrowth/tests/main.nf.test | 2 +- .../nf-core/panacus/visualize/environment.yml | 2 - .../panacus/visualize/tests/main.nf.test | 2 +- modules/nf-core/panaroo/run/environment.yml | 2 - modules/nf-core/panaroo/run/meta.yml | 2 +- .../nf-core/panaroo/run/tests/main.nf.test | 45 + .../panaroo/run/tests/main.nf.test.snap | 15 + .../nf-core/panaroo/run/tests/nextflow.config | 5 + modules/nf-core/pangolin/environment.yml | 2 - .../parabricks/applybqsr/environment.yml | 2 - modules/nf-core/parabricks/applybqsr/meta.yml | 2 +- modules/nf-core/paraclu/environment.yml | 2 - modules/nf-core/paraclu/meta.yml | 2 + .../paragraph/idxdepth/environment.yml | 2 - modules/nf-core/paragraph/idxdepth/meta.yml | 2 +- .../paragraph/multigrmpy/environment.yml | 2 - modules/nf-core/paragraph/multigrmpy/meta.yml | 2 +- .../paragraph/vcf2paragraph/environment.yml | 4 +- .../nf-core/paragraph/vcf2paragraph/main.nf | 2 +- .../nf-core/paragraph/vcf2paragraph/meta.yml | 2 +- .../vcf2paragraph/tests/main.nf.test | 64 + .../vcf2paragraph/tests/main.nf.test.snap | 63 + modules/nf-core/paraphase/environment.yml | 3 - modules/nf-core/paraphase/main.nf | 32 +- modules/nf-core/paraphase/meta.yml | 8 +- modules/nf-core/paraphase/tests/main.nf.test | 104 +- .../nf-core/paraphase/tests/main.nf.test.snap | 2173 ++-------------- .../paraphase/tests/nextflow.csi_index.config | 6 + modules/nf-core/pasty/environment.yml | 2 - modules/nf-core/pasty/main.nf | 13 + modules/nf-core/pasty/meta.yml | 2 +- modules/nf-core/pasty/tests/main.nf.test | 55 + modules/nf-core/pasty/tests/main.nf.test.snap | 144 ++ modules/nf-core/pbbam/pbmerge/environment.yml | 4 +- modules/nf-core/pbbam/pbmerge/main.nf | 26 +- modules/nf-core/pbbam/pbmerge/meta.yml | 3 +- .../nf-core/pbbam/pbmerge/tests/main.nf.test | 71 + .../pbbam/pbmerge/tests/main.nf.test.snap | 69 + .../pbbam/pbmerge/tests/nextflow.config | 5 + modules/nf-core/pbccs/environment.yml | 2 - modules/nf-core/pbptyper/environment.yml | 2 - modules/nf-core/pbptyper/main.nf | 15 + modules/nf-core/pbptyper/meta.yml | 2 +- modules/nf-core/pbptyper/tests/main.nf.test | 59 + .../nf-core/pbptyper/tests/main.nf.test.snap | 124 + .../nf-core/pbtk/bam2fastq/environment.yml | 2 - modules/nf-core/pbtk/pbindex/environment.yml | 7 + modules/nf-core/pbtk/pbindex/main.nf | 41 + modules/nf-core/pbtk/pbindex/meta.yml | 48 + .../nf-core/pbtk/pbindex/tests/main.nf.test | 58 + .../pbtk/pbindex/tests/main.nf.test.snap | 68 + modules/nf-core/pear/environment.yml | 2 - modules/nf-core/pear/tests/main.nf.test | 4 +- modules/nf-core/peddy/environment.yml | 2 - modules/nf-core/peddy/main.nf | 7 +- modules/nf-core/peddy/tests/main.nf.test | 35 + modules/nf-core/peddy/tests/main.nf.test.snap | 93 + modules/nf-core/peddy/tests/tags.yml | 2 + modules/nf-core/peka/environment.yml | 2 - modules/nf-core/peka/main.nf | 1 + modules/nf-core/peka/tests/main.nf.test | 65 + modules/nf-core/peka/tests/main.nf.test.snap | 106 + modules/nf-core/peka/tests/nextflow.config | 5 + .../phantompeakqualtools/environment.yml | 6 +- modules/nf-core/phantompeakqualtools/main.nf | 18 +- modules/nf-core/phantompeakqualtools/meta.yml | 2 +- .../phantompeakqualtools/tests/main.nf.test | 90 + .../tests/main.nf.test.snap | 119 + .../phantompeakqualtools/tests/tags.yml | 2 + .../pharokka/installdatabases/environment.yml | 4 +- .../nf-core/pharokka/installdatabases/main.nf | 6 +- .../installdatabases/tests/main.nf.test.snap | 14 +- .../nf-core/pharokka/pharokka/environment.yml | 4 +- modules/nf-core/pharokka/pharokka/main.nf | 4 +- .../pharokka/pharokka/tests/main.nf.test | 4 +- .../pharokka/pharokka/tests/main.nf.test.snap | 10 +- modules/nf-core/phispy/environment.yml | 2 - modules/nf-core/phyloflash/environment.yml | 2 - .../addorreplacereadgroups/environment.yml | 4 +- .../picard/addorreplacereadgroups/main.nf | 4 +- .../tests/main.nf.test.snap | 20 +- .../picard/bedtointervallist/environment.yml | 4 +- .../nf-core/picard/bedtointervallist/main.nf | 4 +- .../bedtointervallist/tests/main.nf.test | 40 + .../bedtointervallist/tests/main.nf.test.snap | 35 + .../nf-core/picard/cleansam/environment.yml | 4 +- modules/nf-core/picard/cleansam/main.nf | 4 +- modules/nf-core/picard/cleansam/meta.yml | 4 +- .../picard/cleansam/tests/main.nf.test | 40 + .../picard/cleansam/tests/main.nf.test.snap | 15 + .../picard/cleansam/tests/nextflow.config | 5 + .../picard/collecthsmetrics/environment.yml | 4 +- .../nf-core/picard/collecthsmetrics/main.nf | 4 +- .../collecthsmetrics/tests/main.nf.test | 72 +- .../collecthsmetrics/tests/main.nf.test.snap | 502 +--- .../collectinsertsizemetrics/environment.yml | 4 +- .../picard/collectinsertsizemetrics/main.nf | 8 +- .../tests/main.nf.test | 62 + .../tests/main.nf.test.snap | 74 + .../collectmultiplemetrics/environment.yml | 4 +- .../picard/collectmultiplemetrics/main.nf | 4 +- .../collectmultiplemetrics/tests/main.nf.test | 112 + .../tests/main.nf.test.snap | 80 + .../collectrnaseqmetrics/environment.yml | 4 +- .../picard/collectrnaseqmetrics/main.nf | 4 +- .../picard/collectwgsmetrics/environment.yml | 4 +- .../nf-core/picard/collectwgsmetrics/main.nf | 4 +- .../collectwgsmetrics/tests/main.nf.test | 83 + .../collectwgsmetrics/tests/main.nf.test.snap | 28 + .../createsequencedictionary/environment.yml | 4 +- .../picard/createsequencedictionary/main.nf | 16 +- .../tests/main.nf.test | 61 + .../tests/main.nf.test.snap | 48 + .../crosscheckfingerprints/environment.yml | 4 +- .../picard/crosscheckfingerprints/main.nf | 4 +- .../crosscheckfingerprints/tests/main.nf.test | 20 +- .../tests/main.nf.test.snap | 12 +- .../picard/extractfingerprint/environment.yml | 4 +- .../nf-core/picard/extractfingerprint/main.nf | 4 +- .../extractfingerprint/tests/main.nf.test | 12 +- .../tests/main.nf.test.snap | 12 +- .../nf-core/picard/fastqtosam/environment.yml | 4 +- modules/nf-core/picard/fastqtosam/main.nf | 4 +- .../picard/fastqtosam/tests/main.nf.test | 100 + .../picard/fastqtosam/tests/main.nf.test.snap | 41 + .../picard/fastqtosam/tests/nextflow.config | 5 + .../picard/filtersamreads/environment.yml | 4 +- modules/nf-core/picard/filtersamreads/main.nf | 4 +- .../picard/fixmateinformation/environment.yml | 4 +- .../nf-core/picard/fixmateinformation/main.nf | 4 +- .../fixmateinformation/tests/main.nf.test | 40 + .../tests/main.nf.test.snap | 15 + .../fixmateinformation/tests/nextflow.config | 5 + .../picard/liftovervcf/environment.yml | 4 +- modules/nf-core/picard/liftovervcf/main.nf | 8 +- .../picard/liftovervcf/tests/main.nf.test | 84 + .../liftovervcf/tests/main.nf.test.snap | 30 + .../picard/liftovervcf/tests/nextflow.config | 3 + .../picard/markduplicates/environment.yml | 4 +- modules/nf-core/picard/markduplicates/main.nf | 4 +- .../picard/markduplicates/tests/main.nf.test | 99 +- .../markduplicates/tests/main.nf.test.snap | 271 +- .../picard/mergesamfiles/environment.yml | 4 +- modules/nf-core/picard/mergesamfiles/main.nf | 4 +- .../picard/mergesamfiles/tests/main.nf.test | 39 + .../mergesamfiles/tests/main.nf.test.snap | 15 + .../environment.yml | 5 + .../picard/positionbaseddownsamplesam/main.nf | 62 + .../positionbaseddownsamplesam/meta.yml | 51 + .../tests/main.nf.test | 63 + .../tests/main.nf.test.snap | 93 + .../positionbaseddownsamplesam/tests/tags.yml | 2 + .../picard/renamesampleinvcf/environment.yml | 4 +- .../nf-core/picard/renamesampleinvcf/main.nf | 4 +- .../renamesampleinvcf/tests/main.nf.test | 38 + .../renamesampleinvcf/tests/main.nf.test.snap | 15 + .../scatterintervalsbyns/environment.yml | 4 +- .../picard/scatterintervalsbyns/main.nf | 4 +- .../scatterintervalsbyns/tests/main.nf.test | 74 + .../tests/main.nf.test.snap | 72 + .../nf-core/picard/sortsam/environment.yml | 4 +- modules/nf-core/picard/sortsam/main.nf | 4 +- .../nf-core/picard/sortsam/tests/main.nf.test | 40 + .../picard/sortsam/tests/main.nf.test.snap | 15 + .../picard/sortsam/tests/nextflow.config | 5 + .../nf-core/picard/sortvcf/environment.yml | 4 +- modules/nf-core/picard/sortvcf/main.nf | 4 +- .../nf-core/picard/sortvcf/tests/main.nf.test | 44 + .../picard/sortvcf/tests/main.nf.test.snap | 21 + modules/nf-core/pigz/compress/environment.yml | 2 - .../nf-core/pigz/compress/tests/main.nf.test | 10 +- .../pigz/compress/tests/main.nf.test.snap | 15 +- .../pigz/uncompress/tests/main.nf.test | 2 +- modules/nf-core/pilon/environment.yml | 2 - modules/nf-core/pilon/main.nf | 37 +- modules/nf-core/pilon/meta.yml | 9 +- modules/nf-core/pilon/tests/main.nf.test | 116 + modules/nf-core/pilon/tests/main.nf.test.snap | 334 +++ modules/nf-core/pilon/tests/tags.yml | 2 + modules/nf-core/pindel/pindel/environment.yml | 2 - modules/nf-core/pindel/pindel/main.nf | 0 modules/nf-core/pindel/pindel/meta.yml | 2 +- .../nf-core/pindel/pindel/tests/main.nf.test | 53 + .../pindel/pindel/tests/main.nf.test.snap | 26 + modules/nf-core/pints/caller/environment.yml | 4 +- modules/nf-core/pints/caller/main.nf | 9 +- modules/nf-core/pints/caller/meta.yml | 11 +- .../nf-core/pints/caller/tests/main.nf.test | 100 + .../pints/caller/tests/main.nf.test.snap | 68 + .../pints/caller/tests/nextflow.config | 5 + modules/nf-core/pirate/environment.yml | 5 +- modules/nf-core/pirate/main.nf | 12 + modules/nf-core/pirate/tests/main.nf.test | 70 + .../nf-core/pirate/tests/main.nf.test.snap | 90 + modules/nf-core/plasmidfinder/environment.yml | 2 - modules/nf-core/plasmidfinder/meta.yml | 2 +- .../nf-core/plasmidfinder/tests/main.nf.test | 42 + .../plasmidfinder/tests/main.nf.test.snap | 33 + modules/nf-core/plasmidid/environment.yml | 2 - modules/nf-core/plasmidid/tests/main.nf.test | 46 + .../nf-core/plasmidid/tests/main.nf.test.snap | 45 + .../nf-core/plasmidid/tests/nextflow.config | 5 + modules/nf-core/platypus/environment.yml | 2 - modules/nf-core/platypus/main.nf | 19 +- modules/nf-core/platypus/meta.yml | 6 +- modules/nf-core/platypus/tests/main.nf.test | 142 + .../nf-core/platypus/tests/main.nf.test.snap | 115 + modules/nf-core/plink/bcf/environment.yml | 2 - modules/nf-core/plink/bcf/tests/main.nf.test | 36 + .../nf-core/plink/bcf/tests/main.nf.test.snap | 73 + .../nf-core/plink/bcf/tests/nextflow.config | 3 + .../nf-core/plink/epistasis/environment.yml | 2 - modules/nf-core/plink/epistasis/main.nf | 2 +- .../plink/epistasis/tests/main.nf.test | 63 +- .../plink/epistasis/tests/main.nf.test.snap | 43 +- modules/nf-core/plink/exclude/environment.yml | 2 - modules/nf-core/plink/exclude/meta.yml | 1 + modules/nf-core/plink/extract/environment.yml | 2 - modules/nf-core/plink/extract/meta.yml | 2 + .../plink/fastepistasis/environment.yml | 2 - modules/nf-core/plink/fastepistasis/main.nf | 2 +- .../plink/fastepistasis/tests/main.nf.test | 63 +- .../fastepistasis/tests/main.nf.test.snap | 43 +- modules/nf-core/plink/gwas/environment.yml | 2 - modules/nf-core/plink/gwas/tests/main.nf.test | 62 +- .../plink/gwas/tests/main.nf.test.snap | 35 +- modules/nf-core/plink/hwe/environment.yml | 2 - modules/nf-core/plink/hwe/main.nf | 4 +- modules/nf-core/plink/hwe/tests/main.nf.test | 17 +- .../nf-core/plink/hwe/tests/main.nf.test.snap | 110 +- modules/nf-core/plink/indep/environment.yml | 2 - modules/nf-core/plink/indep/meta.yml | 9 +- .../plink/indeppairwise/environment.yml | 2 - modules/nf-core/plink/indeppairwise/meta.yml | 9 +- modules/nf-core/plink/ld/environment.yml | 2 - modules/nf-core/plink/ld/main.nf | 1 - modules/nf-core/plink/ld/tests/main.nf.test | 41 +- .../nf-core/plink/ld/tests/main.nf.test.snap | 29 +- modules/nf-core/plink/recode/environment.yml | 2 - modules/nf-core/plink/recode/meta.yml | 5 +- modules/nf-core/plink/vcf/environment.yml | 2 - modules/nf-core/plink/vcf/main.nf | 15 + modules/nf-core/plink/vcf/meta.yml | 2 + modules/nf-core/plink/vcf/tests/main.nf.test | 57 + .../nf-core/plink/vcf/tests/main.nf.test.snap | 144 ++ .../nf-core/plink/vcf/tests/nextflow.config | 5 + .../nf-core/plink2/extract/environment.yml | 2 - .../nf-core/plink2/extract/tests/main.nf.test | 3 +- modules/nf-core/plink2/score/environment.yml | 2 - .../nf-core/plink2/score/tests/main.nf.test | 5 +- modules/nf-core/plink2/vcf/environment.yml | 2 - modules/nf-core/plink2/vcf/meta.yml | 4 + modules/nf-core/plink2/vcf/tests/main.nf.test | 2 +- .../nf-core/pmdtools/filter/environment.yml | 3 +- modules/nf-core/pmdtools/filter/main.nf | 14 + modules/nf-core/pmdtools/filter/meta.yml | 2 +- .../pmdtools/filter/tests/main.nf.test | 69 + .../pmdtools/filter/tests/main.nf.test.snap | 54 + modules/nf-core/pneumocat/environment.yml | 2 - modules/nf-core/pneumocat/meta.yml | 2 +- modules/nf-core/poolsnp/environment.yml | 7 + modules/nf-core/poolsnp/main.nf | 63 + modules/nf-core/poolsnp/meta.yml | 98 + modules/nf-core/poolsnp/tests/main.nf.test | 156 ++ .../nf-core/poolsnp/tests/main.nf.test.snap | 70 + modules/nf-core/poolsnp/tests/nextflow.config | 6 + modules/nf-core/poolsnp/tests/tags.yml | 2 + .../nf-core/popscle/demuxlet/environment.yml | 2 - .../nf-core/popscle/dscpileup/environment.yml | 2 - .../popscle/freemuxlet/environment.yml | 2 - modules/nf-core/porechop/abi/environment.yml | 4 +- modules/nf-core/porechop/abi/main.nf | 24 +- modules/nf-core/porechop/abi/meta.yml | 6 +- .../nf-core/porechop/abi/tests/main.nf.test | 59 + .../porechop/abi/tests/main.nf.test.snap | 94 + .../nf-core/porechop/porechop/environment.yml | 2 - .../porechop/porechop/tests/main.nf.test | 13 +- modules/nf-core/preseq/ccurve/environment.yml | 2 - modules/nf-core/preseq/ccurve/main.nf | 13 + .../nf-core/preseq/ccurve/tests/main.nf.test | 90 + .../preseq/ccurve/tests/main.nf.test.snap | 99 + .../nf-core/preseq/lcextrap/environment.yml | 2 - modules/nf-core/preseq/lcextrap/main.nf | 12 + .../preseq/lcextrap/tests/main.nf.test | 46 + .../preseq/lcextrap/tests/main.nf.test.snap | 130 + modules/nf-core/president/environment.yml | 2 - modules/nf-core/president/main.nf | 42 +- modules/nf-core/president/meta.yml | 12 +- modules/nf-core/president/tests/main.nf.test | 99 +- .../nf-core/president/tests/main.nf.test.snap | 220 ++ .../nf-core/presto/filterseq/environment.yml | 2 - .../presto/filterseq/tests/main.nf.test | 2 +- modules/nf-core/pretextmap/environment.yml | 2 - modules/nf-core/pretextmap/tests/main.nf.test | 22 +- .../nf-core/pretextsnapshot/environment.yml | 2 - .../nf-core/prinseqplusplus/environment.yml | 2 - modules/nf-core/prinseqplusplus/meta.yml | 2 +- .../prinseqplusplus/tests/main.nf.test | 74 + .../prinseqplusplus/tests/main.nf.test.snap | 61 + .../prinseqplusplus/tests/nextflow.config | 5 + modules/nf-core/prodigal/environment.yml | 2 - modules/nf-core/prodigal/tests/main.nf.test | 8 +- modules/nf-core/prokka/environment.yml | 2 - modules/nf-core/prokka/tests/main.nf.test | 26 +- .../nf-core/prokka/tests/main.nf.test.snap | 85 +- modules/nf-core/propr/grea/environment.yml | 2 - modules/nf-core/propr/grea/meta.yml | 4 + modules/nf-core/propr/grea/tests/main.nf.test | 10 +- .../propr/grea/tests/main.nf.test.snap | 6 +- .../nf-core/propr/logratio/environment.yml | 2 - modules/nf-core/propr/propd/environment.yml | 2 - modules/nf-core/propr/propr/environment.yml | 2 - modules/nf-core/propr/propr/meta.yml | 4 + modules/nf-core/propr/propr/templates/propr.R | 27 +- .../nf-core/propr/propr/tests/main.nf.test | 12 +- modules/nf-core/proteinortho/environment.yml | 2 - .../nf-core/proteinortho/tests/main.nf.test | 2 +- .../proteus/readproteingroups/environment.yml | 2 - modules/nf-core/pureclip/environment.yml | 2 - modules/nf-core/pureclip/main.nf | 6 +- modules/nf-core/pureclip/meta.yml | 2 +- modules/nf-core/pureclip/tests/main.nf.test | 120 + .../nf-core/pureclip/tests/main.nf.test.snap | 83 + .../nf-core/purecn/coverage/environment.yml | 2 - modules/nf-core/purecn/coverage/meta.yml | 2 +- .../purecn/intervalfile/environment.yml | 13 +- modules/nf-core/purecn/intervalfile/main.nf | 11 +- modules/nf-core/purecn/intervalfile/meta.yml | 3 +- .../purecn/intervalfile/tests/main.nf.test | 60 + .../intervalfile/tests/main.nf.test.snap | 63 + .../nf-core/purecn/normaldb/environment.yml | 13 +- modules/nf-core/purecn/normaldb/main.nf | 27 +- modules/nf-core/purecn/normaldb/meta.yml | 2 +- .../purecn/normaldb/tests/main.nf.test | 89 + .../purecn/normaldb/tests/main.nf.test.snap | 55 + modules/nf-core/purecn/run/environment.yml | 2 - modules/nf-core/purecn/run/meta.yml | 2 +- .../nf-core/purgedups/calcuts/environment.yml | 2 - .../nf-core/purgedups/getseqs/environment.yml | 2 - modules/nf-core/purgedups/getseqs/meta.yml | 2 +- .../purgedups/histplot/environment.yml | 2 - modules/nf-core/purgedups/histplot/meta.yml | 2 +- .../nf-core/purgedups/pbcstat/environment.yml | 2 - modules/nf-core/purgedups/pbcstat/meta.yml | 2 +- .../purgedups/pbcstat/tests/main.nf.test | 35 + .../purgedups/pbcstat/tests/main.nf.test.snap | 55 + .../purgedups/purgedups/environment.yml | 2 - .../nf-core/purgedups/splitfa/environment.yml | 2 - modules/nf-core/purgedups/splitfa/meta.yml | 8 +- .../purgedups/splitfa/tests/main.nf.test | 39 + .../purgedups/splitfa/tests/main.nf.test.snap | 15 + modules/nf-core/pycoqc/environment.yml | 2 - modules/nf-core/pycoqc/tests/main.nf.test | 2 +- .../nf-core/pydamage/analyze/environment.yml | 2 - modules/nf-core/pydamage/analyze/main.nf | 2 +- .../pydamage/analyze/tests/main.nf.test | 36 + .../pydamage/analyze/tests/main.nf.test.snap | 37 + .../nf-core/pydamage/filter/environment.yml | 2 - modules/nf-core/pyrodigal/environment.yml | 2 - modules/nf-core/pyrodigal/tests/main.nf.test | 16 +- .../nf-core/pyrodigal/tests/main.nf.test.snap | 125 +- modules/nf-core/qcat/environment.yml | 2 - modules/nf-core/qcat/main.nf | 17 +- modules/nf-core/qcat/meta.yml | 2 + modules/nf-core/qcat/tests/main.nf.test | 64 + modules/nf-core/qcat/tests/main.nf.test.snap | 66 + .../nf-core/qualimap/bamqc/environment.yml | 2 - .../nf-core/qualimap/bamqc/tests/main.nf.test | 34 +- .../qualimap/bamqc/tests/main.nf.test.snap | 161 +- .../qualimap/bamqccram/environment.yml | 2 - modules/nf-core/qualimap/bamqccram/main.nf | 12 + .../qualimap/bamqccram/tests/main.nf.test | 39 +- .../bamqccram/tests/main.nf.test.snap | 55 +- .../nf-core/qualimap/rnaseq/environment.yml | 2 - .../qualimap/rnaseq/tests/main.nf.test | 37 +- .../qualimap/rnaseq/tests/main.nf.test.snap | 49 +- .../nf-core/quartonotebook/environment.yml | 3 - .../nf-core/quartonotebook/tests/main.nf.test | 22 +- modules/nf-core/quast/environment.yml | 2 - modules/nf-core/quast/tests/main.nf.test | 105 + modules/nf-core/quast/tests/main.nf.test.snap | 331 +++ modules/nf-core/quast/tests/tags.yml | 2 + modules/nf-core/quilt/quilt/environment.yml | 2 - modules/nf-core/racon/environment.yml | 2 - modules/nf-core/racon/tests/main.nf.test | 6 +- modules/nf-core/rapidnj/environment.yml | 2 - modules/nf-core/rapidnj/tests/main.nf.test | 36 + .../nf-core/rapidnj/tests/main.nf.test.snap | 17 + modules/nf-core/rasusa/environment.yml | 2 - modules/nf-core/rasusa/tests/main.nf.test | 4 +- .../nf-core/rasusa/tests/main.nf.test.snap | 14 +- modules/nf-core/raven/environment.yml | 2 - modules/nf-core/raven/tests/main.nf.test | 34 + modules/nf-core/raven/tests/main.nf.test.snap | 55 + modules/nf-core/raxmlng/environment.yml | 2 - .../builddatabase/environment.yml | 2 - .../builddatabase/tests/main.nf.test | 4 +- .../repeatmodeler/environment.yml | 2 - .../repeatmodeler/tests/main.nf.test | 4 +- modules/nf-core/resfinder/run/environment.yml | 2 - .../nf-core/resfinder/run/tests/main.nf.test | 12 +- .../rgi/cardannotation/environment.yml | 2 - modules/nf-core/rgi/main/environment.yml | 2 - modules/nf-core/rgi/main/tests/main.nf.test | 16 +- .../nf-core/rhocall/annotate/environment.yml | 2 - modules/nf-core/rhocall/annotate/meta.yml | 2 +- modules/nf-core/rhocall/viz/environment.yml | 2 - .../nf-core/rhocall/viz/tests/main.nf.test | 6 +- .../nf-core/ribotish/predict/environment.yml | 2 - .../nf-core/ribotish/quality/environment.yml | 2 - .../ribotricer/detectorfs/environment.yml | 2 - .../ribotricer/prepareorfs/environment.yml | 2 - modules/nf-core/ribowaltz/environment.yml | 2 - .../nf-core/rmarkdownnotebook/environment.yml | 2 - modules/nf-core/rmarkdownnotebook/meta.yml | 2 +- modules/nf-core/roary/environment.yml | 2 - .../nf-core/rrnatranscripts/environment.yml | 2 - .../rrnatranscripts/tests/main.nf.test | 4 +- .../rsem/calculateexpression/environment.yml | 2 - .../nf-core/rsem/calculateexpression/main.nf | 18 + .../calculateexpression/tests/main.nf.test | 38 +- .../tests/main.nf.test.snap | 159 ++ .../rsem/preparereference/environment.yml | 2 - modules/nf-core/rsem/preparereference/main.nf | 11 + .../rsem/preparereference/tests/main.nf.test | 21 +- .../preparereference/tests/main.nf.test.snap | 45 + modules/nf-core/rseqc/bamstat/environment.yml | 2 - modules/nf-core/rseqc/bamstat/main.nf | 11 + .../nf-core/rseqc/bamstat/tests/main.nf.test | 27 +- .../rseqc/bamstat/tests/main.nf.test.snap | 33 + .../rseqc/inferexperiment/environment.yml | 2 - modules/nf-core/rseqc/inferexperiment/main.nf | 11 + .../rseqc/inferexperiment/tests/main.nf.test | 22 + .../inferexperiment/tests/main.nf.test.snap | 33 + .../rseqc/innerdistance/environment.yml | 2 - modules/nf-core/rseqc/innerdistance/main.nf | 15 + .../rseqc/innerdistance/tests/main.nf.test | 24 + .../innerdistance/tests/main.nf.test.snap | 97 + .../rseqc/junctionannotation/environment.yml | 2 - .../nf-core/rseqc/junctionannotation/main.nf | 17 + .../junctionannotation/tests/main.nf.test | 24 + .../tests/main.nf.test.snap | 143 ++ .../rseqc/junctionsaturation/environment.yml | 2 - .../nf-core/rseqc/junctionsaturation/main.nf | 12 + .../junctionsaturation/tests/main.nf.test | 24 + .../tests/main.nf.test.snap | 53 + .../rseqc/readdistribution/environment.yml | 2 - .../nf-core/rseqc/readdistribution/main.nf | 11 + .../rseqc/readdistribution/tests/main.nf.test | 24 + .../readdistribution/tests/main.nf.test.snap | 35 + .../rseqc/readduplication/environment.yml | 2 - modules/nf-core/rseqc/readduplication/main.nf | 14 + .../rseqc/readduplication/tests/main.nf.test | 23 + .../readduplication/tests/main.nf.test.snap | 89 + modules/nf-core/rseqc/tin/environment.yml | 2 - modules/nf-core/rseqc/tin/main.nf | 12 + modules/nf-core/rseqc/tin/tests/main.nf.test | 25 + .../nf-core/rseqc/tin/tests/main.nf.test.snap | 53 + .../nf-core/rtgtools/format/environment.yml | 2 - modules/nf-core/rtgtools/format/meta.yml | 2 +- .../rtgtools/pedfilter/environment.yml | 2 - modules/nf-core/rtgtools/pedfilter/meta.yml | 2 +- .../rtgtools/pedfilter/tests/main.nf.test | 85 + .../pedfilter/tests/main.nf.test.snap | 91 + .../rtgtools/pedfilter/tests/nextflow.config | 5 + .../nf-core/rtgtools/rocplot/environment.yml | 2 - modules/nf-core/rtgtools/rocplot/meta.yml | 2 +- .../rtgtools/rocplot/tests/main.nf.test | 16 +- .../rtgtools/rocplot/tests/main.nf.test.snap | 6 +- .../nf-core/rtgtools/vcfeval/environment.yml | 2 - modules/nf-core/rtgtools/vcfeval/meta.yml | 2 +- modules/nf-core/rtn/tni/environment.yml | 2 - .../sageproteomics/sage/environment.yml | 2 - .../sageproteomics/sage/tests/main.nf.test | 12 +- modules/nf-core/salmon/index/environment.yml | 2 - modules/nf-core/salmon/quant/environment.yml | 2 - modules/nf-core/salsa2/environment.yml | 2 - modules/nf-core/salsa2/tests/main.nf.test | 6 +- .../nf-core/sam2lca/analyze/environment.yml | 2 - modules/nf-core/sam2lca/analyze/main.nf | 21 +- modules/nf-core/sam2lca/analyze/meta.yml | 2 +- .../sam2lca/analyze/tests/main.nf.test | 69 + .../sam2lca/analyze/tests/main.nf.test.snap | 86 + .../sam2lca/analyze/tests/nextflow.config | 5 + .../nf-core/sambamba/flagstat/environment.yml | 2 - modules/nf-core/sambamba/flagstat/main.nf | 2 +- modules/nf-core/sambamba/flagstat/meta.yml | 2 +- .../sambamba/flagstat/tests/main.nf.test | 35 + .../sambamba/flagstat/tests/main.nf.test.snap | 37 + .../nf-core/sambamba/markdup/environment.yml | 2 - modules/nf-core/sambamba/markdup/main.nf | 2 +- .../sambamba/markdup/tests/main.nf.test | 40 + .../sambamba/markdup/tests/main.nf.test.snap | 18 + modules/nf-core/samblaster/environment.yml | 3 - modules/nf-core/samblaster/tests/main.nf.test | 11 +- .../samblaster/tests/main.nf.test.snap | 35 +- .../samtools/ampliconclip/environment.yml | 2 - .../nf-core/samtools/bam2fq/environment.yml | 2 - .../nf-core/samtools/calmd/environment.yml | 2 - modules/nf-core/samtools/cat/environment.yml | 2 - .../nf-core/samtools/collate/environment.yml | 2 - .../samtools/collatefastq/environment.yml | 5 +- modules/nf-core/samtools/collatefastq/main.nf | 33 +- .../samtools/collatefastq/tests/main.nf.test | 242 ++ .../collatefastq/tests/main.nf.test.snap | 194 ++ .../samtools/collatefastq/tests/tags.yml | 2 + .../samtools/consensus/environment.yml | 7 + modules/nf-core/samtools/consensus/main.nf | 60 + modules/nf-core/samtools/consensus/meta.yml | 54 + .../samtools/consensus/tests/fastq.config | 5 + .../samtools/consensus/tests/main.nf.test | 106 + .../consensus/tests/main.nf.test.snap | 190 ++ .../samtools/consensus/tests/pileup.config | 5 + .../nf-core/samtools/consensus/tests/tags.yml | 2 + .../nf-core/samtools/convert/environment.yml | 2 - .../nf-core/samtools/coverage/environment.yml | 2 - .../nf-core/samtools/cramsize/environment.yml | 3 - .../nf-core/samtools/depth/environment.yml | 5 +- .../nf-core/samtools/depth/tests/main.nf.test | 62 + .../samtools/depth/tests/main.nf.test.snap | 72 + modules/nf-core/samtools/dict/environment.yml | 2 - .../nf-core/samtools/dict/tests/main.nf.test | 62 + .../samtools/dict/tests/main.nf.test.snap | 50 + .../nf-core/samtools/faidx/environment.yml | 3 - .../nf-core/samtools/fasta/environment.yml | 5 +- .../nf-core/samtools/fasta/tests/main.nf.test | 70 + .../samtools/fasta/tests/main.nf.test.snap | 34 + .../nf-core/samtools/fastq/environment.yml | 2 - .../nf-core/samtools/fixmate/environment.yml | 2 - .../nf-core/samtools/flagstat/environment.yml | 2 - .../samtools/flagstat/tests/main.nf.test | 28 +- .../samtools/flagstat/tests/main.nf.test.snap | 78 +- .../nf-core/samtools/getrg/environment.yml | 5 +- .../nf-core/samtools/getrg/tests/main.nf.test | 39 + .../samtools/getrg/tests/main.nf.test.snap | 17 + .../nf-core/samtools/idxstats/environment.yml | 2 - .../samtools/idxstats/tests/main.nf.test | 29 +- .../samtools/idxstats/tests/main.nf.test.snap | 78 +- .../nf-core/samtools/import/environment.yml | 5 +- .../samtools/import/tests/main.nf.test | 8 +- .../nf-core/samtools/index/environment.yml | 2 - modules/nf-core/samtools/index/main.nf | 7 +- .../nf-core/samtools/index/tests/main.nf.test | 87 +- .../samtools/index/tests/main.nf.test.snap | 264 +- .../nf-core/samtools/markdup/environment.yml | 2 - .../nf-core/samtools/merge/environment.yml | 2 - .../nf-core/samtools/mpileup/environment.yml | 2 - .../nf-core/samtools/reheader/environment.yml | 2 - modules/nf-core/samtools/reheader/main.nf | 2 +- .../nf-core/samtools/sormadup/environment.yml | 2 - modules/nf-core/samtools/sort/environment.yml | 2 - modules/nf-core/samtools/sort/main.nf | 14 +- .../nf-core/samtools/sort/tests/main.nf.test | 54 +- .../samtools/sort/tests/main.nf.test.snap | 202 +- .../samtools/sort/tests/nextflow_cram.config | 8 + .../nf-core/samtools/stats/environment.yml | 2 - .../nf-core/samtools/stats/tests/main.nf.test | 60 +- .../samtools/stats/tests/main.nf.test.snap | 82 +- modules/nf-core/samtools/view/environment.yml | 2 - modules/nf-core/samtools/view/main.nf | 40 +- modules/nf-core/samtools/view/meta.yml | 9 + .../nf-core/samtools/view/tests/main.nf.test | 2 + .../samtools/view/tests/main.nf.test.snap | 22 +- .../nf-core/scimap/mcmicro/environment.yml | 5 - modules/nf-core/scimap/mcmicro/main.nf | 30 +- modules/nf-core/scimap/mcmicro/meta.yml | 13 +- .../nf-core/scimap/mcmicro/tests/main.nf.test | 63 + .../scimap/mcmicro/tests/main.nf.test.snap | 65 + .../scimap/spatiallda/tests/main.nf.test | 9 +- modules/nf-core/scoary/environment.yml | 2 - modules/nf-core/scoary/tests/main.nf.test | 35 + .../nf-core/scoary/tests/main.nf.test.snap | 43 + .../scramble/clusteranalysis/environment.yml | 2 - .../nf-core/scramble/clusteranalysis/meta.yml | 4 +- .../clusteridentifier/environment.yml | 2 - .../scramble/clusteridentifier/meta.yml | 2 +- .../clusteridentifier/tests/main.nf.test | 61 + .../clusteridentifier/tests/main.nf.test.snap | 72 + .../nf-core/seacr/callpeak/environment.yml | 5 +- .../nf-core/seacr/callpeak/tests/main.nf.test | 62 + .../seacr/callpeak/tests/main.nf.test.snap | 68 + .../seacr/callpeak/tests/nextflow.config | 5 + .../nf-core/segemehl/align/environment.yml | 2 - .../nf-core/segemehl/index/environment.yml | 2 - modules/nf-core/segemehl/index/meta.yml | 2 +- .../nf-core/segemehl/index/tests/main.nf.test | 51 + .../segemehl/index/tests/main.nf.test.snap | 48 + .../semibin/singleeasybin/environment.yml | 2 - .../nf-core/semibin/singleeasybin/meta.yml | 2 +- modules/nf-core/sentieon/README.md | 90 + .../sentieon/applyvarcal/environment.yml | 2 - modules/nf-core/sentieon/applyvarcal/main.nf | 50 +- .../nf-core/sentieon/bwaindex/environment.yml | 2 - modules/nf-core/sentieon/bwaindex/main.nf | 26 +- .../nf-core/sentieon/bwamem/environment.yml | 2 - modules/nf-core/sentieon/bwamem/main.nf | 67 +- modules/nf-core/sentieon/bwamem/meta.yml | 11 +- .../sentieon/bwamem/tests/main.nf.test | 262 ++ .../sentieon/bwamem/tests/main.nf.test.snap | 187 ++ .../sentieon/bwamem/tests/nextflow.config | 15 + .../bwamem/tests/nextflow_out_cram.config | 16 + .../nf-core/sentieon/bwamem/tests/tags.yml | 2 + .../sentieon/collectvcmetrics/environment.yml | 7 + .../nf-core/sentieon/collectvcmetrics/main.nf | 62 + .../sentieon/collectvcmetrics/meta.yml | 97 + .../collectvcmetrics/tests/main.nf.test | 116 + .../collectvcmetrics/tests/main.nf.test.snap | 95 + .../collectvcmetrics/tests/nextflow.config | 9 + .../sentieon/collectvcmetrics/tests/tags.yml | 2 + .../sentieon/coveragemetrics/environment.yml | 7 + .../nf-core/sentieon/coveragemetrics/main.nf | 75 + .../nf-core/sentieon/coveragemetrics/meta.yml | 103 + .../coveragemetrics/tests/main.nf.test | 181 ++ .../coveragemetrics/tests/main.nf.test.snap | 570 ++++ .../coveragemetrics/tests/nextflow.config | 9 + .../tests/nextflow_omit.config | 15 + .../tests/nextflow_partitions.config | 15 + .../sentieon/coveragemetrics/tests/tags.yml | 2 + .../sentieon/datametrics/environment.yml | 2 - modules/nf-core/sentieon/datametrics/main.nf | 49 +- .../nf-core/sentieon/dedup/environment.yml | 2 - modules/nf-core/sentieon/dedup/main.nf | 72 +- .../nf-core/sentieon/dedup/tests/main.nf.test | 90 + .../sentieon/dedup/tests/main.nf.test.snap | 359 +++ .../sentieon/dedup/tests/nextflow.config | 9 + .../dedup/tests/nextflow_rmdup.config | 15 + .../sentieon/dnamodelapply/environment.yml | 2 - .../nf-core/sentieon/dnamodelapply/main.nf | 51 +- .../nf-core/sentieon/dnascope/environment.yml | 2 - modules/nf-core/sentieon/dnascope/main.nf | 50 +- .../sentieon/gvcftyper/environment.yml | 2 - modules/nf-core/sentieon/gvcftyper/main.nf | 61 +- .../sentieon/gvcftyper/tests/main.nf.test | 212 ++ .../gvcftyper/tests/main.nf.test.snap | 121 + .../sentieon/gvcftyper/tests/nextflow.config | 15 + .../sentieon/haplotyper/environment.yml | 2 - modules/nf-core/sentieon/haplotyper/main.nf | 102 +- modules/nf-core/sentieon/haplotyper/meta.yml | 3 + .../sentieon/haplotyper/tests/main.nf.test | 327 +++ .../haplotyper/tests/main.nf.test.snap | 187 ++ .../sentieon/haplotyper/tests/nextflow.config | 16 + .../sentieon/haplotyper/tests/tags.yml | 2 + .../nf-core/sentieon/qualcal/environment.yml | 7 + modules/nf-core/sentieon/qualcal/main.nf | 112 + modules/nf-core/sentieon/qualcal/meta.yml | 86 + .../sentieon/qualcal/tests/main.nf.test | 241 ++ .../sentieon/qualcal/tests/main.nf.test.snap | 474 ++++ .../sentieon/qualcal/tests/nextflow.config | 9 + .../nf-core/sentieon/qualcal/tests/tags.yml | 2 + .../sentieon/readwriter/environment.yml | 2 - modules/nf-core/sentieon/readwriter/main.nf | 75 +- modules/nf-core/sentieon/readwriter/meta.yml | 2 +- .../sentieon/readwriter/tests/main.nf.test | 168 ++ .../readwriter/tests/main.nf.test.snap | 125 + .../sentieon/readwriter/tests/nextflow.config | 9 + .../tests/nextflow_outputcram.config | 16 + modules/nf-core/sentieon/setup.md | 13 - .../nf-core/sentieon/tnfilter/environment.yml | 2 - modules/nf-core/sentieon/tnfilter/main.nf | 50 +- .../sentieon/tnhaplotyper2/environment.yml | 2 - .../nf-core/sentieon/tnhaplotyper2/main.nf | 50 +- .../nf-core/sentieon/tnscope/environment.yml | 2 - modules/nf-core/sentieon/tnscope/main.nf | 50 +- .../nf-core/sentieon/varcal/environment.yml | 2 - modules/nf-core/sentieon/varcal/main.nf | 51 +- .../sentieon/wgsmetrics/environment.yml | 2 - modules/nf-core/sentieon/wgsmetrics/main.nf | 50 +- .../seqcluster/collapse/environment.yml | 5 + modules/nf-core/seqcluster/collapse/main.nf | 51 + modules/nf-core/seqcluster/collapse/meta.yml | 46 + .../seqcluster/collapse/tests/main.nf.test | 58 + .../collapse/tests/main.nf.test.snap | 72 + .../seqcluster/collapse/tests/nextflow.config | 6 + modules/nf-core/seqfu/derep/environment.yml | 7 + modules/nf-core/seqfu/derep/main.nf | 50 + modules/nf-core/seqfu/derep/meta.yml | 44 + .../nf-core/seqfu/derep/tests/main.nf.test | 87 + .../seqfu/derep/tests/main.nf.test.snap | 93 + modules/nf-core/seqfu/derep/tests/tags.yml | 2 + modules/nf-core/seqfu/stats/environment.yml | 2 - .../nf-core/seqfu/stats/tests/main.nf.test | 10 +- modules/nf-core/seqkit/concat/environment.yml | 2 - modules/nf-core/seqkit/concat/meta.yml | 1 - .../nf-core/seqkit/concat/tests/main.nf.test | 8 +- modules/nf-core/seqkit/fq2fa/environment.yml | 2 - .../nf-core/seqkit/fq2fa/tests/main.nf.test | 4 +- modules/nf-core/seqkit/fx2tab/environment.yml | 2 - .../nf-core/seqkit/fx2tab/tests/main.nf.test | 6 +- modules/nf-core/seqkit/grep/environment.yml | 2 - .../nf-core/seqkit/grep/tests/main.nf.test | 10 +- modules/nf-core/seqkit/pair/environment.yml | 2 - .../nf-core/seqkit/pair/tests/main.nf.test | 8 +- .../nf-core/seqkit/replace/environment.yml | 2 - .../nf-core/seqkit/replace/tests/main.nf.test | 6 +- modules/nf-core/seqkit/rmdup/environment.yml | 2 - modules/nf-core/seqkit/seq/environment.yml | 2 - modules/nf-core/seqkit/seq/tests/main.nf.test | 12 +- .../nf-core/seqkit/sliding/environment.yml | 2 - .../nf-core/seqkit/sliding/tests/main.nf.test | 6 +- modules/nf-core/seqkit/sort/environment.yml | 2 - .../nf-core/seqkit/sort/tests/main.nf.test | 12 +- modules/nf-core/seqkit/split2/environment.yml | 2 - .../nf-core/seqkit/split2/tests/main.nf.test | 24 +- modules/nf-core/seqkit/stats/environment.yml | 2 - .../nf-core/seqkit/stats/tests/main.nf.test | 14 +- modules/nf-core/seqkit/tab2fx/environment.yml | 2 - .../nf-core/seqkit/tab2fx/tests/main.nf.test | 10 +- modules/nf-core/seqsero2/environment.yml | 2 - modules/nf-core/seqsero2/tests/main.nf.test | 41 + .../nf-core/seqsero2/tests/main.nf.test.snap | 17 + .../nf-core/seqsero2/tests/nextflow.config | 5 + modules/nf-core/seqtk/cutn/environment.yml | 2 - modules/nf-core/seqtk/cutn/tests/main.nf.test | 4 +- modules/nf-core/seqtk/mergepe/environment.yml | 2 - modules/nf-core/seqtk/rename/environment.yml | 2 - .../nf-core/seqtk/rename/tests/main.nf.test | 6 +- modules/nf-core/seqtk/sample/environment.yml | 2 - .../nf-core/seqtk/sample/tests/main.nf.test | 6 +- modules/nf-core/seqtk/seq/environment.yml | 2 - modules/nf-core/seqtk/seq/meta.yml | 4 +- modules/nf-core/seqtk/seq/tests/main.nf.test | 30 +- .../nf-core/seqtk/seq/tests/main.nf.test.snap | 24 +- modules/nf-core/seqtk/subseq/environment.yml | 2 - modules/nf-core/seqtk/subseq/meta.yml | 5 + .../nf-core/seqtk/subseq/tests/main.nf.test | 8 +- modules/nf-core/seqtk/trim/environment.yml | 2 - modules/nf-core/seqtk/trim/tests/main.nf.test | 6 +- .../pileupcaller/environment.yml | 2 - .../sequencetools/pileupcaller/meta.yml | 6 +- .../sequenzautils/bam2seqz/environment.yml | 3 +- .../nf-core/sequenzautils/bam2seqz/main.nf | 12 + .../nf-core/sequenzautils/bam2seqz/meta.yml | 0 .../sequenzautils/bam2seqz/tests/main.nf.test | 64 + .../bam2seqz/tests/main.nf.test.snap | 68 + .../sequenzautils/gcwiggle/environment.yml | 3 +- .../nf-core/sequenzautils/gcwiggle/main.nf | 12 + .../sequenzautils/gcwiggle/tests/main.nf.test | 58 + .../gcwiggle/tests/main.nf.test.snap | 68 + .../gcwiggle/tests/nextflow.config | 5 + .../nf-core/seqwish/induce/environment.yml | 2 - modules/nf-core/seroba/run/environment.yml | 2 - modules/nf-core/seroba/run/meta.yml | 2 +- modules/nf-core/seroba/run/tests/main.nf.test | 38 + .../seroba/run/tests/main.nf.test.snap | 43 + modules/nf-core/severus/environment.yml | 7 + modules/nf-core/severus/main.nf | 89 + modules/nf-core/severus/meta.yml | 128 + modules/nf-core/severus/tests/main.nf.test | 209 ++ .../nf-core/severus/tests/main.nf.test.snap | 600 +++++ modules/nf-core/severus/tests/nextflow.config | 5 + modules/nf-core/severus/tests/tags.yml | 2 + modules/nf-core/sexdeterrmine/environment.yml | 2 - modules/nf-core/sexdeterrmine/meta.yml | 2 +- modules/nf-core/sgdemux/environment.yml | 2 - .../nf-core/shapeit5/ligate/environment.yml | 2 - .../shapeit5/phasecommon/environment.yml | 2 - modules/nf-core/shapeit5/phasecommon/meta.yml | 2 +- .../shapeit5/phaserare/environment.yml | 2 - modules/nf-core/shapeit5/phaserare/meta.yml | 2 +- .../nf-core/shapeit5/switch/environment.yml | 2 - modules/nf-core/shapeit5/switch/meta.yml | 2 +- modules/nf-core/shasta/environment.yml | 2 - modules/nf-core/shasta/meta.yml | 2 +- modules/nf-core/shasta/tests/main.nf.test | 41 + .../nf-core/shasta/tests/main.nf.test.snap | 17 + modules/nf-core/shasta/tests/nextflow.config | 3 + modules/nf-core/shasum/environment.yml | 4 +- modules/nf-core/shasum/meta.yml | 2 +- modules/nf-core/shasum/tests/main.nf.test | 34 + .../nf-core/shasum/tests/main.nf.test.snap | 37 + modules/nf-core/shigatyper/environment.yml | 4 +- modules/nf-core/shigatyper/main.nf | 21 +- modules/nf-core/shigatyper/meta.yml | 2 +- modules/nf-core/shigatyper/tests/main.nf.test | 111 + .../shigatyper/tests/main.nf.test.snap | 174 ++ modules/nf-core/shigeifinder/environment.yml | 2 - modules/nf-core/shigeifinder/meta.yml | 2 +- modules/nf-core/shinyngs/app/environment.yml | 4 +- modules/nf-core/shinyngs/app/main.nf | 4 +- .../shinyngs/app/tests/main.nf.test.snap | 12 +- .../staticdifferential/environment.yml | 4 +- .../shinyngs/staticdifferential/main.nf | 4 +- .../staticexploratory/environment.yml | 4 +- .../shinyngs/staticexploratory/main.nf | 4 +- .../staticexploratory/tests/main.nf.test.snap | 16 +- .../validatefomcomponents/environment.yml | 4 +- .../shinyngs/validatefomcomponents/main.nf | 4 +- modules/nf-core/shovill/environment.yml | 2 - modules/nf-core/shovill/tests/main.nf.test | 12 +- modules/nf-core/sickle/environment.yml | 2 - modules/nf-core/sickle/meta.yml | 2 +- modules/nf-core/sickle/tests/main.nf.test | 76 + .../nf-core/sickle/tests/main.nf.test.snap | 69 + modules/nf-core/sickle/tests/nextflow.config | 5 + .../nf-core/simpleaf/index/environment.yml | 5 +- .../nf-core/simpleaf/index/tests/main.nf.test | 8 +- .../nf-core/simpleaf/quant/environment.yml | 5 +- .../nf-core/simpleaf/quant/tests/main.nf.test | 12 +- modules/nf-core/sistr/environment.yml | 2 - modules/nf-core/sistr/tests/main.nf.test | 41 + modules/nf-core/sistr/tests/main.nf.test.snap | 18 + modules/nf-core/slimfastq/environment.yml | 2 - modules/nf-core/slimfastq/meta.yml | 2 +- modules/nf-core/slimfastq/tests/main.nf.test | 103 + .../nf-core/slimfastq/tests/main.nf.test.snap | 148 ++ .../smncopynumbercaller/environment.yml | 2 - modules/nf-core/smncopynumbercaller/meta.yml | 8 +- .../smncopynumbercaller/tests/main.nf.test | 59 + .../tests/main.nf.test.snap | 100 + .../smncopynumbercaller/tests/nextflow.config | 6 + modules/nf-core/smoothxg/environment.yml | 2 - modules/nf-core/smoothxg/tests/main.nf.test | 4 +- modules/nf-core/smoove/call/environment.yml | 2 - .../nf-core/smoove/call/tests/main.nf.test | 26 +- modules/nf-core/snakemake/environment.yml | 2 - modules/nf-core/snakemake/meta.yml | 2 +- .../nf-core/snapaligner/align/environment.yml | 2 - modules/nf-core/snapaligner/align/meta.yml | 2 +- .../nf-core/snapaligner/index/environment.yml | 2 - modules/nf-core/snapaligner/index/meta.yml | 2 +- .../snapaligner/index/tests/main.nf.test | 67 + .../snapaligner/index/tests/main.nf.test.snap | 63 + modules/nf-core/sniffles/environment.yml | 4 +- modules/nf-core/sniffles/main.nf | 47 +- modules/nf-core/sniffles/meta.yml | 31 +- modules/nf-core/sniffles/tests/main.nf.test | 286 +++ .../nf-core/sniffles/tests/main.nf.test.snap | 481 ++++ .../nf-core/sniffles/tests/nextflow.config | 5 + modules/nf-core/sniffles/tests/tags.yml | 2 + modules/nf-core/snippy/core/environment.yml | 2 - modules/nf-core/snippy/core/meta.yml | 2 +- modules/nf-core/snippy/run/environment.yml | 2 - modules/nf-core/snippy/run/main.nf | 1 + modules/nf-core/snippy/run/meta.yml | 2 +- modules/nf-core/snippy/run/tests/main.nf.test | 59 + .../snippy/run/tests/main.nf.test.snap | 91 + modules/nf-core/snpdists/environment.yml | 2 - modules/nf-core/snpdists/meta.yml | 6 +- modules/nf-core/snpdists/tests/main.nf.test | 32 + .../nf-core/snpdists/tests/main.nf.test.snap | 37 + .../nf-core/snpeff/download/environment.yml | 2 - modules/nf-core/snpeff/download/main.nf | 5 +- .../snpeff/download/tests/main.nf.test | 51 + .../snpeff/download/tests/main.nf.test.snap | 100 + modules/nf-core/snpeff/environment.yml | 2 - modules/nf-core/snpeff/snpeff/environment.yml | 2 - .../nf-core/snpeff/snpeff/tests/main.nf.test | 1 + .../nf-core/snpsift/annotate/environment.yml | 2 - modules/nf-core/snpsift/annotate/main.nf | 2 + .../snpsift/annotate/tests/main.nf.test | 105 + .../snpsift/annotate/tests/main.nf.test.snap | 63 + .../nf-core/snpsift/dbnsfp/environment.yml | 2 - modules/nf-core/snpsift/dbnsfp/main.nf | 2 + .../nf-core/snpsift/dbnsfp/tests/main.nf.test | 106 + .../snpsift/dbnsfp/tests/main.nf.test.snap | 63 + .../snpsift/dbnsfp/tests/nextflow.config | 5 + modules/nf-core/snpsift/split/environment.yml | 2 - modules/nf-core/snpsift/split/meta.yml | 2 +- .../nf-core/snpsift/split/tests/main.nf.test | 94 + .../snpsift/split/tests/main.nf.test.snap | 41 + modules/nf-core/snpsites/environment.yml | 2 - modules/nf-core/snpsites/main.nf | 12 + modules/nf-core/snpsites/meta.yml | 4 + modules/nf-core/snpsites/tests/main.nf.test | 49 + .../nf-core/snpsites/tests/main.nf.test.snap | 72 + modules/nf-core/snpsites/tests/tags.yml | 2 + .../nf-core/somalier/ancestry/environment.yml | 2 - modules/nf-core/somalier/ancestry/meta.yml | 2 +- .../nf-core/somalier/extract/environment.yml | 4 +- modules/nf-core/somalier/extract/main.nf | 10 +- modules/nf-core/somalier/extract/meta.yml | 17 +- .../somalier/extract/tests/main.nf.test | 84 + .../somalier/extract/tests/main.nf.test.snap | 72 + .../nf-core/somalier/extract/tests/tags.yml | 2 + .../nf-core/somalier/relate/environment.yml | 4 +- modules/nf-core/somalier/relate/main.nf | 4 +- modules/nf-core/somalier/relate/meta.yml | 4 +- .../somalier/relate/tests/main.nf.test | 124 + .../somalier/relate/tests/main.nf.test.snap | 286 +++ .../nf-core/somalier/relate/tests/tags.yml | 2 + modules/nf-core/sortmerna/environment.yml | 2 - .../nf-core/sourmash/compare/environment.yml | 2 - modules/nf-core/sourmash/compare/main.nf | 23 +- modules/nf-core/sourmash/compare/meta.yml | 4 +- .../sourmash/compare/tests/main.nf.test | 81 + .../sourmash/compare/tests/main.nf.test.snap | 132 + .../sourmash/compare/tests/nextflow.config | 5 + .../nf-core/sourmash/compare/tests/tags.yml | 2 + .../nf-core/sourmash/gather/environment.yml | 2 - .../nf-core/sourmash/index/environment.yml | 2 - modules/nf-core/sourmash/index/meta.yml | 3 + .../nf-core/sourmash/index/tests/main.nf.test | 2 +- .../nf-core/sourmash/sketch/environment.yml | 2 - .../sourmash/sketch/tests/main.nf.test | 2 +- .../sourmash/taxannotate/environment.yml | 2 - .../spaceranger/count/tests/main.nf.test | 38 +- .../spaceranger/mkgtf/tests/main.nf.test | 2 +- modules/nf-core/spaceranger/mkref/main.nf | 4 + .../spaceranger/mkref/tests/main.nf.test | 18 +- .../spaceranger/mkref/tests/main.nf.test.snap | 56 +- modules/nf-core/spades/environment.yml | 2 - modules/nf-core/spades/main.nf | 8 +- .../nf-core/spades/tests/main.nf.test.snap | 6 +- modules/nf-core/spatyper/environment.yml | 2 - modules/nf-core/spatyper/meta.yml | 1 + modules/nf-core/splitubam/environment.yml | 7 + modules/nf-core/splitubam/main.nf | 53 + modules/nf-core/splitubam/meta.yml | 46 + modules/nf-core/splitubam/tests/main.nf.test | 67 + .../nf-core/splitubam/tests/main.nf.test.snap | 73 + .../nf-core/splitubam/tests/nextflow.config | 5 + modules/nf-core/splitubam/tests/tags.yml | 2 + modules/nf-core/spotiflow/environment.yml | 1 - .../nf-core/spring/compress/environment.yml | 2 - modules/nf-core/spring/compress/meta.yml | 2 +- .../spring/compress/tests/main.nf.test | 67 + .../spring/compress/tests/main.nf.test.snap | 28 + .../nf-core/spring/decompress/environment.yml | 2 - modules/nf-core/spring/decompress/main.nf | 3 +- modules/nf-core/spring/decompress/meta.yml | 7 +- .../spring/decompress/test/main.nf.test | 78 + .../spring/decompress/test/main.nf.test.snap | 74 + .../spring/decompress/test}/nextflow.config | 0 .../nf-core/spring/decompress/test/tags.yml | 3 + .../sratools/fasterqdump/environment.yml | 2 - .../nf-core/sratools/prefetch/environment.yml | 2 - modules/nf-core/sratools/prefetch/main.nf | 2 +- modules/nf-core/srst2/srst2/environment.yml | 2 - modules/nf-core/srst2/srst2/meta.yml | 2 +- modules/nf-core/ssuissero/environment.yml | 2 - modules/nf-core/ssuissero/tests/main.nf.test | 34 + .../nf-core/ssuissero/tests/main.nf.test.snap | 37 + .../stadeniolib/scramble/environment.yml | 2 - modules/nf-core/stadeniolib/scramble/main.nf | 58 +- modules/nf-core/stadeniolib/scramble/meta.yml | 4 +- .../stadeniolib/scramble/tests/main.nf.test | 70 + .../scramble/tests/main.nf.test.snap | 59 + .../nf-core/staphopiasccmec/environment.yml | 2 - .../staphopiasccmec/tests/main.nf.test | 57 + .../staphopiasccmec/tests/main.nf.test.snap | 68 + .../staphopiasccmec/tests/nextflow.config | 5 + modules/nf-core/star/align/environment.yml | 2 - modules/nf-core/star/align/main.nf | 4 +- modules/nf-core/star/align/tests/main.nf.test | 523 +++- .../star/align/tests/main.nf.test.snap | 2288 +++++++++++++---- .../star/genomegenerate/environment.yml | 2 - .../star/genomegenerate/tests/main.nf.test | 39 +- .../genomegenerate/tests/main.nf.test.snap | 182 +- modules/nf-core/star/starsolo/environment.yml | 2 - modules/nf-core/star/starsolo/main.nf | 15 +- modules/nf-core/star/starsolo/tests/NO_FILE | 0 .../nf-core/star/starsolo/tests/main.nf.test | 114 + .../star/starsolo/tests/main.nf.test.snap | 167 ++ modules/nf-core/star/starsolo/tests/tags.yml | 2 + .../nf-core/staramr/search/environment.yml | 4 +- .../nf-core/staramr/search/tests/main.nf.test | 4 +- modules/nf-core/stardist/environment.yml | 9 + modules/nf-core/stardist/main.nf | 51 + modules/nf-core/stardist/meta.yml | 48 + modules/nf-core/stardist/tests/main.nf.test | 57 + .../nf-core/stardist/tests/main.nf.test.snap | 68 + .../nf-core/stardist/tests/nextflow.config | 5 + modules/nf-core/stecfinder/environment.yml | 2 - modules/nf-core/stecfinder/meta.yml | 2 +- modules/nf-core/stitch/environment.yml | 2 - modules/nf-core/stitch/meta.yml | 2 +- modules/nf-core/stranger/environment.yml | 4 +- modules/nf-core/stranger/main.nf | 6 +- modules/nf-core/stranger/tests/main.nf.test | 82 + .../nf-core/stranger/tests/main.nf.test.snap | 68 + .../nf-core/stranger/tests/nextflow.config | 5 + modules/nf-core/stranger/tests/tags.yml | 2 + .../nf-core/strelka/germline/environment.yml | 2 - .../strelka/germline/tests/main.nf.test | 4 +- .../strelka/germline/tests/main.nf.test.snap | 26 +- .../nf-core/strelka/germline/tests/tags.yml | 2 - .../nf-core/strelka/somatic/environment.yml | 2 - .../nf-core/stringtie/merge/environment.yml | 2 - .../stringtie/merge/tests/main.nf.test | 2 +- .../stringtie/stringtie/environment.yml | 2 - .../stringtie/stringtie/tests/main.nf.test | 139 +- .../stringtie/tests/main.nf.test.snap | 504 +++- .../subread/featurecounts/environment.yml | 2 - modules/nf-core/subread/featurecounts/main.nf | 12 + .../subread/featurecounts/tests/main.nf.test | 78 +- .../featurecounts/tests/main.nf.test.snap | 207 ++ .../summarizedexperiment/environment.yml | 2 - .../templates/summarizedexperiment.r | 2 +- .../tests/main.nf.test.snap | 32 +- .../survivor/bedpetovcf/environment.yml | 2 - .../survivor/bedpetovcf/tests/main.nf.test | 4 +- .../nf-core/survivor/filter/environment.yml | 2 - modules/nf-core/survivor/filter/meta.yml | 2 +- .../nf-core/survivor/merge/environment.yml | 2 - modules/nf-core/survivor/merge/meta.yml | 4 +- .../nf-core/survivor/merge/tests/main.nf.test | 79 + .../survivor/merge/tests/main.nf.test.snap | 50 + .../nf-core/survivor/simsv/environment.yml | 2 - modules/nf-core/survivor/simsv/meta.yml | 2 +- .../nf-core/survivor/stats/environment.yml | 2 - .../nf-core/survivor/stats/tests/main.nf.test | 4 +- modules/nf-core/svaba/environment.yml | 2 - modules/nf-core/svaba/meta.yml | 2 +- .../svanalyzer/svbenchmark/environment.yml | 3 - .../svanalyzer/svbenchmark/tests/main.nf.test | 26 +- modules/nf-core/svdb/merge/environment.yml | 2 - modules/nf-core/svdb/query/environment.yml | 2 - modules/nf-core/svdb/query/tests/main.nf.test | 4 +- modules/nf-core/svtk/baftest/environment.yml | 2 - modules/nf-core/svtk/baftest/meta.yml | 2 +- .../nf-core/svtk/countsvtypes/environment.yml | 2 - modules/nf-core/svtk/countsvtypes/meta.yml | 2 +- .../svtk/countsvtypes/tests/main.nf.test | 35 + .../svtk/countsvtypes/tests/main.nf.test.snap | 37 + .../nf-core/svtk/rdtest2vcf/environment.yml | 2 - modules/nf-core/svtk/rdtest2vcf/meta.yml | 2 +- .../nf-core/svtk/standardize/environment.yml | 2 - modules/nf-core/svtk/standardize/meta.yml | 2 +- modules/nf-core/svtk/vcf2bed/environment.yml | 2 - modules/nf-core/svtk/vcf2bed/meta.yml | 2 +- .../nf-core/svtyper/svtyper/environment.yml | 2 - modules/nf-core/svtyper/svtyper/meta.yml | 2 +- .../svtyper/svtyper/tests/main.nf.test | 83 + .../svtyper/svtyper/tests/main.nf.test.snap | 89 + .../svtyper/svtypersso/environment.yml | 2 - modules/nf-core/svync/environment.yml | 2 - modules/nf-core/svync/tests/main.nf.test | 8 +- modules/nf-core/tabix/bgzip/environment.yml | 4 +- modules/nf-core/tabix/bgzip/main.nf | 4 +- .../nf-core/tabix/bgzip/tests/main.nf.test | 8 +- .../tabix/bgzip/tests/main.nf.test.snap | 56 +- .../nf-core/tabix/bgziptabix/environment.yml | 4 +- modules/nf-core/tabix/bgziptabix/main.nf | 6 +- .../tabix/bgziptabix/tests/main.nf.test | 6 +- .../tabix/bgziptabix/tests/main.nf.test.snap | 50 +- modules/nf-core/tabix/tabix/environment.yml | 5 +- modules/nf-core/tabix/tabix/main.nf | 11 +- .../nf-core/tabix/tabix/tests/main.nf.test | 44 +- .../tabix/tabix/tests/main.nf.test.snap | 111 +- modules/nf-core/tailfindr/environment.yml | 2 - modules/nf-core/tailfindr/meta.yml | 2 +- modules/nf-core/tailfindr/tests/main.nf.test | 34 + .../nf-core/tailfindr/tests/main.nf.test.snap | 35 + .../taxonkit/name2taxid/environment.yml | 2 - .../nf-core/taxpasta/merge/environment.yml | 2 - .../taxpasta/standardise/environment.yml | 2 - .../tbprofiler/profile/environment.yml | 2 - .../tbprofiler/profile/tests/main.nf.test | 78 + .../profile/tests/main.nf.test.snap | 44 + .../profile/tests/nextflow.illumina.config | 5 + .../profile/tests/nextflow.nanopore.config | 5 + modules/nf-core/tcoffee/align/environment.yml | 2 - .../nf-core/tcoffee/align/tests/main.nf.test | 4 +- .../tcoffee/alncompare/environment.yml | 2 - .../nf-core/tcoffee/consensus/environment.yml | 6 + modules/nf-core/tcoffee/consensus/main.nf | 62 + modules/nf-core/tcoffee/consensus/meta.yml | 63 + .../tcoffee/consensus/tests/main.nf.test | 132 + .../tcoffee/consensus/tests/main.nf.test.snap | 63 + .../tcoffee/consensus/tests/sequence.config | 11 + .../nf-core/tcoffee/consensus/tests/tags.yml | 2 + modules/nf-core/tcoffee/irmsd/environment.yml | 2 - .../tcoffee/seqreformat/environment.yml | 2 - modules/nf-core/tcoffee/seqreformat/main.nf | 2 - modules/nf-core/tcoffee/tcs/environment.yml | 2 - .../thermorawfileparser/environment.yml | 2 - .../thermorawfileparser/tests/main.nf.test | 4 +- modules/nf-core/tiara/tiara/environment.yml | 2 - modules/nf-core/tiara/tiara/meta.yml | 2 +- .../nf-core/tiara/tiara/tests/main.nf.test | 42 + .../tiara/tiara/tests/main.nf.test.snap | 27 + .../nf-core/tiara/tiara/tests/nextflow.config | 5 + modules/nf-core/tiddit/cov/environment.yml | 2 - modules/nf-core/tiddit/cov/tests/main.nf.test | 53 +- .../tiddit/cov/tests/main.nf.test.snap | 78 +- modules/nf-core/tiddit/sv/environment.yml | 2 - modules/nf-core/tidk/explore/environment.yml | 2 - .../nf-core/tidk/explore/tests/main.nf.test | 17 +- .../tidk/explore/tests/main.nf.test.snap | 99 +- modules/nf-core/tidk/plot/environment.yml | 2 - modules/nf-core/tidk/plot/tests/main.nf.test | 8 +- .../nf-core/tidk/plot/tests/main.nf.test.snap | 16 +- modules/nf-core/tidk/search/environment.yml | 2 - .../nf-core/tidk/search/tests/main.nf.test | 24 +- .../tidk/search/tests/main.nf.test.snap | 168 +- modules/nf-core/topas/gencons/environment.yml | 2 - modules/nf-core/topas/gencons/meta.yml | 2 +- modules/nf-core/toulligqc/environment.yml | 2 - modules/nf-core/toulligqc/meta.yml | 14 +- modules/nf-core/toulligqc/tests/main.nf.test | 10 +- .../transdecoder/longorf/environment.yml | 4 +- modules/nf-core/transdecoder/longorf/main.nf | 42 +- modules/nf-core/transdecoder/longorf/meta.yml | 12 +- .../transdecoder/longorf/tests/main.nf.test | 96 + .../longorf/tests/main.nf.test.snap | 203 ++ .../transdecoder/predict/environment.yml | 2 - modules/nf-core/transdecoder/predict/meta.yml | 10 +- modules/nf-core/trimgalore/environment.yml | 3 - modules/nf-core/trimgalore/main.nf | 21 + modules/nf-core/trimgalore/tests/main.nf.test | 47 + .../trimgalore/tests/main.nf.test.snap | 154 ++ modules/nf-core/trimmomatic/environment.yml | 2 - modules/nf-core/trimmomatic/main.nf | 35 +- modules/nf-core/trimmomatic/meta.yml | 10 +- .../nf-core/trimmomatic/tests/main.nf.test | 59 +- .../trimmomatic/tests/main.nf.test.snap | 210 +- modules/nf-core/trinity/environment.yml | 2 - modules/nf-core/trinity/tests/main.nf.test | 60 +- .../nf-core/trinity/tests/main.nf.test.snap | 110 +- modules/nf-core/trust4/environment.yml | 2 - modules/nf-core/trust4/tests/main.nf.test | 14 +- modules/nf-core/truvari/bench/environment.yml | 2 - modules/nf-core/truvari/bench/meta.yml | 2 +- .../truvari/consistency/environment.yml | 2 - .../truvari/consistency/tests/main.nf.test | 18 +- .../nf-core/truvari/segment/environment.yml | 2 - .../truvari/segment/tests/main.nf.test | 6 +- .../nf-core/trycycler/cluster/environment.yml | 2 - .../trycycler/subsample/environment.yml | 2 - modules/nf-core/tsebra/environment.yml | 2 - .../nf-core/tximeta/tximport/environment.yml | 2 - .../tximeta/tximport/templates/tximport.r | 5 +- modules/nf-core/ucsc/bedclip/environment.yml | 2 - modules/nf-core/ucsc/bedclip/main.nf | 12 + .../nf-core/ucsc/bedclip/tests/main.nf.test | 24 + .../ucsc/bedclip/tests/main.nf.test.snap | 35 + .../ucsc/bedgraphtobigwig/environment.yml | 2 - .../ucsc/bedgraphtobigwig/tests/main.nf.test | 26 +- .../bedgraphtobigwig/tests/main.nf.test.snap | 39 +- .../nf-core/ucsc/bedtobigbed/environment.yml | 2 - .../ucsc/bigwigaverageoverbed/environment.yml | 2 - .../bigwigaverageoverbed/tests/main.nf.test | 36 + .../tests/main.nf.test.snap | 35 + .../ucsc/gtftogenepred/environment.yml | 2 - .../ucsc/gtftogenepred/tests/main.nf.test | 36 + .../gtftogenepred/tests/main.nf.test.snap | 51 + .../ucsc/gtftogenepred/tests/nextflow.config | 8 + modules/nf-core/ucsc/liftover/environment.yml | 2 - modules/nf-core/ucsc/liftover/main.nf | 13 + modules/nf-core/ucsc/liftover/meta.yml | 6 +- .../nf-core/ucsc/liftover/tests/main.nf.test | 60 + .../ucsc/liftover/tests/main.nf.test.snap | 69 + modules/nf-core/ucsc/liftover/tests/tags.yml | 2 + .../nf-core/ucsc/liftover/tests/test.config | 5 + .../nf-core/ucsc/wigtobigwig/environment.yml | 2 - .../ucsc/wigtobigwig/tests/main.nf.test | 59 + .../ucsc/wigtobigwig/tests/main.nf.test.snap | 72 + modules/nf-core/ultra/align/environment.yml | 2 - modules/nf-core/ultra/align/meta.yml | 2 +- modules/nf-core/ultra/index/environment.yml | 2 - modules/nf-core/ultra/index/meta.yml | 2 +- .../nf-core/ultra/pipeline/environment.yml | 2 - modules/nf-core/ultraplex/environment.yml | 2 - modules/nf-core/umicollapse/environment.yml | 2 - .../nf-core/umicollapse/tests/main.nf.test | 26 +- .../nf-core/umitools/dedup/environment.yml | 2 - modules/nf-core/umitools/dedup/main.nf | 1 + .../nf-core/umitools/dedup/tests/main.nf.test | 108 +- .../umitools/dedup/tests/main.nf.test.snap | 98 +- .../nf-core/umitools/extract/environment.yml | 2 - modules/nf-core/umitools/extract/main.nf | 18 + .../umitools/extract/tests/main.nf.test | 79 +- .../umitools/extract/tests/main.nf.test.snap | 159 +- .../nf-core/umitools/group/environment.yml | 2 - .../umitools/prepareforrsem/environment.yml | 2 - modules/nf-core/unicycler/environment.yml | 2 - modules/nf-core/universc/environment.yml | 2 - modules/nf-core/untar/environment.yml | 6 +- modules/nf-core/untar/main.nf | 29 +- modules/nf-core/untar/tests/main.nf.test | 44 +- modules/nf-core/untar/tests/main.nf.test.snap | 152 +- modules/nf-core/untarfiles/environment.yml | 5 +- modules/nf-core/untarfiles/main.nf | 12 +- modules/nf-core/untarfiles/tests/main.nf.test | 104 + .../untarfiles/tests/main.nf.test.snap | 356 +++ modules/nf-core/unzip/environment.yml | 2 - modules/nf-core/unzip/main.nf | 14 +- modules/nf-core/unzip/tests/main.nf.test | 54 + modules/nf-core/unzip/tests/main.nf.test.snap | 76 + modules/nf-core/unzip/tests/tags.yml | 2 + modules/nf-core/unzipfiles/environment.yml | 2 - modules/nf-core/unzipfiles/main.nf | 12 + modules/nf-core/unzipfiles/tests/main.nf.test | 55 + .../unzipfiles/tests/main.nf.test.snap | 68 + modules/nf-core/unzipfiles/tests/tags.yml | 2 + modules/nf-core/upd/environment.yml | 2 - modules/nf-core/upd/meta.yml | 2 +- modules/nf-core/upd/tests/main.nf.test | 57 + modules/nf-core/upd/tests/main.nf.test.snap | 72 + modules/nf-core/upd/tests/nextflow.config | 3 + modules/nf-core/upp/align/environment.yml | 6 + modules/nf-core/upp/align/main.nf | 71 + modules/nf-core/upp/align/meta.yml | 57 + modules/nf-core/upp/align/tests/main.nf.test | 96 + .../nf-core/upp/align/tests/main.nf.test.snap | 101 + .../nf-core/upp/align/tests/nextflow.config | 7 + modules/nf-core/upp/align/tests/tags.yml | 2 + modules/nf-core/vardictjava/environment.yml | 3 +- modules/nf-core/vardictjava/main.nf | 12 +- .../nf-core/vardictjava/tests/main.nf.test | 24 +- .../vardictjava/tests/main.nf.test.snap | 16 +- modules/nf-core/variantbam/environment.yml | 2 - modules/nf-core/variantbam/main.nf | 12 + modules/nf-core/variantbam/tests/main.nf.test | 58 + .../variantbam/tests/main.nf.test.snap | 72 + .../callvariants/environment.yml | 2 - .../varlociraptor/callvariants/meta.yml | 2 +- .../environment.yml | 2 - .../estimatealignmentproperties/main.nf | 12 + .../estimatealignmentproperties/meta.yml | 2 +- .../tests/main.nf.test | 75 + .../tests/main.nf.test.snap | 49 + .../varlociraptor/preprocess/environment.yml | 2 - .../nf-core/varlociraptor/preprocess/meta.yml | 2 +- modules/nf-core/vcf2cytosure/environment.yml | 2 - .../nf-core/vcf2cytosure/tests/main.nf.test | 8 +- modules/nf-core/vcf2db/environment.yml | 2 - modules/nf-core/vcf2db/tests/main.nf.test | 14 +- .../nf-core/vcf2db/tests/main.nf.test.snap | 40 +- modules/nf-core/vcf2maf/environment.yml | 4 +- modules/nf-core/vcf2maf/meta.yml | 2 +- modules/nf-core/vcf2maf/tests/main.nf.test | 76 + .../nf-core/vcf2maf/tests/main.nf.test.snap | 143 ++ modules/nf-core/vcf2maf/tests/nextflow.config | 11 + .../vcf2maf/tests/nextflow.withVEP.config | 9 + modules/nf-core/vcf2maf/tests/tags.yml | 2 + modules/nf-core/vcfanno/environment.yml | 2 - modules/nf-core/vcfanno/tests/main.nf.test | 22 +- .../vcflib/vcfbreakmulti/environment.yml | 2 - modules/nf-core/vcflib/vcfbreakmulti/main.nf | 4 +- modules/nf-core/vcflib/vcfbreakmulti/meta.yml | 5 +- .../vcflib/vcfbreakmulti/tests/main.nf.test | 63 + .../vcfbreakmulti/tests/main.nf.test.snap | 50 + .../nf-core/vcflib/vcffilter/environment.yml | 2 - modules/nf-core/vcflib/vcffilter/meta.yml | 2 +- .../vcflib/vcffilter/tests/main.nf.test | 41 + .../vcflib/vcffilter/tests/main.nf.test.snap | 15 + .../vcflib/vcffilter/tests/nextflow.config | 6 + .../nf-core/vcflib/vcffixup/environment.yml | 2 - .../vcflib/vcffixup/tests/main.nf.test | 17 +- .../nf-core/vcflib/vcfuniq/environment.yml | 2 - .../nf-core/vcflib/vcfuniq/tests/main.nf.test | 37 + .../vcflib/vcfuniq/tests/main.nf.test.snap | 37 + .../vcflib/vcfuniq/tests/nextflow.config | 5 + modules/nf-core/vcftools/environment.yml | 2 - modules/nf-core/vcftools/main.nf | 64 + .../nf-core/vcftools/tests/main.nf.test.snap | 888 ++++++- modules/nf-core/velocyto/environment.yml | 2 - .../verifybamid/verifybamid/environment.yml | 2 - .../nf-core/verifybamid/verifybamid/meta.yml | 4 +- .../verifybamid/tests/main.nf.test | 44 + .../verifybamid/tests/main.nf.test.snap | 51 + .../verifybamid/tests/nextflow.config | 3 + .../verifybamid/verifybamid2/environment.yml | 2 - .../nf-core/verifybamid/verifybamid2/meta.yml | 4 +- modules/nf-core/vg/construct/environment.yml | 2 - modules/nf-core/vg/construct/meta.yml | 4 +- .../nf-core/vg/construct/tests/main.nf.test | 135 + .../vg/construct/tests/main.nf.test.snap | 134 + .../nf-core/vg/deconstruct/environment.yml | 2 - .../nf-core/vg/deconstruct/tests/main.nf.test | 42 + .../vg/deconstruct/tests/main.nf.test.snap | 15 + .../vg/deconstruct/tests/nextflow.config | 5 + modules/nf-core/vg/index/environment.yml | 2 - modules/nf-core/vg/index/meta.yml | 2 +- modules/nf-core/vg/index/tests/main.nf.test | 77 + .../nf-core/vg/index/tests/main.nf.test.snap | 80 + .../viennarna/rnacofold/environment.yml | 2 - .../nf-core/viennarna/rnafold/environment.yml | 2 - .../viennarna/rnalfold/environment.yml | 2 - modules/nf-core/vireo/environment.yml | 2 - .../vrhyme/extractunbinned/environment.yml | 2 - .../nf-core/vrhyme/extractunbinned/meta.yml | 2 +- .../nf-core/vrhyme/linkbins/environment.yml | 2 - modules/nf-core/vrhyme/linkbins/meta.yml | 2 +- modules/nf-core/vrhyme/vrhyme/environment.yml | 5 +- modules/nf-core/vrhyme/vrhyme/meta.yml | 2 +- .../nf-core/vrhyme/vrhyme/tests/main.nf.test | 88 + .../vrhyme/vrhyme/tests/main.nf.test.snap | 169 ++ .../nf-core/vsearch/cluster/environment.yml | 5 +- .../vsearch/cluster/tests/main.nf.test | 10 +- .../vsearch/dereplicate/environment.yml | 5 + modules/nf-core/vsearch/dereplicate/main.nf | 52 + modules/nf-core/vsearch/dereplicate/meta.yml | 50 + .../vsearch/dereplicate/tests/main.nf.test | 58 + .../dereplicate/tests/main.nf.test.snap | 120 + .../vsearch/fastqfilter/environment.yml | 5 + modules/nf-core/vsearch/fastqfilter/main.nf | 51 + modules/nf-core/vsearch/fastqfilter/meta.yml | 45 + .../vsearch/fastqfilter/tests/main.nf.test | 64 + .../fastqfilter/tests/main.nf.test.snap | 65 + .../vsearch/fastqfilter/tests/nextflow.config | 5 + .../nf-core/vsearch/sintax/environment.yml | 2 - modules/nf-core/vsearch/sintax/meta.yml | 3 +- .../nf-core/vsearch/sintax/tests/main.nf.test | 33 + .../vsearch/sintax/tests/main.nf.test.snap | 35 + modules/nf-core/vsearch/sort/environment.yml | 2 - .../nf-core/vsearch/sort/tests/main.nf.test | 4 +- .../vsearch/usearchglobal/environment.yml | 2 - .../nf-core/vsearch/usearchglobal/meta.yml | 4 +- .../vsearch/usearchglobal/tests/main.nf.test | 64 + .../usearchglobal/tests/main.nf.test.snap | 96 + modules/nf-core/vt/decompose/environment.yml | 2 - modules/nf-core/vt/decompose/meta.yml | 2 +- .../nf-core/vt/decompose/tests/main.nf.test | 60 + .../vt/decompose/tests/main.nf.test.snap | 72 + .../vt/decompose/tests/nextflow.config | 5 + modules/nf-core/vt/normalize/environment.yml | 2 - modules/nf-core/vt/normalize/main.nf | 4 +- modules/nf-core/vt/normalize/meta.yml | 2 +- .../nf-core/vt/normalize/tests/main.nf.test | 151 ++ .../vt/normalize/tests/main.nf.test.snap | 109 + .../vt/normalize/tests/nextflow.config | 5 + modules/nf-core/wfmash/environment.yml | 2 - modules/nf-core/wfmash/tests/main.nf.test | 8 +- modules/nf-core/wgsim/environment.yml | 2 - modules/nf-core/wgsim/main.nf | 23 +- modules/nf-core/wgsim/meta.yml | 2 +- modules/nf-core/wgsim/tests/main.nf.test | 90 + modules/nf-core/wgsim/tests/main.nf.test.snap | 85 + modules/nf-core/wgsim/tests/seed.config | 5 + modules/nf-core/whamg/environment.yml | 5 +- modules/nf-core/whamg/meta.yml | 2 +- modules/nf-core/whamg/tests/main.nf.test | 44 + modules/nf-core/whamg/tests/main.nf.test.snap | 19 + modules/nf-core/whamg/tests/nextflow.config | 5 + .../windowmasker/convert/environment.yml | 2 - .../windowmasker/convert/tests/main.nf.test | 4 +- .../windowmasker/mkcounts/environment.yml | 2 - .../windowmasker/mkcounts/tests/main.nf.test | 4 +- .../windowmasker/ustat/environment.yml | 2 - .../windowmasker/ustat/tests/main.nf.test | 6 +- .../wisecondorx/convert/environment.yml | 4 +- modules/nf-core/wisecondorx/convert/main.nf | 8 +- .../wisecondorx/convert/tests/main.nf.test | 34 +- .../convert/tests/main.nf.test.snap | 108 +- .../wisecondorx/gender/environment.yml | 4 +- modules/nf-core/wisecondorx/gender/main.nf | 8 +- .../wisecondorx/gender/tests/main.nf.test | 4 +- .../gender/tests/main.nf.test.snap | 10 +- .../wisecondorx/newref/environment.yml | 4 +- modules/nf-core/wisecondorx/newref/main.nf | 8 +- .../wisecondorx/newref/tests/main.nf.test | 8 +- .../newref/tests/main.nf.test.snap | 8 +- .../wisecondorx/predict/environment.yml | 4 +- modules/nf-core/wisecondorx/predict/main.nf | 8 +- .../wisecondorx/predict/tests/main.nf.test | 4 +- .../predict/tests/main.nf.test.snap | 8 +- modules/nf-core/wittyer/Dockerfile | 4 +- modules/nf-core/wittyer/environment.yml | 2 - modules/nf-core/wittyer/main.nf | 22 +- modules/nf-core/wittyer/meta.yml | 8 +- modules/nf-core/wittyer/tests/main.nf.test | 142 +- .../nf-core/wittyer/tests/main.nf.test.snap | 266 +- .../tests/{test.config => nextflow.config} | 0 .../nf-core/xengsort/index/environment.yml | 2 - .../nf-core/xengsort/index/tests/main.nf.test | 4 +- modules/nf-core/xz/compress/environment.yml | 2 - .../nf-core/xz/compress/tests/main.nf.test | 10 +- .../xz/compress/tests/main.nf.test.snap | 15 +- modules/nf-core/xz/decompress/environment.yml | 2 - .../nf-core/xz/decompress/tests/main.nf.test | 9 +- .../xz/decompress/tests/main.nf.test.snap | 15 +- modules/nf-core/yahs/environment.yml | 2 - modules/nf-core/yahs/meta.yml | 2 +- modules/nf-core/yahs/tests/main.nf.test | 36 + modules/nf-core/yahs/tests/main.nf.test.snap | 67 + modules/nf-core/yahs/tests/nextflow.config | 6 + modules/nf-core/yak/count/environment.yml | 7 + modules/nf-core/yak/count/main.nf | 49 + modules/nf-core/yak/count/meta.yml | 47 + modules/nf-core/yak/count/tests/main.nf.test | 81 + .../nf-core/yak/count/tests/main.nf.test.snap | 107 + modules/nf-core/yak/count/tests/tags.yml | 2 + modules/nf-core/yara/index/environment.yml | 2 - modules/nf-core/yara/index/main.nf | 14 + modules/nf-core/yara/index/meta.yml | 5 + modules/nf-core/yara/index/tests/main.nf.test | 58 + .../yara/index/tests/main.nf.test.snap | 120 + modules/nf-core/yara/mapper/environment.yml | 5 +- modules/nf-core/yara/mapper/main.nf | 33 +- modules/nf-core/yara/mapper/meta.yml | 5 + .../nf-core/yara/mapper/tests/main.nf.test | 137 + .../yara/mapper/tests/main.nf.test.snap | 141 + modules/nf-core/zip/environment.yml | 2 - modules/nf-core/zip/tests/main.nf.test | 2 +- nf-test.config | 3 +- .../nf-core/bam_cnv_wisecondorx/main.nf | 1 - .../tests/main.nf.test | 8 +- .../tests/main.nf.test | 39 +- .../tests/main.nf.test.snap | 168 +- .../bam_docounts_contamination_angsd/main.nf | 1 - .../tests/main.nf.test | 71 +- .../tests/main.nf.test.snap | 322 ++- subworkflows/nf-core/bam_ngscheckmate/main.nf | 1 - .../nf-core/bam_qc_picard/tests/main.nf.test | 34 +- .../bam_qc_picard/tests/main.nf.test.snap | 16 +- .../nf-core/bam_rseqc/tests/main.nf.test | 87 +- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 918 ++++++- .../tests/main.nf.test | 76 +- .../tests/main.nf.test.snap | 326 ++- .../nf-core/bam_split_by_region/main.nf | 1 - .../nf-core/bam_stats_mirna_mirtop/main.nf | 37 + .../nf-core/bam_stats_mirna_mirtop/meta.yml | 61 + .../bam_stats_mirna_mirtop/tests/main.nf.test | 50 + .../tests/main.nf.test.snap | 41 + .../tests/nextflow.config | 5 + .../bam_stats_samtools/tests/main.nf.test | 116 +- .../tests/main.nf.test.snap | 336 ++- .../bam_subsampledepth_samtools/main.nf | 51 + .../bam_subsampledepth_samtools/meta.yml | 42 + .../tests/main.nf.test | 52 + .../tests/main.nf.test.snap | 133 + .../tests/nextflow.config | 9 + .../tests/tags.yml | 2 + .../main.nf | 61 + .../meta.yml | 50 + .../tests/main.nf.test | 50 + .../tests/main.nf.test.snap | 25 + .../tests/tags.yml | 2 + .../main.nf | 1 - .../bam_variant_demix_boot_freyja/main.nf | 1 - .../bam_variant_demix_boot_freyja/meta.yml | 4 +- .../tests/main.nf.test | 2 + .../tests/nextflow.config | 8 + subworkflows/nf-core/bcl_demultiplex/main.nf | 170 +- .../bcl_demultiplex/tests/main.nf.test | 13 +- .../bcl_demultiplex/tests/main.nf.test.snap | 138 +- .../bcl_demultiplex/tests/nextflow.config | 3 +- .../nf-core/bed_scatter_bedtools/main.nf | 1 - .../tests/main.nf.test | 24 + .../tests/main.nf.test.snap | 59 + subworkflows/nf-core/deepvariant/README.md | 8 + subworkflows/nf-core/deepvariant/main.nf | 45 + subworkflows/nf-core/deepvariant/meta.yml | 76 + .../nf-core/deepvariant/tests/main.nf.test | 105 + .../deepvariant/tests/main.nf.test.snap | 300 +++ .../nf-core/deepvariant/tests/nextflow.config | 8 + .../nf-core/deepvariant/tests/tags.yml | 2 + .../nf-core/fasta_binning_concoct/main.nf | 3 +- .../fasta_binning_concoct/tests/main.nf.test | 46 + .../tests/main.nf.test.snap | 223 ++ .../nf-core/fasta_build_add_kraken2/main.nf | 1 - .../fasta_build_add_kraken2_bracken/main.nf | 1 - subworkflows/nf-core/fasta_clean_fcs/main.nf | 1 - .../tests/main.nf.test | 12 +- .../fasta_hmmsearch_rank_fastas/main.nf | 55 + .../fasta_hmmsearch_rank_fastas/meta.yml | 46 + .../tests/main.nf.test | 90 + .../tests/main.nf.test.snap | 108 + .../tests/tags.yml | 2 + .../fastq_align_bowtie2/tests/main.nf.test | 106 +- .../tests/main.nf.test.snap | 32 +- .../fastq_align_bwa/tests/main.nf.test | 12 +- .../nf-core/fastq_align_bwaaln/main.nf | 1 - .../fastq_align_dna/tests/main.nf.test | 60 +- .../nf-core/fastq_align_hisat2/main.nf | 1 - .../fastq_align_hisat2/tests/main.nf.test | 134 +- .../tests/main.nf.test.snap | 592 +++-- .../fastq_align_mapad/tests/main.nf.test | 6 +- .../fastq_align_mapad/tests/main.nf.test.snap | 4 +- .../fastq_align_star/tests/main.nf.test.snap | 102 +- .../fastq_create_umi_consensus_fgbio/main.nf | 1 - .../fastq_extract_kraken_krakentools/main.nf | 7 +- .../tests/main.nf.test.snap | 54 +- .../fastq_fastqc_umitools_fastp/main.nf | 10 +- .../tests/main.nf.test | 611 ++++- .../tests/main.nf.test.snap | 2160 ++++++++++++++-- .../tests/main.nf.test | 158 +- .../tests/main.nf.test.snap | 566 +++- .../nf-core/fastq_ngscheckmate/main.nf | 1 - .../main.nf | 320 +++ .../meta.yml | 132 + .../tests/main.function.nf.test | 118 + .../tests/main.function.nf.test.snap | 47 + .../tests/main.nf.test | 135 + .../tests/main.nf.test.snap | 112 + .../tests/nextflow.config | 0 .../tests/tags.yml | 0 .../tests/main.nf.test | 61 +- .../tests/main.nf.test.snap | 206 +- .../fastq_taxonomic_profile_metaphlan/main.nf | 1 - .../tests/main.nf.test.snap | 18 +- .../nf-core/fastq_trim_fastp_fastqc/meta.yml | 2 +- subworkflows/nf-core/initialise/meta.yml | 2 +- .../nf-core/mmseqs_contig_taxonomy/main.nf | 1 - .../mmseqs_contig_taxonomy/tests/main.nf.test | 2 +- .../nf-core/preprocess_rnaseq/main.nf | 13 +- .../preprocess_rnaseq/tests/main.nf.test | 135 - .../preprocess_rnaseq/tests/main.nf.test.snap | 112 - .../tests/main.nf.test | 140 +- .../tests/main.nf.test.snap | 558 +++- .../nf-core/utils_nextflow_pipeline/main.nf | 22 +- .../tests/nextflow.config | 2 +- .../nf-core/utils_nfcore_pipeline/main.nf | 45 +- .../nf-core/utils_nfschema_plugin/main.nf | 46 + .../nf-core/utils_nfschema_plugin/meta.yml | 35 + .../utils_nfschema_plugin/tests/main.nf.test | 117 + .../tests/nextflow.config | 8 + .../tests/nextflow_schema.json | 96 + .../nf-core/vcf_gather_bcftools/main.nf | 1 - .../nf-core/vcf_phase_shapeit5/main.nf | 1 - tests/config/nextflow.config | 2 + tests/config/nf-test.config | 4 +- tests/config/pytest_modules.yml | 1096 -------- tests/config/test_data.config | 20 +- .../nf-core/adapterremovalfixprefix/main.nf | 19 - .../adapterremovalfixprefix/nextflow.config | 9 - .../nf-core/adapterremovalfixprefix/test.yml | 7 - tests/modules/nf-core/affy/justrma/main.nf | 25 - .../nf-core/affy/justrma/nextflow.config | 12 - tests/modules/nf-core/affy/justrma/test.yml | 12 - .../nf-core/angsd/contamination/main.nf | 23 - .../angsd/contamination/nextflow.config | 9 - .../nf-core/angsd/contamination/test.yml | 11 - tests/modules/nf-core/angsd/docounts/main.nf | 17 - .../nf-core/angsd/docounts/nextflow.config | 9 - tests/modules/nf-core/angsd/docounts/test.yml | 11 - .../modules/nf-core/arcashla/extract/main.nf | 27 - .../nf-core/arcashla/extract/nextflow.config | 9 - .../modules/nf-core/arcashla/extract/test.yml | 34 - tests/modules/nf-core/ariba/getref/main.nf | 9 - tests/modules/nf-core/ariba/getref/test.yml | 7 - tests/modules/nf-core/arriba/download/main.nf | 10 - .../nf-core/arriba/download/nextflow.config | 5 - .../modules/nf-core/arriba/download/test.yml | 43 - tests/modules/nf-core/ashlar/test.yml | 10 +- tests/modules/nf-core/atlas/call/main.nf | 22 - .../nf-core/atlas/call/nextflow.config | 5 - tests/modules/nf-core/atlas/call/test.yml | 9 - tests/modules/nf-core/atlas/pmd/main.nf | 19 - .../modules/nf-core/atlas/pmd/nextflow.config | 5 - tests/modules/nf-core/atlas/pmd/test.yml | 14 - tests/modules/nf-core/atlas/recal/main.nf | 22 - .../nf-core/atlas/recal/nextflow.config | 5 - tests/modules/nf-core/atlas/recal/test.yml | 8 - .../modules/nf-core/atlas/splitmerge/main.nf | 15 - .../nf-core/atlas/splitmerge/nextflow.config | 5 - .../modules/nf-core/atlas/splitmerge/test.yml | 11 - .../nf-core/bam2fastx/bam2fastq/main.nf | 16 - .../bam2fastx/bam2fastq/nextflow.config | 5 - .../nf-core/bam2fastx/bam2fastq/test.yml | 9 - tests/modules/nf-core/bamtools/stats/main.nf | 15 - .../nf-core/bamtools/stats/nextflow.config | 5 - tests/modules/nf-core/bamtools/stats/test.yml | 9 - tests/modules/nf-core/bamutil/trimbam/main.nf | 15 - .../nf-core/bamutil/trimbam/nextflow.config | 5 - .../modules/nf-core/bamutil/trimbam/test.yml | 8 - tests/modules/nf-core/bandage/image/main.nf | 14 - .../nf-core/bandage/image/nextflow.config | 5 - tests/modules/nf-core/bandage/image/test.yml | 8 - tests/modules/nf-core/barrnap/main.nf | 15 - tests/modules/nf-core/barrnap/nextflow.config | 5 - tests/modules/nf-core/barrnap/test.yml | 8 - tests/modules/nf-core/bbmap/bbnorm/main.nf | 50 - .../nf-core/bbmap/bbnorm/nextflow.config | 5 - tests/modules/nf-core/bbmap/bbnorm/test.yml | 30 - tests/modules/nf-core/bbmap/clumpify/main.nf | 24 - .../nf-core/bbmap/clumpify/nextflow.config | 5 - tests/modules/nf-core/bbmap/clumpify/test.yml | 18 - tests/modules/nf-core/bbmap/index/main.nf | 12 - .../nf-core/bbmap/index/nextflow.config | 5 - tests/modules/nf-core/bbmap/index/test.yml | 9 - tests/modules/nf-core/bbmap/pileup/main.nf | 15 - .../nf-core/bbmap/pileup/nextflow.config | 5 - tests/modules/nf-core/bbmap/pileup/test.yml | 12 - .../modules/nf-core/bbmap/sendsketch/main.nf | 27 - .../nf-core/bbmap/sendsketch/nextflow.config | 5 - .../modules/nf-core/bbmap/sendsketch/test.yml | 19 - .../nf-core/bcftools/consensus/main.nf | 17 - .../bcftools/consensus/nextflow.config | 5 - .../nf-core/bcftools/consensus/test.yml | 8 - tests/modules/nf-core/bcftools/merge/main.nf | 71 - .../nf-core/bcftools/merge/nextflow.config | 17 - tests/modules/nf-core/bcftools/merge/test.yml | 63 - .../nf-core/bcftools/pluginsplit/main.nf | 48 - .../bcftools/pluginsplit/nextflow.config | 5 - .../nf-core/bcftools/pluginsplit/test.yml | 23 - tests/modules/nf-core/bcftools/roh/main.nf | 35 - .../nf-core/bcftools/roh/nextflow.config | 5 - tests/modules/nf-core/bcftools/roh/test.yml | 17 - tests/modules/nf-core/bcftools/split/main.nf | 16 - .../nf-core/bcftools/split/nextflow.config | 5 - tests/modules/nf-core/bcftools/split/test.yml | 8 - tests/modules/nf-core/beagle5/beagle/main.nf | 47 - .../nf-core/beagle5/beagle/nextflow.config | 5 - tests/modules/nf-core/beagle5/beagle/test.yml | 32 - .../modules/nf-core/bedtools/groupby/main.nf | 14 - .../nf-core/bedtools/groupby/nextflow.config | 10 - .../modules/nf-core/bedtools/groupby/test.yml | 9 - .../modules/nf-core/bedtools/jaccard/main.nf | 32 - .../nf-core/bedtools/jaccard/nextflow.config | 9 - .../modules/nf-core/bedtools/jaccard/test.yml | 19 - .../nf-core/bedtools/makewindows/main.nf | 25 - .../bedtools/makewindows/nextflow.config | 9 - .../nf-core/bedtools/makewindows/test.yml | 19 - .../nf-core/bedtools/maskfasta/main.nf | 14 - .../bedtools/maskfasta/nextflow.config | 5 - .../nf-core/bedtools/maskfasta/test.yml | 8 - .../nf-core/bedtools/multiinter/main.nf | 32 - .../bedtools/multiinter/nextflow.config | 5 - .../nf-core/bedtools/multiinter/test.yml | 19 - tests/modules/nf-core/bedtools/shift/main.nf | 13 - .../nf-core/bedtools/shift/nextflow.config | 10 - tests/modules/nf-core/bedtools/shift/test.yml | 8 - tests/modules/nf-core/bedtools/slop/main.nf | 15 - .../nf-core/bedtools/slop/nextflow.config | 10 - tests/modules/nf-core/bedtools/slop/test.yml | 8 - tests/modules/nf-core/bedtools/split/main.nf | 16 - .../nf-core/bedtools/split/nextflow.config | 5 - tests/modules/nf-core/bedtools/split/test.yml | 9 - .../modules/nf-core/bedtools/subtract/main.nf | 15 - .../nf-core/bedtools/subtract/nextflow.config | 5 - .../nf-core/bedtools/subtract/test.yml | 8 - tests/modules/nf-core/bioawk/main.nf | 15 - tests/modules/nf-core/bioawk/nextflow.config | 11 - tests/modules/nf-core/bioawk/test.yml | 7 - .../biobambam/bammarkduplicates2/main.nf | 15 - .../bammarkduplicates2/nextflow.config | 5 - .../biobambam/bammarkduplicates2/test.yml | 12 - .../nf-core/biobambam/bammerge/main.nf | 30 - .../biobambam/bammerge/nextflow.config | 13 - .../nf-core/biobambam/bammerge/test.yml | 25 - .../nf-core/biobambam/bamsormadup/main.nf | 25 - .../biobambam/bamsormadup/nextflow.config | 5 - .../nf-core/biobambam/bamsormadup/test.yml | 23 - tests/modules/nf-core/biscuit/epiread/main.nf | 48 - .../nf-core/biscuit/epiread/nextflow.config | 5 - .../modules/nf-core/biscuit/epiread/test.yml | 74 - tests/modules/nf-core/biscuit/index/main.nf | 12 - .../nf-core/biscuit/index/nextflow.config | 5 - tests/modules/nf-core/biscuit/index/test.yml | 22 - tests/modules/nf-core/biscuit/pileup/main.nf | 38 - .../nf-core/biscuit/pileup/nextflow.config | 5 - tests/modules/nf-core/biscuit/pileup/test.yml | 49 - tests/modules/nf-core/biscuit/qc/main.nf | 18 - .../nf-core/biscuit/qc/nextflow.config | 5 - tests/modules/nf-core/biscuit/qc/test.yml | 36 - tests/modules/nf-core/biscuit/vcf2bed/main.nf | 16 - .../nf-core/biscuit/vcf2bed/nextflow.config | 5 - .../modules/nf-core/biscuit/vcf2bed/test.yml | 8 - tests/modules/nf-core/blat/main.nf | 21 - tests/modules/nf-core/blat/nextflow.config | 9 - tests/modules/nf-core/blat/test.yml | 8 - tests/modules/nf-core/bowtie/align/main.nf | 33 - .../nf-core/bowtie/align/nextflow.config | 5 - tests/modules/nf-core/bowtie/align/test.yml | 42 - tests/modules/nf-core/bowtie/build | 1 - .../modules/nf-core/bowtie/build_test/main.nf | 11 - .../nf-core/bowtie/build_test/nextflow.config | 5 - .../nf-core/bowtie/build_test/test.yml | 18 - tests/modules/nf-core/bwameth/align/main.nf | 39 - .../nf-core/bwameth/align/nextflow.config | 5 - tests/modules/nf-core/bwameth/align/test.yml | 15 - tests/modules/nf-core/bwameth/index/main.nf | 11 - .../nf-core/bwameth/index/nextflow.config | 5 - tests/modules/nf-core/bwameth/index/test.yml | 18 - tests/modules/nf-core/calder2/main.nf | 25 - tests/modules/nf-core/calder2/nextflow.config | 4 - tests/modules/nf-core/calder2/test.yml | 31 - tests/modules/nf-core/cdhit/cdhitest/main.nf | 15 - .../nf-core/cdhit/cdhitest/nextflow.config | 5 - tests/modules/nf-core/cdhit/cdhitest/test.yml | 11 - .../nf-core/cellrangerarc/mkgtf/main.nf | 11 - .../cellrangerarc/mkgtf/nextflow.config | 27 - .../nf-core/cellrangerarc/mkgtf/test.yml | 8 - .../nf-core/circexplorer2/annotate/main.nf | 23 - .../circexplorer2/annotate/nextflow.config | 5 - .../nf-core/circexplorer2/annotate/test.yml | 16 - .../nf-core/circexplorer2/parse/main.nf | 16 - .../circexplorer2/parse/nextflow.config | 5 - .../nf-core/circexplorer2/parse/test.yml | 16 - tests/modules/nf-core/clonalframeml/main.nf | 16 - .../nf-core/clonalframeml/nextflow.config | 5 - tests/modules/nf-core/clonalframeml/test.yml | 15 - tests/modules/nf-core/cmseq/polymut/main.nf | 38 - .../nf-core/cmseq/polymut/nextflow.config | 5 - tests/modules/nf-core/cmseq/polymut/test.yml | 26 - tests/modules/nf-core/cnvkit/access/main.nf | 56 - .../nf-core/cnvkit/access/nextflow.config | 5 - tests/modules/nf-core/cnvkit/access/test.yml | 29 - tests/modules/nf-core/cnvkit/call/main.nf | 27 - .../nf-core/cnvkit/call/nextflow.config | 5 - tests/modules/nf-core/cnvkit/call/test.yml | 19 - .../nf-core/cnvkit/genemetrics/main.nf | 27 - .../cnvkit/genemetrics/nextflow.config | 5 - .../nf-core/cnvkit/genemetrics/test.yml | 21 - tests/modules/nf-core/cnvkit/target/main.nf | 33 - .../nf-core/cnvkit/target/nextflow.config | 5 - tests/modules/nf-core/cnvkit/target/test.yml | 19 - .../modules/nf-core/cnvpytor/callcnvs/main.nf | 15 - .../nf-core/cnvpytor/callcnvs/nextflow.config | 7 - .../nf-core/cnvpytor/callcnvs/test.yml | 17 - .../nf-core/cnvpytor/importreaddepth/main.nf | 32 - .../cnvpytor/importreaddepth/nextflow.config | 12 - .../nf-core/cnvpytor/importreaddepth/test.yml | 35 - tests/modules/nf-core/cnvpytor/view/main.nf | 42 - .../nf-core/cnvpytor/view/nextflow.config | 7 - tests/modules/nf-core/cnvpytor/view/test.yml | 27 - tests/modules/nf-core/concoct/concoct/main.nf | 42 - .../nf-core/concoct/concoct/nextflow.config | 5 - .../modules/nf-core/concoct/concoct/test.yml | 18 - .../concoct/concoctcoveragetable/main.nf | 35 - .../concoctcoveragetable/nextflow.config | 5 - .../concoct/concoctcoveragetable/test.yml | 8 - .../nf-core/concoct/cutupfasta/main.nf | 16 - .../concoct/cutupfasta/nextflow.config | 5 - .../nf-core/concoct/cutupfasta/test.yml | 10 - .../nf-core/concoct/extractfastabins/main.nf | 51 - .../concoct/extractfastabins/nextflow.config | 6 - .../nf-core/concoct/extractfastabins/test.yml | 8 - .../concoct/mergecutupclustering/main.nf | 44 - .../mergecutupclustering/nextflow.config | 5 - .../concoct/mergecutupclustering/test.yml | 8 - tests/modules/nf-core/cooler/digest/main.nf | 14 - .../nf-core/cooler/digest/nextflow.config | 5 - tests/modules/nf-core/cooler/digest/test.yml | 8 - tests/modules/nf-core/cooler/dump/main.nf | 15 - .../nf-core/cooler/dump/nextflow.config | 5 - tests/modules/nf-core/cooler/dump/test.yml | 8 - tests/modules/nf-core/cooler/makebins/main.nf | 15 - .../nf-core/cooler/makebins/nextflow.config | 5 - .../modules/nf-core/cooler/makebins/test.yml | 8 - tests/modules/nf-core/crumble/main.nf | 25 - tests/modules/nf-core/crumble/nextflow.config | 8 - tests/modules/nf-core/crumble/test.yml | 18 - .../nf-core/custom/matrixfilter/main.nf | 12 + .../custom/matrixfilter/nextflow.config | 4 + .../nf-core/deeptools/bamcoverage/main.nf | 41 - .../deeptools/bamcoverage/nextflow.config | 5 - .../nf-core/deeptools/bamcoverage/test.yml | 26 - .../nf-core/deeptools/computematrix/main.nf | 16 - .../deeptools/computematrix/nextflow.config | 9 - .../nf-core/deeptools/computematrix/test.yml | 9 - .../nf-core/deeptools/multibamsummary/main.nf | 51 - .../deeptools/multibamsummary/nextflow.config | 5 - .../deeptools/multibamsummary/test.yml | 35 - .../nf-core/deeptools/plotcorrelation/main.nf | 54 - .../deeptools/plotcorrelation/nextflow.config | 5 - .../deeptools/plotcorrelation/test.yml | 29 - .../nf-core/deeptools/plotfingerprint/main.nf | 17 - .../deeptools/plotfingerprint/nextflow.config | 5 - .../deeptools/plotfingerprint/test.yml | 13 - .../nf-core/deeptools/plotheatmap/main.nf | 14 - .../deeptools/plotheatmap/nextflow.config | 5 - .../nf-core/deeptools/plotheatmap/test.yml | 8 - .../modules/nf-core/deeptools/plotpca/main.nf | 19 - .../nf-core/deeptools/plotpca/nextflow.config | 5 - .../nf-core/deeptools/plotpca/test.yml | 8 - .../nf-core/deeptools/plotprofile/main.nf | 14 - .../deeptools/plotprofile/nextflow.config | 5 - .../nf-core/deeptools/plotprofile/test.yml | 9 - .../nf-core/dshbio/exportsegments/main.nf | 37 - .../dshbio/exportsegments/nextflow.config | 5 - .../nf-core/dshbio/exportsegments/test.yml | 35 - .../modules/nf-core/dshbio/filterbed/main.nf | 13 - .../nf-core/dshbio/filterbed/nextflow.config | 9 - .../modules/nf-core/dshbio/filterbed/test.yml | 8 - .../modules/nf-core/dshbio/filtergff3/main.nf | 13 - .../nf-core/dshbio/filtergff3/nextflow.config | 10 - .../nf-core/dshbio/filtergff3/test.yml | 8 - tests/modules/nf-core/dshbio/splitbed/main.nf | 13 - .../nf-core/dshbio/splitbed/nextflow.config | 10 - .../modules/nf-core/dshbio/splitbed/test.yml | 10 - .../modules/nf-core/dshbio/splitgff3/main.nf | 13 - .../nf-core/dshbio/splitgff3/nextflow.config | 10 - .../modules/nf-core/dshbio/splitgff3/test.yml | 10 - tests/modules/nf-core/ectyper/main.nf | 15 - tests/modules/nf-core/ectyper/nextflow.config | 5 - tests/modules/nf-core/ectyper/test.yml | 11 - tests/modules/nf-core/eido/convert/main.nf | 24 - .../nf-core/eido/convert/nextflow.config | 7 - tests/modules/nf-core/eido/convert/test.yml | 17 - tests/modules/nf-core/eido/validate/main.nf | 23 - .../nf-core/eido/validate/nextflow.config | 8 - tests/modules/nf-core/eido/validate/test.yml | 15 - tests/modules/nf-core/elprep/filter/main.nf | 18 - .../nf-core/elprep/filter/nextflow.config | 7 - tests/modules/nf-core/elprep/filter/test.yml | 13 - tests/modules/nf-core/elprep/split/main.nf | 15 - .../nf-core/elprep/split/nextflow.config | 9 - tests/modules/nf-core/elprep/split/test.yml | 10 - tests/modules/nf-core/emboss/cons/main.nf | 15 - .../nf-core/emboss/cons/nextflow.config | 5 - tests/modules/nf-core/emboss/cons/test.yml | 9 - tests/modules/nf-core/emboss/revseq/main.nf | 15 - .../nf-core/emboss/revseq/nextflow.config | 5 - tests/modules/nf-core/emboss/revseq/test.yml | 9 - tests/modules/nf-core/emmtyper/main.nf | 13 - .../modules/nf-core/emmtyper/nextflow.config | 5 - tests/modules/nf-core/emmtyper/test.yml | 7 - .../nf-core/ensemblvep/filtervep/main.nf | 58 - .../ensemblvep/filtervep/nextflow.config | 27 - .../nf-core/ensemblvep/filtervep/test.yml | 35 - .../nf-core/entrezdirect/esummary/main.nf | 50 - .../entrezdirect/esummary/nextflow.config | 3 - .../nf-core/entrezdirect/esummary/test.yml | 26 - tests/modules/nf-core/epang/place/main.nf | 21 - .../nf-core/epang/place/nextflow.config | 7 - tests/modules/nf-core/epang/place/test.yml | 13 - tests/modules/nf-core/estsfs/main.nf | 15 - tests/modules/nf-core/estsfs/nextflow.config | 5 - tests/modules/nf-core/estsfs/test.yml | 10 - .../expansionhunterdenovo/profile/main.nf | 44 - .../profile/nextflow.config | 5 - .../expansionhunterdenovo/profile/test.yml | 25 - tests/modules/nf-core/fastawindows/main.nf | 15 - .../nf-core/fastawindows/nextflow.config | 5 - tests/modules/nf-core/fastawindows/test.yml | 15 - tests/modules/nf-core/fasttree/main.nf | 12 - .../modules/nf-core/fasttree/nextflow.config | 5 - tests/modules/nf-core/fasttree/test.yml | 7 - tests/modules/nf-core/ffq/main.nf | 15 - tests/modules/nf-core/ffq/nextflow.config | 5 - tests/modules/nf-core/ffq/test.yml | 18 - .../fgbio/callduplexconsensusreads/main.nf | 15 - .../callduplexconsensusreads/nextflow.config | 9 - .../fgbio/callduplexconsensusreads/test.yml | 8 - .../fgbio/callmolecularconsensusreads/main.nf | 13 - .../nextflow.config | 15 - .../callmolecularconsensusreads/test.yml | 10 - .../fgbio/filterconsensusreads/main.nf | 17 - .../filterconsensusreads/nextflow.config | 8 - .../fgbio/filterconsensusreads/test.yml | 8 - .../nf-core/fgbio/groupreadsbyumi/main.nf | 15 - .../fgbio/groupreadsbyumi/nextflow.config | 5 - .../nf-core/fgbio/groupreadsbyumi/test.yml | 10 - tests/modules/nf-core/fgbio/sortbam/main.nf | 11 - .../nf-core/fgbio/sortbam/nextflow.config | 5 - tests/modules/nf-core/fgbio/sortbam/test.yml | 8 - .../modules/nf-core/fgbio/zipperbams/main.nf | 24 - .../nf-core/fgbio/zipperbams/nextflow.config | 11 - .../modules/nf-core/fgbio/zipperbams/test.yml | 8 - tests/modules/nf-core/filtlong/main.nf | 36 - .../modules/nf-core/filtlong/nextflow.config | 8 - tests/modules/nf-core/filtlong/test.yml | 26 - tests/modules/nf-core/gamma/gamma/main.nf | 29 - .../nf-core/gamma/gamma/nextflow.config | 7 - tests/modules/nf-core/gamma/gamma/test.yml | 29 - .../nf-core/gappa/examineassign/main.nf | 16 - .../gappa/examineassign/nextflow.config | 10 - .../nf-core/gappa/examineassign/test.yml | 18 - .../nf-core/gappa/examinegraft/main.nf | 15 - .../gappa/examinegraft/nextflow.config | 5 - .../nf-core/gappa/examinegraft/test.yml | 11 - .../nf-core/gappa/examineheattree/main.nf | 15 - .../gappa/examineheattree/nextflow.config | 10 - .../nf-core/gappa/examineheattree/test.yml | 18 - .../gatk/realignertargetcreator/main.nf | 28 - .../realignertargetcreator/nextflow.config | 5 - .../gatk/realignertargetcreator/test.yml | 8 - .../nf-core/gatk/unifiedgenotyper/main.nf | 28 - .../gatk/unifiedgenotyper/nextflow.config | 5 - .../nf-core/gatk/unifiedgenotyper/test.yml | 9 - .../gatk4/calibratedragstrmodel/main.nf | 82 - .../calibratedragstrmodel/nextflow.config | 5 - .../gatk4/calibratedragstrmodel/test.yml | 19 - .../nf-core/gatk4/collectreadcounts/main.nf | 54 - .../gatk4/collectreadcounts/nextflow.config | 17 - .../nf-core/gatk4/collectreadcounts/test.yml | 54 - .../nf-core/gatk4/collectsvevidence/main.nf | 56 - .../gatk4/collectsvevidence/nextflow.config | 9 - .../nf-core/gatk4/collectsvevidence/test.yml | 51 - .../nf-core/gatk4/composestrtablefile/main.nf | 16 - .../gatk4/composestrtablefile/nextflow.config | 5 - .../gatk4/composestrtablefile/test.yml | 8 - .../gatk4/condensedepthevidence/main.nf | 25 - .../condensedepthevidence/nextflow.config | 5 - .../gatk4/condensedepthevidence/test.yml | 11 - .../modules/nf-core/gatk4/fastqtosam/main.nf | 22 - .../nf-core/gatk4/fastqtosam/nextflow.config | 5 - .../modules/nf-core/gatk4/fastqtosam/test.yml | 16 - .../nf-core/gatk4/filterintervals/main.nf | 17 - .../gatk4/filterintervals/nextflow.config | 9 - .../nf-core/gatk4/filterintervals/test.yml | 16 - .../nf-core/gatk4/gatherbqsrreports/main.nf | 27 - .../gatk4/gatherbqsrreports/nextflow.config | 5 - .../nf-core/gatk4/gatherbqsrreports/test.yml | 19 - .../gatk4/gatherpileupsummaries/main.nf | 18 - .../gatherpileupsummaries/nextflow.config | 8 - .../gatk4/gatherpileupsummaries/test.yml | 9 - .../nf-core/gatk4/genotypegvcfs/main.nf | 182 -- .../gatk4/genotypegvcfs/nextflow.config | 9 - .../nf-core/gatk4/genotypegvcfs/test.yml | 119 - .../gatk4/learnreadorientationmodel/main.nf | 13 - .../learnreadorientationmodel/nextflow.config | 9 - .../gatk4/learnreadorientationmodel/test.yml | 8 - .../gatk4/leftalignandtrimvariants/main.nf | 35 - .../leftalignandtrimvariants/nextflow.config | 9 - .../gatk4/leftalignandtrimvariants/test.yml | 23 - .../nf-core/gatk4/mergebamalignment/main.nf | 35 - .../gatk4/mergebamalignment/nextflow.config | 5 - .../nf-core/gatk4/mergebamalignment/test.yml | 18 - .../nf-core/gatk4/preprocessintervals/main.nf | 27 - .../gatk4/preprocessintervals/nextflow.config | 9 - .../gatk4/preprocessintervals/test.yml | 16 - .../modules/nf-core/gatk4/printreads/main.nf | 49 - .../nf-core/gatk4/printreads/nextflow.config | 5 - .../modules/nf-core/gatk4/printreads/test.yml | 26 - tests/modules/nf-core/gatk4/revertsam/main.nf | 21 - .../nf-core/gatk4/revertsam/nextflow.config | 5 - .../modules/nf-core/gatk4/revertsam/test.yml | 18 - .../modules/nf-core/gatk4/samtofastq/main.nf | 29 - .../nf-core/gatk4/samtofastq/nextflow.config | 5 - .../modules/nf-core/gatk4/samtofastq/test.yml | 31 - .../modules/nf-core/gatk4/shiftfasta/main.nf | 23 - .../nf-core/gatk4/shiftfasta/nextflow.config | 8 - .../modules/nf-core/gatk4/shiftfasta/test.yml | 29 - tests/modules/nf-core/gatk4/splitcram/main.nf | 15 - .../nf-core/gatk4/splitcram/nextflow.config | 9 - .../modules/nf-core/gatk4/splitcram/test.yml | 11 - .../nf-core/gatk4/splitintervals/main.nf | 45 - .../gatk4/splitintervals/nextflow.config | 9 - .../nf-core/gatk4/splitintervals/test.yml | 33 - tests/modules/nf-core/genmap/index/main.nf | 15 - .../nf-core/genmap/index/nextflow.config | 5 - tests/modules/nf-core/genmap/index/test.yml | 49 - tests/modules/nf-core/geoquery/getgeo/main.nf | 23 - .../nf-core/geoquery/getgeo/nextflow.config | 10 - .../modules/nf-core/geoquery/getgeo/test.yml | 25 - .../nf-core/getorganelle/config/main.nf | 12 - .../getorganelle/config/nextflow.config | 5 - .../nf-core/getorganelle/config/test.yml | 221 -- .../nf-core/getorganelle/fromreads/main.nf | 23 - .../getorganelle/fromreads/nextflow.config | 5 - .../nf-core/getorganelle/fromreads/test.yml | 50 - tests/modules/nf-core/gfaffix/main.nf | 13 - tests/modules/nf-core/gfaffix/nextflow.config | 5 - tests/modules/nf-core/gfaffix/test.yml | 9 - tests/modules/nf-core/gfatools/gfa2fa/main.nf | 15 - .../nf-core/gfatools/gfa2fa/nextflow.config | 5 - .../modules/nf-core/gfatools/gfa2fa/test.yml | 9 - tests/modules/nf-core/gfatools/stat/main.nf | 15 - .../nf-core/gfatools/stat/nextflow.config | 5 - tests/modules/nf-core/gfatools/stat/test.yml | 9 - tests/modules/nf-core/gffcompare/main.nf | 40 - .../nf-core/gffcompare/nextflow.config | 5 - tests/modules/nf-core/gffcompare/test.yml | 37 - .../modules/nf-core/goat/taxonsearch/main.nf | 44 - .../nf-core/goat/taxonsearch/nextflow.config | 8 - .../modules/nf-core/goat/taxonsearch/test.yml | 26 - tests/modules/nf-core/goleft/indexcov/main.nf | 24 - .../nf-core/goleft/indexcov/nextflow.config | 5 - .../modules/nf-core/goleft/indexcov/test.yml | 10 - .../modules/nf-core/goleft/indexsplit/main.nf | 21 - .../nf-core/goleft/indexsplit/nextflow.config | 5 - .../nf-core/goleft/indexsplit/test.yml | 9 - tests/modules/nf-core/graphmap2/index/main.nf | 12 - .../nf-core/graphmap2/index/nextflow.config | 5 - .../modules/nf-core/graphmap2/index/test.yml | 8 - .../nf-core/graphtyper/vcfconcatenate/main.nf | 18 - .../graphtyper/vcfconcatenate/nextflow.config | 8 - .../graphtyper/vcfconcatenate/test.yml | 10 - tests/modules/nf-core/gridss/gridss/main.nf | 80 - .../nf-core/gridss/gridss/nextflow.config | 10 - tests/modules/nf-core/gridss/gridss/test.yml | 43 - tests/modules/nf-core/gstama/collapse/main.nf | 16 - .../nf-core/gstama/collapse/nextflow.config | 10 - .../modules/nf-core/gstama/collapse/test.yml | 24 - tests/modules/nf-core/gstama/merge/main.nf | 19 - .../nf-core/gstama/merge/nextflow.config | 9 - tests/modules/nf-core/gstama/merge/test.yml | 14 - .../nf-core/gstama/polyacleanup/main.nf | 15 - .../gstama/polyacleanup/nextflow.config | 6 - .../nf-core/gstama/polyacleanup/test.yml | 14 - tests/modules/nf-core/gubbins/main.nf | 11 - tests/modules/nf-core/gubbins/nextflow.config | 5 - tests/modules/nf-core/gubbins/test.yml | 23 - tests/modules/nf-core/gunc/downloaddb/main.nf | 12 - .../nf-core/gunc/downloaddb/nextflow.config | 5 - .../modules/nf-core/gunc/downloaddb/test.yml | 8 - .../nf-core/gvcftools/extractvariants/main.nf | 25 - .../gvcftools/extractvariants/nextflow.config | 5 - .../gvcftools/extractvariants/test.yml | 15 - tests/modules/nf-core/hapibd/main.nf | 28 - tests/modules/nf-core/hapibd/nextflow.config | 5 - tests/modules/nf-core/hapibd/test.yml | 21 - tests/modules/nf-core/haplocheck/main.nf | 15 - .../nf-core/haplocheck/nextflow.config | 5 - tests/modules/nf-core/haplocheck/test.yml | 20 - .../nf-core/haplogrep2/classify/main.nf | 16 - .../haplogrep2/classify/nextflow.config | 5 - .../nf-core/haplogrep2/classify/test.yml | 17 - tests/modules/nf-core/happy/happy/main.nf | 132 - .../nf-core/happy/happy/nextflow.config | 5 - tests/modules/nf-core/happy/happy/test.yml | 83 - tests/modules/nf-core/happy/sompy/main.nf | 67 - .../nf-core/happy/sompy/nextflow.config | 8 - tests/modules/nf-core/happy/sompy/test.yml | 25 - tests/modules/nf-core/hicap/main.nf | 17 - tests/modules/nf-core/hicap/nextflow.config | 5 - tests/modules/nf-core/hicap/test.yml | 10 - tests/modules/nf-core/hmmer/hmmbuild/main.nf | 15 - .../nf-core/hmmer/hmmbuild/nextflow.config | 5 - tests/modules/nf-core/hmmer/hmmbuild/test.yml | 12 - tests/modules/nf-core/hmmer/hmmfetch/main.nf | 40 - .../nf-core/hmmer/hmmfetch/nextflow.config | 5 - tests/modules/nf-core/hmmer/hmmfetch/test.yml | 29 - .../nf-core/homer/annotatepeaks/main.nf | 14 - .../homer/annotatepeaks/nextflow.config | 6 - .../nf-core/homer/annotatepeaks/test.yml | 8 - tests/modules/nf-core/hpsuissero/main.nf | 15 - .../nf-core/hpsuissero/nextflow.config | 5 - tests/modules/nf-core/hpsuissero/test.yml | 9 - tests/modules/nf-core/hypo/main.nf | 24 - tests/modules/nf-core/hypo/nextflow.config | 5 - tests/modules/nf-core/hypo/test.yml | 9 - .../nf-core/ichorcna/createpon/main.nf | 30 - .../ichorcna/createpon/nextflow.config | 5 - .../nf-core/ichorcna/createpon/test.yml | 21 - tests/modules/nf-core/ichorcna/run/main.nf | 40 - .../nf-core/ichorcna/run/nextflow.config | 5 - tests/modules/nf-core/ichorcna/run/test.yml | 25 - .../nf-core/icountmini/segment/main.nf | 18 - .../icountmini/segment/nextflow.config | 5 - .../nf-core/icountmini/segment/test.yml | 10 - tests/modules/nf-core/idr/main.nf | 35 - tests/modules/nf-core/idr/nextflow.config | 5 - tests/modules/nf-core/idr/test.yml | 35 - tests/modules/nf-core/igv/js/main.nf | 16 - tests/modules/nf-core/igv/js/nextflow.config | 14 - tests/modules/nf-core/igv/js/test.yml | 13 - tests/modules/nf-core/ismapper/main.nf | 18 - .../modules/nf-core/ismapper/nextflow.config | 5 - tests/modules/nf-core/ismapper/test.yml | 27 - tests/modules/nf-core/ivar/consensus/main.nf | 29 - .../nf-core/ivar/consensus/nextflow.config | 9 - tests/modules/nf-core/ivar/consensus/test.yml | 22 - tests/modules/nf-core/ivar/trim/main.nf | 15 - .../modules/nf-core/ivar/trim/nextflow.config | 5 - tests/modules/nf-core/ivar/trim/test.yml | 8 - tests/modules/nf-core/ivar/variants/main.nf | 47 - .../nf-core/ivar/variants/nextflow.config | 5 - tests/modules/nf-core/ivar/variants/test.yml | 30 - tests/modules/nf-core/kleborate/main.nf | 18 - .../modules/nf-core/kleborate/nextflow.config | 5 - tests/modules/nf-core/kleborate/test.yml | 7 - .../nf-core/krakentools/kreport2krona/main.nf | 20 - .../krakentools/kreport2krona/nextflow.config | 5 - .../krakentools/kreport2krona/test.yml | 8 - .../nf-core/krona/ktupdatetaxonomy/main.nf | 9 - .../krona/ktupdatetaxonomy/nextflow.config | 5 - .../nf-core/krona/ktupdatetaxonomy/test.yml | 7 - tests/modules/nf-core/legsta/main.nf | 15 - tests/modules/nf-core/legsta/nextflow.config | 5 - tests/modules/nf-core/legsta/test.yml | 9 - tests/modules/nf-core/lissero/main.nf | 13 - tests/modules/nf-core/lissero/nextflow.config | 5 - tests/modules/nf-core/lissero/test.yml | 7 - tests/modules/nf-core/lofreq/call/main.nf | 25 - .../nf-core/lofreq/call/nextflow.config | 5 - tests/modules/nf-core/lofreq/call/test.yml | 23 - .../nf-core/lofreq/callparallel/main.nf | 33 - .../lofreq/callparallel/nextflow.config | 5 - .../nf-core/lofreq/callparallel/test.yml | 23 - tests/modules/nf-core/lofreq/filter/main.nf | 13 - .../nf-core/lofreq/filter/nextflow.config | 5 - tests/modules/nf-core/lofreq/filter/test.yml | 8 - .../modules/nf-core/lofreq/indelqual/main.nf | 16 - .../nf-core/lofreq/indelqual/nextflow.config | 10 - .../modules/nf-core/lofreq/indelqual/test.yml | 8 - tests/modules/nf-core/lofreq/somatic/main.nf | 28 - .../nf-core/lofreq/somatic/nextflow.config | 5 - tests/modules/nf-core/lofreq/somatic/test.yml | 37 - tests/modules/nf-core/macrel/contigs/main.nf | 15 - .../nf-core/macrel/contigs/nextflow.config | 5 - tests/modules/nf-core/macrel/contigs/test.yml | 13 - tests/modules/nf-core/macs2/callpeak/main.nf | 31 - .../nf-core/macs2/callpeak/nextflow.config | 17 - tests/modules/nf-core/macs2/callpeak/test.yml | 38 - tests/modules/nf-core/mapdamage2/main.nf | 15 - .../nf-core/mapdamage2/nextflow.config | 5 - tests/modules/nf-core/mapdamage2/test.yml | 25 - tests/modules/nf-core/mash/dist/main.nf | 16 - .../modules/nf-core/mash/dist/nextflow.config | 5 - tests/modules/nf-core/mash/dist/test.yml | 10 - tests/modules/nf-core/mashtree/main.nf | 16 - .../modules/nf-core/mashtree/nextflow.config | 5 - tests/modules/nf-core/mashtree/test.yml | 8 - tests/modules/nf-core/maxbin2/main.nf | 17 - tests/modules/nf-core/maxbin2/nextflow.config | 5 - tests/modules/nf-core/maxbin2/test.yml | 15 - tests/modules/nf-core/mcroni/main.nf | 13 - tests/modules/nf-core/mcroni/nextflow.config | 5 - tests/modules/nf-core/mcroni/test.yml | 7 - tests/modules/nf-core/megahit/main.nf | 28 - tests/modules/nf-core/megahit/nextflow.config | 5 - tests/modules/nf-core/megahit/test.yml | 53 - tests/modules/nf-core/megan/rma2info/main.nf | 16 - .../nf-core/megan/rma2info/nextflow.config | 9 - tests/modules/nf-core/megan/rma2info/test.yml | 11 - tests/modules/nf-core/meningotype/main.nf | 13 - .../nf-core/meningotype/nextflow.config | 5 - tests/modules/nf-core/meningotype/test.yml | 7 - .../nf-core/merquryfk/merquryfk/main.nf | 52 - .../merquryfk/merquryfk/nextflow.config | 16 - .../nf-core/merquryfk/merquryfk/test.yml | 47 - .../jgisummarizebamcontigdepths/main.nf | 14 - .../nextflow.config | 5 - .../jgisummarizebamcontigdepths/test.yml | 8 - .../modules/nf-core/metaphlan/makedb/main.nf | 10 - .../nf-core/metaphlan/makedb/nextflow.config | 5 - .../modules/nf-core/metaphlan/makedb/test.yml | 18 - .../metaphlan/mergemetaphlantables/main.nf | 22 - .../mergemetaphlantables/nextflow.config | 9 - .../metaphlan/mergemetaphlantables/test.yml | 7 - .../nf-core/metaphlan/metaphlan/main.nf | 59 - .../metaphlan/metaphlan/nextflow.config | 13 - .../nf-core/metaphlan/metaphlan/test.yml | 88 - .../nf-core/methyldackel/extract/main.nf | 31 - .../methyldackel/extract/nextflow.config | 9 - .../nf-core/methyldackel/extract/test.yml | 8 - .../nf-core/methyldackel/mbias/main.nf | 15 - .../methyldackel/mbias/nextflow.config | 5 - .../nf-core/methyldackel/mbias/test.yml | 8 - tests/modules/nf-core/minia/main.nf | 14 - tests/modules/nf-core/minia/nextflow.config | 5 - tests/modules/nf-core/minia/test.yml | 8 - tests/modules/nf-core/miniprot/align/main.nf | 28 - .../nf-core/miniprot/align/nextflow.config | 14 - tests/modules/nf-core/miniprot/align/test.yml | 25 - tests/modules/nf-core/miniprot/index/main.nf | 10 - .../nf-core/miniprot/index/nextflow.config | 5 - tests/modules/nf-core/miniprot/index/test.yml | 10 - tests/modules/nf-core/miranda/main.nf | 19 - tests/modules/nf-core/miranda/nextflow.config | 12 - tests/modules/nf-core/miranda/test.yml | 14 - .../modules/nf-core/mmseqs/databases/main.nf | 12 - .../nf-core/mmseqs/databases/nextflow.config | 5 - .../modules/nf-core/mmseqs/databases/test.yml | 18 - tests/modules/nf-core/mobsuite/recon/main.nf | 13 - .../nf-core/mobsuite/recon/nextflow.config | 5 - tests/modules/nf-core/mobsuite/recon/test.yml | 12 - tests/modules/nf-core/motus/profile/main.nf | 19 - .../nf-core/motus/profile/nextflow.config | 5 - tests/modules/nf-core/motus/profile/test.yml | 74 - tests/modules/nf-core/msisensor2/scan/main.nf | 15 - .../nf-core/msisensor2/scan/nextflow.config | 5 - .../modules/nf-core/msisensor2/scan/test.yml | 8 - .../modules/nf-core/msisensorpro/scan/main.nf | 15 - .../nf-core/msisensorpro/scan/nextflow.config | 5 - .../nf-core/msisensorpro/scan/test.yml | 10 - tests/modules/nf-core/mtnucratio/main.nf | 14 - .../nf-core/mtnucratio/nextflow.config | 5 - tests/modules/nf-core/mtnucratio/test.yml | 9 - .../modules/nf-core/multivcfanalyzer/main.nf | 40 - .../nf-core/multivcfanalyzer/nextflow.config | 5 - .../modules/nf-core/multivcfanalyzer/test.yml | 31 - tests/modules/nf-core/mykrobe/predict/main.nf | 15 - .../nf-core/mykrobe/predict/nextflow.config | 5 - .../modules/nf-core/mykrobe/predict/test.yml | 10 - tests/modules/nf-core/nanocomp/main.nf | 16 - .../modules/nf-core/nanocomp/nextflow.config | 5 - tests/modules/nf-core/nanocomp/test.yml | 94 - tests/modules/nf-core/nanolyse/main.nf | 16 - .../modules/nf-core/nanolyse/nextflow.config | 9 - tests/modules/nf-core/nanolyse/test.yml | 6 - .../nf-core/ncbigenomedownload/main.nf | 18 - .../ncbigenomedownload/nextflow.config | 8 - .../nf-core/ncbigenomedownload/test.yml | 11 - .../nf-core/nextclade/datasetget/main.nf | 15 - .../nextclade/datasetget/nextflow.config | 5 - .../nf-core/nextclade/datasetget/test.yml | 22 - tests/modules/nf-core/nextclade/run/main.nf | 23 - tests/modules/nf-core/nextclade/run/test.yml | 62 - tests/modules/nf-core/nextgenmap/main.nf | 36 - .../nf-core/nextgenmap/nextflow.config | 5 - tests/modules/nf-core/nextgenmap/test.yml | 15 - tests/modules/nf-core/ngmaster/main.nf | 13 - .../modules/nf-core/ngmaster/nextflow.config | 5 - tests/modules/nf-core/ngmaster/test.yml | 7 - tests/modules/nf-core/ngmerge/main.nf | 15 - tests/modules/nf-core/ngmerge/nextflow.config | 5 - tests/modules/nf-core/ngmerge/test.yml | 9 - .../modules/nf-core/paftools/sam2paf/main.nf | 16 - .../nf-core/paftools/sam2paf/nextflow.config | 5 - .../modules/nf-core/paftools/sam2paf/test.yml | 8 - tests/modules/nf-core/pairix/main.nf | 13 - tests/modules/nf-core/pairix/nextflow.config | 5 - tests/modules/nf-core/pairix/test.yml | 9 - tests/modules/nf-core/pairtools/dedup/main.nf | 13 - .../nf-core/pairtools/dedup/nextflow.config | 9 - .../modules/nf-core/pairtools/dedup/test.yml | 10 - tests/modules/nf-core/pairtools/flip/main.nf | 14 - .../nf-core/pairtools/flip/nextflow.config | 5 - tests/modules/nf-core/pairtools/flip/test.yml | 9 - tests/modules/nf-core/pairtools/merge/main.nf | 13 - .../nf-core/pairtools/merge/nextflow.config | 5 - .../modules/nf-core/pairtools/merge/test.yml | 8 - tests/modules/nf-core/pairtools/parse/main.nf | 14 - .../nf-core/pairtools/parse/nextflow.config | 9 - .../modules/nf-core/pairtools/parse/test.yml | 17 - .../nf-core/pairtools/restrict/main.nf | 14 - .../pairtools/restrict/nextflow.config | 9 - .../nf-core/pairtools/restrict/test.yml | 9 - .../modules/nf-core/pairtools/select/main.nf | 13 - .../nf-core/pairtools/select/nextflow.config | 9 - .../modules/nf-core/pairtools/select/test.yml | 12 - tests/modules/nf-core/pairtools/sort/main.nf | 13 - .../nf-core/pairtools/sort/nextflow.config | 9 - tests/modules/nf-core/pairtools/sort/test.yml | 9 - tests/modules/nf-core/pairtools/stats/main.nf | 13 - .../nf-core/pairtools/stats/nextflow.config | 5 - .../modules/nf-core/pairtools/stats/test.yml | 8 - tests/modules/nf-core/panaroo/run/main.nf | 19 - .../nf-core/panaroo/run/nextflow.config | 8 - tests/modules/nf-core/panaroo/run/test.yml | 43 - .../nf-core/paragraph/vcf2paragraph/main.nf | 20 - .../paragraph/vcf2paragraph/nextflow.config | 5 - .../nf-core/paragraph/vcf2paragraph/test.yml | 9 - tests/modules/nf-core/pasty/main.nf | 13 - tests/modules/nf-core/pasty/nextflow.config | 5 - tests/modules/nf-core/pasty/test.yml | 11 - tests/modules/nf-core/pbbam/pbmerge/main.nf | 18 - .../nf-core/pbbam/pbmerge/nextflow.config | 9 - tests/modules/nf-core/pbbam/pbmerge/test.yml | 10 - tests/modules/nf-core/pbptyper/main.nf | 13 - .../modules/nf-core/pbptyper/nextflow.config | 5 - tests/modules/nf-core/pbptyper/test.yml | 13 - tests/modules/nf-core/peddy/main.nf | 17 - tests/modules/nf-core/peddy/nextflow.config | 5 - tests/modules/nf-core/peddy/test.yml | 24 - tests/modules/nf-core/peka/main.nf | 22 - tests/modules/nf-core/peka/nextflow.config | 6 - tests/modules/nf-core/peka/test.yml | 9 - .../nf-core/phantompeakqualtools/main.nf | 25 - .../phantompeakqualtools/nextflow.config | 5 - .../nf-core/phantompeakqualtools/test.yml | 23 - .../nf-core/picard/bedtointervallist/main.nf | 18 - .../picard/bedtointervallist/nextflow.config | 5 - .../nf-core/picard/bedtointervallist/test.yml | 8 - tests/modules/nf-core/picard/cleansam/main.nf | 15 - .../nf-core/picard/cleansam/nextflow.config | 8 - .../modules/nf-core/picard/cleansam/test.yml | 18 - .../picard/collectinsertsizemetrics/main.nf | 15 - .../collectinsertsizemetrics/nextflow.config | 5 - .../picard/collectinsertsizemetrics/test.yml | 9 - .../picard/collectmultiplemetrics/main.nf | 48 - .../collectmultiplemetrics/nextflow.config | 5 - .../picard/collectmultiplemetrics/test.yml | 93 - .../nf-core/picard/collectwgsmetrics/main.nf | 41 - .../picard/collectwgsmetrics/nextflow.config | 5 - .../nf-core/picard/collectwgsmetrics/test.yml | 15 - .../picard/createsequencedictionary/main.nf | 15 - .../createsequencedictionary/nextflow.config | 5 - .../picard/createsequencedictionary/test.yml | 9 - .../modules/nf-core/picard/fastqtosam/main.nf | 43 - .../nf-core/picard/fastqtosam/nextflow.config | 7 - .../nf-core/picard/fastqtosam/test.yml | 26 - .../nf-core/picard/fixmateinformation/main.nf | 15 - .../picard/fixmateinformation/nextflow.config | 9 - .../picard/fixmateinformation/test.yml | 18 - .../nf-core/picard/liftovervcf/main.nf | 40 - .../picard/liftovervcf/nextflow.config | 5 - .../nf-core/picard/liftovervcf/test.yml | 21 - .../nf-core/picard/mergesamfiles/main.nf | 14 - .../picard/mergesamfiles/nextflow.config | 5 - .../nf-core/picard/mergesamfiles/test.yml | 7 - .../nf-core/picard/renamesampleinvcf/main.nf | 14 - .../picard/renamesampleinvcf/nextflow.config | 5 - .../nf-core/picard/renamesampleinvcf/test.yml | 17 - .../picard/scatterintervalsbyns/main.nf | 25 - .../scatterintervalsbyns/nextflow.config | 5 - .../picard/scatterintervalsbyns/test.yml | 10 - tests/modules/nf-core/picard/sortsam/main.nf | 14 - .../nf-core/picard/sortsam/nextflow.config | 9 - tests/modules/nf-core/picard/sortsam/test.yml | 9 - tests/modules/nf-core/picard/sortvcf/main.nf | 22 - .../nf-core/picard/sortvcf/nextflow.config | 5 - tests/modules/nf-core/picard/sortvcf/test.yml | 7 - tests/modules/nf-core/pilon/main.nf | 20 - tests/modules/nf-core/pilon/nextflow.config | 5 - tests/modules/nf-core/pilon/test.yml | 8 - tests/modules/nf-core/pindel/pindel/main.nf | 16 - .../nf-core/pindel/pindel/nextflow.config | 9 - tests/modules/nf-core/pindel/pindel/test.yml | 17 - tests/modules/nf-core/pints/caller/main.nf | 31 - .../nf-core/pints/caller/nextflow.config | 9 - tests/modules/nf-core/pints/caller/test.yml | 28 - tests/modules/nf-core/pirate/main.nf | 19 - tests/modules/nf-core/pirate/nextflow.config | 5 - tests/modules/nf-core/pirate/test.yml | 98 - tests/modules/nf-core/plasmidfinder/main.nf | 13 - .../nf-core/plasmidfinder/nextflow.config | 5 - tests/modules/nf-core/plasmidfinder/test.yml | 13 - tests/modules/nf-core/plasmidid/main.nf | 16 - .../modules/nf-core/plasmidid/nextflow.config | 9 - tests/modules/nf-core/plasmidid/test.yml | 54 - tests/modules/nf-core/platypus/main.nf | 48 - .../modules/nf-core/platypus/nextflow.config | 5 - tests/modules/nf-core/platypus/test.yml | 35 - tests/modules/nf-core/plink/bcf/main.nf | 14 - .../modules/nf-core/plink/bcf/nextflow.config | 6 - tests/modules/nf-core/plink/bcf/test.yml | 13 - tests/modules/nf-core/plink/vcf/main.nf | 13 - .../modules/nf-core/plink/vcf/nextflow.config | 9 - tests/modules/nf-core/plink/vcf/test.yml | 12 - tests/modules/nf-core/pmdtools/filter/main.nf | 15 - .../nf-core/pmdtools/filter/nextflow.config | 5 - .../modules/nf-core/pmdtools/filter/test.yml | 8 - tests/modules/nf-core/porechop/abi/main.nf | 14 - .../nf-core/porechop/abi/nextflow.config | 10 - tests/modules/nf-core/porechop/abi/test.yml | 8 - tests/modules/nf-core/preseq/ccurve/main.nf | 25 - .../nf-core/preseq/ccurve/nextflow.config | 5 - tests/modules/nf-core/preseq/ccurve/test.yml | 19 - tests/modules/nf-core/prinseqplusplus/main.nf | 24 - .../nf-core/prinseqplusplus/nextflow.config | 9 - .../modules/nf-core/prinseqplusplus/test.yml | 27 - tests/modules/nf-core/pureclip/main.nf | 45 - .../modules/nf-core/pureclip/nextflow.config | 5 - tests/modules/nf-core/pureclip/test.yml | 17 - .../nf-core/purecn/intervalfile/main.nf | 17 - .../purecn/intervalfile/nextflow.config | 5 - .../nf-core/purecn/intervalfile/test.yml | 10 - tests/modules/nf-core/purecn/normaldb/main.nf | 34 - .../nf-core/purecn/normaldb/nextflow.config | 5 - .../modules/nf-core/purecn/normaldb/test.yml | 23 - .../modules/nf-core/purgedups/pbcstat/main.nf | 15 - .../nf-core/purgedups/pbcstat/nextflow.config | 5 - .../nf-core/purgedups/pbcstat/test.yml | 10 - .../modules/nf-core/purgedups/splitfa/main.nf | 15 - .../nf-core/purgedups/splitfa/nextflow.config | 5 - .../nf-core/purgedups/splitfa/test.yml | 8 - .../modules/nf-core/pydamage/analyze/main.nf | 14 - .../nf-core/pydamage/analyze/nextflow.config | 5 - .../modules/nf-core/pydamage/analyze/test.yml | 8 - tests/modules/nf-core/qcat/main.nf | 14 - tests/modules/nf-core/qcat/nextflow.config | 5 - tests/modules/nf-core/qcat/test.yml | 8 - tests/modules/nf-core/quast/main.nf | 40 - tests/modules/nf-core/quast/nextflow.config | 5 - tests/modules/nf-core/quast/test.yml | 233 -- tests/modules/nf-core/rapidnj/main.nf | 12 - tests/modules/nf-core/rapidnj/nextflow.config | 5 - tests/modules/nf-core/rapidnj/test.yml | 9 - tests/modules/nf-core/raven/main.nf | 15 - tests/modules/nf-core/raven/nextflow.config | 5 - tests/modules/nf-core/raven/test.yml | 9 - .../nf-core/rtgtools/pedfilter/main.nf | 35 - .../rtgtools/pedfilter/nextflow.config | 8 - .../nf-core/rtgtools/pedfilter/test.yml | 29 - tests/modules/nf-core/sam2lca/analyze/main.nf | 16 - .../nf-core/sam2lca/analyze/nextflow.config | 8 - .../modules/nf-core/sam2lca/analyze/test.yml | 10 - .../modules/nf-core/sambamba/flagstat/main.nf | 15 - .../nf-core/sambamba/flagstat/nextflow.config | 5 - .../nf-core/sambamba/flagstat/test.yml | 9 - .../modules/nf-core/sambamba/markdup/main.nf | 15 - .../nf-core/sambamba/markdup/nextflow.config | 5 - .../modules/nf-core/sambamba/markdup/test.yml | 9 - .../nf-core/samtools/collatefastq/main.nf | 61 - .../samtools/collatefastq/nextflow.config | 5 - .../nf-core/samtools/collatefastq/test.yml | 57 - tests/modules/nf-core/samtools/depth/main.nf | 24 - .../nf-core/samtools/depth/nextflow.config | 5 - tests/modules/nf-core/samtools/depth/test.yml | 19 - tests/modules/nf-core/samtools/dict/main.nf | 13 - .../nf-core/samtools/dict/nextflow.config | 5 - tests/modules/nf-core/samtools/dict/test.yml | 12 - tests/modules/nf-core/samtools/fasta/main.nf | 25 - .../nf-core/samtools/fasta/nextflow.config | 5 - tests/modules/nf-core/samtools/fasta/test.yml | 27 - tests/modules/nf-core/samtools/getrg/main.nf | 15 - .../nf-core/samtools/getrg/nextflow.config | 5 - tests/modules/nf-core/samtools/getrg/test.yml | 9 - tests/modules/nf-core/scimap/mcmicro/main.nf | 15 - .../nf-core/scimap/mcmicro/nextflow.config | 5 - tests/modules/nf-core/scimap/mcmicro/test.yml | 9 - tests/modules/nf-core/scoary/main.nf | 15 - tests/modules/nf-core/scoary/nextflow.config | 5 - tests/modules/nf-core/scoary/test.yml | 9 - .../scramble/clusteridentifier/main.nf | 33 - .../clusteridentifier/nextflow.config | 5 - .../scramble/clusteridentifier/test.yml | 17 - tests/modules/nf-core/seacr/callpeak/main.nf | 23 - .../nf-core/seacr/callpeak/nextflow.config | 9 - tests/modules/nf-core/seacr/callpeak/test.yml | 17 - tests/modules/nf-core/segemehl/index/main.nf | 12 - .../nf-core/segemehl/index/nextflow.config | 5 - tests/modules/nf-core/segemehl/index/test.yml | 16 - .../sentieon/applyvarcal/nextflow.config | 10 + .../nf-core/sentieon/bwaindex/nextflow.config | 10 + tests/modules/nf-core/sentieon/bwamem/main.nf | 55 - .../nf-core/sentieon/bwamem/nextflow.config | 11 - .../modules/nf-core/sentieon/bwamem/test.yml | 18 - .../sentieon/datametrics/nextflow.config | 10 + tests/modules/nf-core/sentieon/dedup/main.nf | 34 - .../nf-core/sentieon/dedup/nextflow.config | 14 - tests/modules/nf-core/sentieon/dedup/test.yml | 24 - .../sentieon/dnamodelapply/nextflow.config | 10 + .../nf-core/sentieon/dnascope/nextflow.config | 10 + .../nf-core/sentieon/gvcftyper/main.nf | 86 - .../sentieon/gvcftyper/nextflow.config | 11 - .../nf-core/sentieon/gvcftyper/test.yml | 62 - .../nf-core/sentieon/haplotyper/main.nf | 77 - .../sentieon/haplotyper/nextflow.config | 15 - .../nf-core/sentieon/haplotyper/test.yml | 59 - .../nf-core/sentieon/license_message.py | 6 +- .../nf-core/sentieon/readwriter/main.nf | 31 - .../sentieon/readwriter/nextflow.config | 10 - .../nf-core/sentieon/readwriter/test.yml | 39 - .../nf-core/sentieon/tnfilter/nextflow.config | 10 + .../sentieon/tnhaplotyper2/nextflow.config | 10 + .../nf-core/sentieon/tnscope/nextflow.config | 10 + .../nf-core/sentieon/varcal/nextflow.config | 10 + .../sentieon/wgsmetrics/nextflow.config | 10 + tests/modules/nf-core/seqsero2/main.nf | 13 - .../modules/nf-core/seqsero2/nextflow.config | 9 - tests/modules/nf-core/seqsero2/test.yml | 11 - .../nf-core/sequenzautils/bam2seqz/main.nf | 20 - .../sequenzautils/bam2seqz/nextflow.config | 5 - .../nf-core/sequenzautils/bam2seqz/test.yml | 8 - .../nf-core/sequenzautils/gcwiggle/main.nf | 13 - .../sequenzautils/gcwiggle/nextflow.config | 9 - .../nf-core/sequenzautils/gcwiggle/test.yml | 7 - tests/modules/nf-core/seroba/run/main.nf | 15 - .../nf-core/seroba/run/nextflow.config | 5 - tests/modules/nf-core/seroba/run/test.yml | 8 - tests/modules/nf-core/shasta/main.nf | 15 - tests/modules/nf-core/shasta/nextflow.config | 7 - tests/modules/nf-core/shasta/test.yml | 35 - tests/modules/nf-core/shasum/main.nf | 15 - tests/modules/nf-core/shasum/nextflow.config | 5 - tests/modules/nf-core/shasum/test.yml | 8 - tests/modules/nf-core/shigatyper/main.nf | 36 - .../nf-core/shigatyper/nextflow.config | 5 - tests/modules/nf-core/shigatyper/test.yml | 29 - tests/modules/nf-core/sickle/main.nf | 30 - tests/modules/nf-core/sickle/nextflow.config | 8 - tests/modules/nf-core/sickle/test.yml | 25 - tests/modules/nf-core/sistr/main.nf | 15 - tests/modules/nf-core/sistr/nextflow.config | 5 - tests/modules/nf-core/sistr/test.yml | 15 - tests/modules/nf-core/slimfastq/main.nf | 46 - .../modules/nf-core/slimfastq/nextflow.config | 5 - tests/modules/nf-core/slimfastq/test.yml | 41 - .../nf-core/smncopynumbercaller/main.nf | 17 - .../smncopynumbercaller/nextflow.config | 10 - .../nf-core/smncopynumbercaller/test.yml | 9 - .../modules/nf-core/snapaligner/index/main.nf | 16 - .../nf-core/snapaligner/index/nextflow.config | 5 - .../nf-core/snapaligner/index/test.yml | 13 - tests/modules/nf-core/sniffles/main.nf | 19 - .../modules/nf-core/sniffles/nextflow.config | 5 - tests/modules/nf-core/sniffles/test.yml | 8 - tests/modules/nf-core/snippy/run/main.nf | 16 - .../nf-core/snippy/run/nextflow.config | 5 - tests/modules/nf-core/snippy/run/test.yml | 39 - tests/modules/nf-core/snpdists/main.nf | 13 - .../modules/nf-core/snpdists/nextflow.config | 5 - tests/modules/nf-core/snpdists/test.yml | 7 - tests/modules/nf-core/snpeff/download/main.nf | 13 - .../nf-core/snpeff/download/nextflow.config | 5 - .../modules/nf-core/snpeff/download/test.yml | 7 - .../modules/nf-core/snpsift/annotate/main.nf | 38 - .../nf-core/snpsift/annotate/nextflow.config | 5 - .../modules/nf-core/snpsift/annotate/test.yml | 18 - tests/modules/nf-core/snpsift/dbnsfp/main.nf | 37 - .../nf-core/snpsift/dbnsfp/nextflow.config | 7 - tests/modules/nf-core/snpsift/dbnsfp/test.yml | 21 - tests/modules/nf-core/snpsift/split/main.nf | 32 - .../nf-core/snpsift/split/nextflow.config | 5 - tests/modules/nf-core/snpsift/split/test.yml | 32 - tests/modules/nf-core/snpsites/main.nf | 12 - .../modules/nf-core/snpsites/nextflow.config | 5 - tests/modules/nf-core/snpsites/test.yml | 9 - .../modules/nf-core/somalier/extract/main.nf | 21 - .../nf-core/somalier/extract/nextflow.config | 5 - .../modules/nf-core/somalier/extract/test.yml | 9 - tests/modules/nf-core/somalier/relate/main.nf | 35 - .../nf-core/somalier/relate/nextflow.config | 4 - .../modules/nf-core/somalier/relate/test.yml | 27 - .../modules/nf-core/sourmash/compare/main.nf | 35 - .../nf-core/sourmash/compare/nextflow.config | 8 - .../modules/nf-core/sourmash/compare/test.yml | 15 - tests/modules/nf-core/spring/compress/main.nf | 27 - .../nf-core/spring/compress/nextflow.config | 5 - .../modules/nf-core/spring/compress/test.yml | 17 - .../modules/nf-core/spring/decompress/main.nf | 8 +- tests/modules/nf-core/ssuissero/main.nf | 15 - .../modules/nf-core/ssuissero/nextflow.config | 5 - tests/modules/nf-core/ssuissero/test.yml | 9 - .../nf-core/stadeniolib/scramble/main.nf | 15 - .../stadeniolib/scramble/nextflow.config | 5 - .../nf-core/stadeniolib/scramble/test.yml | 7 - tests/modules/nf-core/staphopiasccmec/main.nf | 22 - .../nf-core/staphopiasccmec/nextflow.config | 9 - .../modules/nf-core/staphopiasccmec/test.yml | 15 - tests/modules/nf-core/star/starsolo/main.nf | 27 - .../nf-core/star/starsolo/nextflow.config | 5 - tests/modules/nf-core/star/starsolo/test.yml | 54 - tests/modules/nf-core/stranger/main.nf | 31 - .../modules/nf-core/stranger/nextflow.config | 9 - tests/modules/nf-core/stranger/test.yml | 27 - .../modules/nf-core/strelka/germline/main.nf | 37 - .../nf-core/strelka/germline/nextflow.config | 7 - .../modules/nf-core/strelka/germline/test.yml | 21 - tests/modules/nf-core/survivor/merge/main.nf | 26 - .../nf-core/survivor/merge/nextflow.config | 5 - tests/modules/nf-core/survivor/merge/test.yml | 11 - .../modules/nf-core/svtk/countsvtypes/main.nf | 15 - .../nf-core/svtk/countsvtypes/nextflow.config | 5 - .../nf-core/svtk/countsvtypes/test.yml | 8 - tests/modules/nf-core/svtyper/svtyper/main.nf | 25 - .../nf-core/svtyper/svtyper/nextflow.config | 6 - .../modules/nf-core/svtyper/svtyper/test.yml | 13 - tests/modules/nf-core/tailfindr/main.nf | 15 - .../modules/nf-core/tailfindr/nextflow.config | 5 - tests/modules/nf-core/tailfindr/test.yml | 9 - .../nf-core/tbprofiler/profile/main.nf | 28 - .../tbprofiler/profile/nextflow.config | 13 - .../nf-core/tbprofiler/profile/test.yml | 21 - tests/modules/nf-core/tiara/tiara/main.nf | 15 - .../nf-core/tiara/tiara/nextflow.config | 9 - tests/modules/nf-core/tiara/tiara/test.yml | 16 - .../nf-core/transdecoder/longorf/main.nf | 25 - .../transdecoder/longorf/nextflow.config | 5 - .../nf-core/transdecoder/longorf/test.yml | 33 - .../nf-core/ucsc/bigwigaverageoverbed/main.nf | 15 - .../ucsc/bigwigaverageoverbed/nextflow.config | 5 - .../ucsc/bigwigaverageoverbed/test.yml | 9 - .../nf-core/ucsc/gtftogenepred/main.nf | 15 - .../ucsc/gtftogenepred/nextflow.config | 11 - .../nf-core/ucsc/gtftogenepred/test.yml | 11 - tests/modules/nf-core/ucsc/liftover/main.nf | 14 - .../nf-core/ucsc/liftover/nextflow.config | 5 - tests/modules/nf-core/ucsc/liftover/test.yml | 10 - .../modules/nf-core/ucsc/wigtobigwig/main.nf | 15 - .../nf-core/ucsc/wigtobigwig/nextflow.config | 5 - .../modules/nf-core/ucsc/wigtobigwig/test.yml | 9 - tests/modules/nf-core/untarfiles/main.nf | 33 - .../nf-core/untarfiles/nextflow.config | 5 - tests/modules/nf-core/untarfiles/test.yml | 30 - tests/modules/nf-core/unzip/main.nf | 16 - tests/modules/nf-core/unzip/nextflow.config | 5 - tests/modules/nf-core/unzip/test.yml | 11 - tests/modules/nf-core/unzipfiles/main.nf | 16 - .../nf-core/unzipfiles/nextflow.config | 5 - tests/modules/nf-core/unzipfiles/test.yml | 11 - tests/modules/nf-core/upd/main.nf | 15 - tests/modules/nf-core/upd/nextflow.config | 6 - tests/modules/nf-core/upd/test.yml | 17 - tests/modules/nf-core/variantbam/main.nf | 13 - .../nf-core/variantbam/nextflow.config | 9 - tests/modules/nf-core/variantbam/test.yml | 7 - .../estimatealignmentproperties/main.nf | 26 - .../nextflow.config | 5 - .../estimatealignmentproperties/test.yml | 10 - tests/modules/nf-core/vcf2maf/main.nf | 30 - tests/modules/nf-core/vcf2maf/nextflow.config | 14 - tests/modules/nf-core/vcf2maf/test.yml | 15 - .../nf-core/vcflib/vcfbreakmulti/main.nf | 16 - .../vcflib/vcfbreakmulti/nextflow.config | 5 - .../nf-core/vcflib/vcfbreakmulti/test.yml | 16 - .../modules/nf-core/vcflib/vcffilter/main.nf | 17 - .../nf-core/vcflib/vcffilter/nextflow.config | 10 - .../modules/nf-core/vcflib/vcffilter/test.yml | 9 - tests/modules/nf-core/vcflib/vcfuniq/main.nf | 16 - .../nf-core/vcflib/vcfuniq/nextflow.config | 9 - tests/modules/nf-core/vcflib/vcfuniq/test.yml | 8 - .../nf-core/verifybamid/verifybamid/main.nf | 17 - .../verifybamid/verifybamid/nextflow.config | 6 - .../nf-core/verifybamid/verifybamid/test.yml | 17 - tests/modules/nf-core/vg/construct/main.nf | 77 - .../nf-core/vg/construct/nextflow.config | 5 - tests/modules/nf-core/vg/construct/test.yml | 29 - tests/modules/nf-core/vg/deconstruct/main.nf | 13 - .../nf-core/vg/deconstruct/nextflow.config | 9 - tests/modules/nf-core/vg/deconstruct/test.yml | 9 - tests/modules/nf-core/vg/index/main.nf | 36 - .../modules/nf-core/vg/index/nextflow.config | 8 - tests/modules/nf-core/vg/index/test.yml | 9 - tests/modules/nf-core/vrhyme/vrhyme/main.nf | 25 - .../nf-core/vrhyme/vrhyme/nextflow.config | 5 - tests/modules/nf-core/vrhyme/vrhyme/test.yml | 63 - tests/modules/nf-core/vsearch/sintax/main.nf | 13 - .../nf-core/vsearch/sintax/nextflow.config | 5 - tests/modules/nf-core/vsearch/sintax/test.yml | 8 - .../nf-core/vsearch/usearchglobal/main.nf | 25 - .../vsearch/usearchglobal/nextflow.config | 4 - .../nf-core/vsearch/usearchglobal/test.yml | 26 - tests/modules/nf-core/vt/decompose/main.nf | 27 - .../nf-core/vt/decompose/nextflow.config | 8 - tests/modules/nf-core/vt/decompose/test.yml | 19 - tests/modules/nf-core/vt/normalize/main.nf | 80 - .../nf-core/vt/normalize/nextflow.config | 8 - tests/modules/nf-core/vt/normalize/test.yml | 41 - tests/modules/nf-core/wgsim/main.nf | 15 - tests/modules/nf-core/wgsim/nextflow.config | 5 - tests/modules/nf-core/wgsim/test.yml | 7 - tests/modules/nf-core/whamg/main.nf | 19 - tests/modules/nf-core/whamg/nextflow.config | 8 - tests/modules/nf-core/whamg/test.yml | 10 - tests/modules/nf-core/yahs/main.nf | 17 - tests/modules/nf-core/yahs/nextflow.config | 10 - tests/modules/nf-core/yahs/test.yml | 11 - tests/modules/nf-core/yara/index/main.nf | 13 - .../nf-core/yara/index/nextflow.config | 5 - tests/modules/nf-core/yara/index/test.yml | 31 - tests/modules/nf-core/yara/mapper/main.nf | 34 - .../nf-core/yara/mapper/nextflow.config | 13 - tests/modules/nf-core/yara/mapper/test.yml | 67 - .../nf-core/fasta_binning_concoct/main.nf | 19 - .../fasta_binning_concoct/nextflow.config | 5 - .../nf-core/fasta_binning_concoct/test.yml | 56 - .../nf-core/fastq_ngscheckmate/main.nf | 4 +- tests/test_versions_yml.py | 5 +- 5198 files changed, 121516 insertions(+), 38291 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/update_module.yml create mode 100644 .github/scripts/license_message.py create mode 100644 modules/nf-core/adapterremovalfixprefix/tests/main.nf.test create mode 100644 modules/nf-core/adapterremovalfixprefix/tests/main.nf.test.snap create mode 100644 modules/nf-core/adapterremovalfixprefix/tests/nextflow.config create mode 100644 modules/nf-core/adapterremovalfixprefix/tests/tags.yml create mode 100644 modules/nf-core/affy/justrma/tests/main.nf.test create mode 100644 modules/nf-core/affy/justrma/tests/main.nf.test.snap create mode 100644 modules/nf-core/affy/justrma/tests/nextflow.config create mode 100644 modules/nf-core/affy/justrma/tests/tags.yml create mode 100644 modules/nf-core/agat/spfilterfeaturefromkilllist/environment.yml create mode 100644 modules/nf-core/agat/spfilterfeaturefromkilllist/main.nf create mode 100644 modules/nf-core/agat/spfilterfeaturefromkilllist/meta.yml create mode 100644 modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test create mode 100644 modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test.snap create mode 100644 modules/nf-core/agat/spmergeannotations/environment.yml create mode 100644 modules/nf-core/agat/spmergeannotations/main.nf create mode 100644 modules/nf-core/agat/spmergeannotations/meta.yml create mode 100644 modules/nf-core/agat/spmergeannotations/tests/main.nf.test create mode 100644 modules/nf-core/agat/spmergeannotations/tests/main.nf.test.snap create mode 100644 modules/nf-core/agat/spmergeannotations/tests/tags.yml create mode 100644 modules/nf-core/angsd/contamination/tests/main.nf.test create mode 100644 modules/nf-core/angsd/contamination/tests/main.nf.test.snap create mode 100644 modules/nf-core/angsd/contamination/tests/nextflow.config create mode 100644 modules/nf-core/angsd/docounts/tests/main.nf.test create mode 100644 modules/nf-core/angsd/docounts/tests/main.nf.test.snap create mode 100644 modules/nf-core/angsd/docounts/tests/nextflow.config create mode 100644 modules/nf-core/arcashla/extract/tests/main.nf.test create mode 100644 modules/nf-core/arcashla/extract/tests/main.nf.test.snap create mode 100644 modules/nf-core/arcashla/extract/tests/nextflow.config create mode 100644 modules/nf-core/argnorm/environment.yml create mode 100644 modules/nf-core/argnorm/main.nf create mode 100644 modules/nf-core/argnorm/meta.yml create mode 100644 modules/nf-core/argnorm/tests/argnorm_hamronized.config create mode 100644 modules/nf-core/argnorm/tests/argnorm_raw.config create mode 100644 modules/nf-core/argnorm/tests/main.nf.test create mode 100644 modules/nf-core/argnorm/tests/main.nf.test.snap create mode 100644 modules/nf-core/argnorm/tests/tags.yml create mode 100644 modules/nf-core/ariba/getref/tests/main.nf.test create mode 100644 modules/nf-core/ariba/getref/tests/main.nf.test.snap create mode 100644 modules/nf-core/ariba/getref/tests/tags.yml create mode 100644 modules/nf-core/arriba/download/tests/main.nf.test create mode 100644 modules/nf-core/arriba/download/tests/main.nf.test.snap create mode 100644 modules/nf-core/atlas/call/tests/main.nf.test create mode 100644 modules/nf-core/atlas/call/tests/main.nf.test.snap create mode 100644 modules/nf-core/atlas/pmd/tests/main.nf.test create mode 100644 modules/nf-core/atlas/pmd/tests/main.nf.test.snap create mode 100644 modules/nf-core/atlas/recal/tests/main.nf.test create mode 100644 modules/nf-core/atlas/recal/tests/main.nf.test.snap create mode 100644 modules/nf-core/atlas/splitmerge/tests/main.nf.test create mode 100644 modules/nf-core/atlas/splitmerge/tests/main.nf.test.snap create mode 100644 modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test create mode 100644 modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test.snap create mode 100644 modules/nf-core/bamtools/stats/tests/main.nf.test create mode 100644 modules/nf-core/bamtools/stats/tests/main.nf.test.snap create mode 100644 modules/nf-core/bamutil/trimbam/tests/main.nf.test create mode 100644 modules/nf-core/bamutil/trimbam/tests/main.nf.test.snap create mode 100644 modules/nf-core/bandage/image/tests/main.nf.test create mode 100644 modules/nf-core/bandage/image/tests/main.nf.test.snap create mode 100644 modules/nf-core/barrnap/tests/main.nf.test create mode 100644 modules/nf-core/barrnap/tests/main.nf.test.snap create mode 100644 modules/nf-core/barrnap/tests/tags.yml create mode 100644 modules/nf-core/bbmap/bbnorm/tests/main.nf.test create mode 100644 modules/nf-core/bbmap/bbnorm/tests/main.nf.test.snap create mode 100644 modules/nf-core/bbmap/bbnorm/tests/nextflow.config create mode 100644 modules/nf-core/bbmap/clumpify/tests/main.nf.test create mode 100644 modules/nf-core/bbmap/clumpify/tests/main.nf.test.snap create mode 100644 modules/nf-core/bbmap/index/tests/main.nf.test create mode 100644 modules/nf-core/bbmap/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/bbmap/pileup/tests/main.nf.test create mode 100644 modules/nf-core/bbmap/pileup/tests/main.nf.test.snap create mode 100644 modules/nf-core/bbmap/sendsketch/tests/main.nf.test create mode 100644 modules/nf-core/bbmap/sendsketch/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/consensus/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/consensus/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/csq/environment.yml create mode 100644 modules/nf-core/bcftools/csq/main.nf create mode 100644 modules/nf-core/bcftools/csq/meta.yml create mode 100644 modules/nf-core/bcftools/csq/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/csq/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/csq/tests/tags.yml create mode 100644 modules/nf-core/bcftools/csq/tests/vcf.config create mode 100644 modules/nf-core/bcftools/merge/tests/bcf.config create mode 100644 modules/nf-core/bcftools/merge/tests/bcf_gz.config create mode 100644 modules/nf-core/bcftools/merge/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/merge/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config create mode 100644 modules/nf-core/bcftools/merge/tests/tags.yml create mode 100644 modules/nf-core/bcftools/merge/tests/vcf.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config create mode 100644 modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/environment.yml create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/main.nf create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/meta.yml create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index.config create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_csi.config create mode 100644 modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_tbi.config create mode 100644 modules/nf-core/bcftools/pluginsplit/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/pluginsplit/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/pluginsplit/tests/tags.yml create mode 100644 modules/nf-core/bcftools/plugintag2tag/environment.yml create mode 100644 modules/nf-core/bcftools/plugintag2tag/main.nf create mode 100644 modules/nf-core/bcftools/plugintag2tag/meta.yml create mode 100644 modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/plugintag2tag/tests/nextflow.config create mode 100644 modules/nf-core/bcftools/plugintag2tag/tests/tags.yml create mode 100644 modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index.config create mode 100644 modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_csi.config create mode 100644 modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_tbi.config create mode 100644 modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config create mode 100644 modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config create mode 100644 modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config create mode 100644 modules/nf-core/bcftools/roh/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/roh/tests/main.nf.test.snap create mode 100644 modules/nf-core/bcftools/split/tests/main.nf.test create mode 100644 modules/nf-core/bcftools/split/tests/main.nf.test.snap delete mode 100644 modules/nf-core/bcl2fastq/environment.yml create mode 100644 modules/nf-core/beagle5/beagle/tests/main.nf.test create mode 100644 modules/nf-core/beagle5/beagle/tests/main.nf.test.snap delete mode 100644 modules/nf-core/bedtools/genomecov/tests/tags.yml create mode 100644 modules/nf-core/bedtools/groupby/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/groupby/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/groupby/tests/nextflow.config create mode 100644 modules/nf-core/bedtools/jaccard/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/jaccard/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/jaccard/tests/nextflow.config create mode 100644 modules/nf-core/bedtools/makewindows/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/makewindows/tests/nextflow.config create mode 100644 modules/nf-core/bedtools/maskfasta/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/maskfasta/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/multiinter/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/multiinter/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/shift/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/shift/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/shift/tests/nextflow.config create mode 100644 modules/nf-core/bedtools/slop/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/slop/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/slop/tests/nextflow.config create mode 100644 modules/nf-core/bedtools/split/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/split/tests/main.nf.test.snap create mode 100644 modules/nf-core/bedtools/subtract/tests/main.nf.test create mode 100644 modules/nf-core/bedtools/subtract/tests/main.nf.test.snap create mode 100644 modules/nf-core/bioawk/tests/main.nf.test create mode 100644 modules/nf-core/bioawk/tests/main.nf.test.snap create mode 100644 modules/nf-core/bioawk/tests/nextflow.config create mode 100644 modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test create mode 100644 modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test.snap create mode 100644 modules/nf-core/biobambam/bammerge/tests/main.nf.test create mode 100644 modules/nf-core/biobambam/bammerge/tests/main.nf.test.snap create mode 100644 modules/nf-core/biobambam/bammerge/tests/nextflow.config create mode 100644 modules/nf-core/biobambam/bamsormadup/tests/main.nf.test create mode 100644 modules/nf-core/biobambam/bamsormadup/tests/main.nf.test.snap create mode 100644 modules/nf-core/biscuit/epiread/tests/main.nf.test create mode 100644 modules/nf-core/biscuit/epiread/tests/main.nf.test.snap create mode 100644 modules/nf-core/biscuit/index/tests/main.nf.test create mode 100644 modules/nf-core/biscuit/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/biscuit/pileup/tests/main.nf.test create mode 100644 modules/nf-core/biscuit/pileup/tests/main.nf.test.snap create mode 100644 modules/nf-core/biscuit/qc/tests/main.nf.test create mode 100644 modules/nf-core/biscuit/qc/tests/main.nf.test.snap create mode 100644 modules/nf-core/biscuit/vcf2bed/tests/main.nf.test create mode 100644 modules/nf-core/biscuit/vcf2bed/tests/main.nf.test.snap create mode 100644 modules/nf-core/blat/tests/main.nf.test create mode 100644 modules/nf-core/blat/tests/main.nf.test.snap create mode 100644 modules/nf-core/blat/tests/nextflow.config create mode 100644 modules/nf-core/bowtie/align/tests/main.nf.test create mode 100644 modules/nf-core/bowtie/align/tests/main.nf.test.snap create mode 100644 modules/nf-core/bowtie/align/tests/tags.yml create mode 100644 modules/nf-core/bowtie/build/tests/main.nf.test create mode 100644 modules/nf-core/bowtie/build/tests/main.nf.test.snap create mode 100644 modules/nf-core/bowtie/build/tests/tags.yml create mode 100644 modules/nf-core/bracken/bracken/tests/genus_test.config create mode 100644 modules/nf-core/bwameth/align/tests/main.nf.test create mode 100644 modules/nf-core/bwameth/align/tests/main.nf.test.snap create mode 100644 modules/nf-core/bwameth/index/tests/main.nf.test create mode 100644 modules/nf-core/bwameth/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/cafe/environment.yml create mode 100644 modules/nf-core/cafe/main.nf create mode 100644 modules/nf-core/cafe/meta.yml create mode 100644 modules/nf-core/cafe/tests/main.nf.test create mode 100644 modules/nf-core/cafe/tests/main.nf.test.snap create mode 100644 modules/nf-core/calder2/tests/main.nf.test create mode 100644 modules/nf-core/calder2/tests/main.nf.test.snap create mode 100644 modules/nf-core/calder2/tests/nextflow.config create mode 100644 modules/nf-core/cdhit/cdhitest/tests/main.nf.test create mode 100644 modules/nf-core/cdhit/cdhitest/tests/main.nf.test.snap create mode 100644 modules/nf-core/cellbender/merge/environment.yml create mode 100644 modules/nf-core/cellbender/merge/main.nf create mode 100644 modules/nf-core/cellbender/merge/meta.yml create mode 100644 modules/nf-core/cellbender/merge/templates/merge.py create mode 100644 modules/nf-core/cellbender/merge/tests/main.nf.test create mode 100644 modules/nf-core/cellbender/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/cellbender/merge/tests/tags.yml create mode 100644 modules/nf-core/cellbender/removebackground/environment.yml create mode 100644 modules/nf-core/cellbender/removebackground/main.nf create mode 100644 modules/nf-core/cellbender/removebackground/meta.yml create mode 100644 modules/nf-core/cellbender/removebackground/tests/epochs.config create mode 100644 modules/nf-core/cellbender/removebackground/tests/main.nf.test create mode 100644 modules/nf-core/cellbender/removebackground/tests/main.nf.test.snap create mode 100644 modules/nf-core/cellbender/removebackground/tests/tags.yml create mode 100644 modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test create mode 100644 modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test.snap create mode 100644 modules/nf-core/cellrangerarc/mkgtf/tests/nextflow.config create mode 100644 modules/nf-core/checkqc/environment.yml create mode 100644 modules/nf-core/checkqc/main.nf create mode 100644 modules/nf-core/checkqc/meta.yml create mode 100644 modules/nf-core/checkqc/tests/main.nf.test create mode 100644 modules/nf-core/checkqc/tests/main.nf.test.snap create mode 100644 modules/nf-core/checkqc/tests/nextflow.config create mode 100644 modules/nf-core/checkqc/tests/tags.yml create mode 100644 modules/nf-core/chewbbaca/createschema/environment.yml create mode 100644 modules/nf-core/chewbbaca/createschema/main.nf create mode 100644 modules/nf-core/chewbbaca/createschema/meta.yml create mode 100644 modules/nf-core/chewbbaca/createschema/tests/main.nf.test create mode 100644 modules/nf-core/chewbbaca/createschema/tests/main.nf.test.snap create mode 100644 modules/nf-core/chewbbaca/createschema/tests/tags.yml create mode 100644 modules/nf-core/circexplorer2/annotate/tests/main.nf.test create mode 100644 modules/nf-core/circexplorer2/annotate/tests/main.nf.test.snap create mode 100644 modules/nf-core/circexplorer2/parse/tests/main.nf.test create mode 100644 modules/nf-core/circexplorer2/parse/tests/main.nf.test.snap create mode 100644 modules/nf-core/clonalframeml/tests/main.nf.test create mode 100644 modules/nf-core/clonalframeml/tests/main.nf.test.snap create mode 100644 modules/nf-core/cmseq/polymut/tests/main.nf.test create mode 100644 modules/nf-core/cmseq/polymut/tests/main.nf.test.snap create mode 100644 modules/nf-core/cnvkit/access/tests/main.nf.test create mode 100644 modules/nf-core/cnvkit/access/tests/main.nf.test.snap create mode 100644 modules/nf-core/cnvkit/call/tests/main.nf.test create mode 100644 modules/nf-core/cnvkit/call/tests/main.nf.test.snap mode change 100755 => 100644 modules/nf-core/cnvkit/genemetrics/main.nf mode change 100755 => 100644 modules/nf-core/cnvkit/genemetrics/meta.yml create mode 100644 modules/nf-core/cnvkit/genemetrics/tests/main.nf.test create mode 100644 modules/nf-core/cnvkit/genemetrics/tests/main.nf.test.snap create mode 100644 modules/nf-core/cnvkit/target/tests/main.nf.test create mode 100644 modules/nf-core/cnvkit/target/tests/main.nf.test.snap create mode 100644 modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test create mode 100644 modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test.snap create mode 100644 modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test create mode 100644 modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test.snap create mode 100644 modules/nf-core/cnvpytor/importreaddepth/tests/nextflow.config create mode 100644 modules/nf-core/cnvpytor/view/tests/main.nf.test create mode 100644 modules/nf-core/cnvpytor/view/tests/main.nf.test.snap create mode 100644 modules/nf-core/cnvpytor/view/tests/nextflow.config create mode 100644 modules/nf-core/concoct/concoct/tests/main.nf.test create mode 100644 modules/nf-core/concoct/concoct/tests/main.nf.test.snap create mode 100644 modules/nf-core/concoct/concoct/tests/tags.yml create mode 100644 modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test create mode 100644 modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test.snap create mode 100644 modules/nf-core/concoct/concoctcoveragetable/tests/tags.yml create mode 100644 modules/nf-core/concoct/cutupfasta/tests/main.nf.test create mode 100644 modules/nf-core/concoct/cutupfasta/tests/main.nf.test.snap create mode 100644 modules/nf-core/concoct/cutupfasta/tests/tags.yml create mode 100644 modules/nf-core/concoct/extractfastabins/tests/main.nf.test create mode 100644 modules/nf-core/concoct/extractfastabins/tests/main.nf.test.snap create mode 100644 modules/nf-core/concoct/extractfastabins/tests/tags.yml create mode 100644 modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test create mode 100644 modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test.snap create mode 100644 modules/nf-core/concoct/mergecutupclustering/tests/tags.yml create mode 100644 modules/nf-core/cooler/digest/tests/main.nf.test create mode 100644 modules/nf-core/cooler/digest/tests/main.nf.test.snap create mode 100644 modules/nf-core/cooler/dump/tests/main.nf.test create mode 100644 modules/nf-core/cooler/dump/tests/main.nf.test.snap create mode 100644 modules/nf-core/cooler/makebins/tests/main.nf.test create mode 100644 modules/nf-core/cooler/makebins/tests/main.nf.test.snap create mode 100644 modules/nf-core/crumble/tests/main.nf.test create mode 100644 modules/nf-core/crumble/tests/main.nf.test.snap create mode 100644 modules/nf-core/crumble/tests/nextflow.config create mode 100644 modules/nf-core/custom/gtffilter/environment.yml create mode 100644 modules/nf-core/custom/gtffilter/main.nf create mode 100644 modules/nf-core/custom/gtffilter/meta.yml create mode 100644 modules/nf-core/custom/gtffilter/templates/gtffilter.py create mode 100644 modules/nf-core/custom/gtffilter/tests/main.nf.test create mode 100644 modules/nf-core/custom/gtffilter/tests/main.nf.test.snap create mode 100644 modules/nf-core/custom/gtffilter/tests/tags.yml mode change 100644 => 100755 modules/nf-core/custom/matrixfilter/templates/matrixfilter.R create mode 100644 modules/nf-core/datavzrd/environment.yml create mode 100644 modules/nf-core/datavzrd/main.nf create mode 100644 modules/nf-core/datavzrd/meta.yml create mode 100644 modules/nf-core/datavzrd/tests/main.nf.test create mode 100644 modules/nf-core/datavzrd/tests/main.nf.test.snap create mode 100644 modules/nf-core/datavzrd/tests/tags.yml create mode 100644 modules/nf-core/deeptools/bamcoverage/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/bamcoverage/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/bamcoverage/tests/tags.yml create mode 100644 modules/nf-core/deeptools/computematrix/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/computematrix/tests/nextflow.config create mode 100644 modules/nf-core/deeptools/computematrix/tests/tags.yml create mode 100644 modules/nf-core/deeptools/multibamsummary/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/multibamsummary/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/multibamsummary/tests/tags.yml create mode 100644 modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/plotcorrelation/tests/tags.yml create mode 100644 modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/plotfingerprint/tests/tags.yml create mode 100644 modules/nf-core/deeptools/plotheatmap/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/plotheatmap/tests/tags.yml create mode 100644 modules/nf-core/deeptools/plotpca/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/plotpca/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/plotpca/tests/tags.yml create mode 100644 modules/nf-core/deeptools/plotprofile/tests/main.nf.test create mode 100644 modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap create mode 100644 modules/nf-core/deeptools/plotprofile/tests/tags.yml create mode 100644 modules/nf-core/deepvariant/callvariants/main.nf create mode 100644 modules/nf-core/deepvariant/callvariants/meta.yml create mode 100644 modules/nf-core/deepvariant/callvariants/tests/main.nf.test create mode 100644 modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap create mode 100644 modules/nf-core/deepvariant/callvariants/tests/nextflow.config create mode 100644 modules/nf-core/deepvariant/callvariants/tests/tags.yml create mode 100644 modules/nf-core/deepvariant/makeexamples/main.nf create mode 100644 modules/nf-core/deepvariant/makeexamples/meta.yml create mode 100644 modules/nf-core/deepvariant/makeexamples/tests/main.nf.test create mode 100644 modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap create mode 100644 modules/nf-core/deepvariant/makeexamples/tests/nextflow.config create mode 100644 modules/nf-core/deepvariant/makeexamples/tests/tags.yml create mode 100644 modules/nf-core/deepvariant/postprocessvariants/main.nf create mode 100644 modules/nf-core/deepvariant/postprocessvariants/meta.yml create mode 100644 modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test create mode 100644 modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap create mode 100644 modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config create mode 100644 modules/nf-core/deepvariant/postprocessvariants/tests/tags.yml create mode 100644 modules/nf-core/deepvariant/rundeepvariant/main.nf create mode 100644 modules/nf-core/deepvariant/rundeepvariant/meta.yml create mode 100644 modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test create mode 100644 modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap create mode 100644 modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config create mode 100644 modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config create mode 100644 modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config create mode 100644 modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml delete mode 100644 modules/nf-core/deepvariant/tests/main.nf.test.snap delete mode 100644 modules/nf-core/deepvariant/tests/nextflow-intervals.config delete mode 100644 modules/nf-core/deepvariant/tests/nextflow.config create mode 100644 modules/nf-core/diamond/cluster/environment.yml create mode 100644 modules/nf-core/diamond/cluster/main.nf create mode 100644 modules/nf-core/diamond/cluster/meta.yml create mode 100644 modules/nf-core/diamond/cluster/tests/main.nf.test create mode 100644 modules/nf-core/diamond/cluster/tests/main.nf.test.snap create mode 100644 modules/nf-core/diamond/cluster/tests/tags.yml create mode 100644 modules/nf-core/dshbio/exportsegments/tests/main.nf.test create mode 100644 modules/nf-core/dshbio/exportsegments/tests/main.nf.test.snap create mode 100644 modules/nf-core/dshbio/filterbed/tests/main.nf.test create mode 100644 modules/nf-core/dshbio/filterbed/tests/main.nf.test.snap create mode 100644 modules/nf-core/dshbio/filterbed/tests/nextflow.config create mode 100644 modules/nf-core/dshbio/filtergff3/tests/main.nf.test create mode 100644 modules/nf-core/dshbio/filtergff3/tests/main.nf.test.snap create mode 100644 modules/nf-core/dshbio/filtergff3/tests/nextflow.config create mode 100644 modules/nf-core/dshbio/splitbed/tests/main.nf.test create mode 100644 modules/nf-core/dshbio/splitbed/tests/main.nf.test.snap create mode 100644 modules/nf-core/dshbio/splitbed/tests/nextflow.config create mode 100644 modules/nf-core/dshbio/splitgff3/tests/main.nf.test create mode 100644 modules/nf-core/dshbio/splitgff3/tests/main.nf.test.snap create mode 100644 modules/nf-core/dshbio/splitgff3/tests/nextflow.config create mode 100644 modules/nf-core/dysgu/environment.yml create mode 100644 modules/nf-core/dysgu/main.nf create mode 100644 modules/nf-core/dysgu/meta.yml create mode 100644 modules/nf-core/dysgu/tests/main.nf.test create mode 100644 modules/nf-core/dysgu/tests/main.nf.test.snap create mode 100644 modules/nf-core/dysgu/tests/nextflow.config create mode 100644 modules/nf-core/dysgu/tests/tags.yml create mode 100644 modules/nf-core/ectyper/tests/main.nf.test create mode 100644 modules/nf-core/ectyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/eido/convert/tests/main.nf.test create mode 100644 modules/nf-core/eido/convert/tests/main.nf.test.snap create mode 100644 modules/nf-core/eido/convert/tests/nextflow.config create mode 100644 modules/nf-core/eido/validate/tests/main.nf.test create mode 100644 modules/nf-core/eido/validate/tests/main.nf.test.snap create mode 100644 modules/nf-core/eido/validate/tests/nextflow.config create mode 100644 modules/nf-core/elprep/filter/tests/main.nf.test create mode 100644 modules/nf-core/elprep/filter/tests/main.nf.test.snap create mode 100644 modules/nf-core/elprep/filter/tests/nextflow.config create mode 100644 modules/nf-core/elprep/split/tests/main.nf.test create mode 100644 modules/nf-core/elprep/split/tests/main.nf.test.snap create mode 100644 modules/nf-core/elprep/split/tests/nextflow.config create mode 100644 modules/nf-core/emboss/cons/tests/main.nf.test create mode 100644 modules/nf-core/emboss/cons/tests/main.nf.test.snap create mode 100644 modules/nf-core/emboss/revseq/tests/main.nf.test create mode 100644 modules/nf-core/emboss/revseq/tests/main.nf.test.snap create mode 100644 modules/nf-core/emmtyper/tests/main.nf.test create mode 100644 modules/nf-core/emmtyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/main.nf.test create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/nextflow.config create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/tags.yml create mode 100644 modules/nf-core/ensemblvep/filtervep/tests/vcf.config create mode 100644 modules/nf-core/entrezdirect/esummary/tests/main.nf.test create mode 100644 modules/nf-core/entrezdirect/esummary/tests/main.nf.test.snap create mode 100644 modules/nf-core/epang/place/tests/main.nf.test create mode 100644 modules/nf-core/epang/place/tests/main.nf.test.snap create mode 100644 modules/nf-core/epang/place/tests/nextflow.config create mode 100644 modules/nf-core/estsfs/environment.yml create mode 100644 modules/nf-core/estsfs/tests/main.nf.test create mode 100644 modules/nf-core/estsfs/tests/main.nf.test.snap create mode 100644 modules/nf-core/evigene/tr2aacds/environment.yml create mode 100644 modules/nf-core/evigene/tr2aacds/main.nf create mode 100644 modules/nf-core/evigene/tr2aacds/meta.yml create mode 100644 modules/nf-core/evigene/tr2aacds/tests/main.nf.test create mode 100644 modules/nf-core/evigene/tr2aacds/tests/main.nf.test.snap create mode 100644 modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test create mode 100644 modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test.snap create mode 100644 modules/nf-core/fastawindows/tests/main.nf.test create mode 100644 modules/nf-core/fastawindows/tests/main.nf.test.snap create mode 100644 modules/nf-core/fastqscreen/fastqscreen/tests/nextflow.config create mode 100644 modules/nf-core/fasttree/tests/main.nf.test create mode 100644 modules/nf-core/fasttree/tests/main.nf.test.snap create mode 100644 modules/nf-core/ffq/tests/main.nf.test create mode 100644 modules/nf-core/ffq/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/callduplexconsensusreads/tests/main.nf.test create mode 100644 modules/nf-core/fgbio/callduplexconsensusreads/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/callduplexconsensusreads/tests/tags.yml create mode 100644 modules/nf-core/fgbio/callmolecularconsensusreads/tests/main.nf.test create mode 100644 modules/nf-core/fgbio/callmolecularconsensusreads/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/callmolecularconsensusreads/tests/sort.config create mode 100644 modules/nf-core/fgbio/callmolecularconsensusreads/tests/tags.yml create mode 100644 modules/nf-core/fgbio/collectduplexseqmetrics/environment.yml create mode 100644 modules/nf-core/fgbio/collectduplexseqmetrics/main.nf create mode 100644 modules/nf-core/fgbio/collectduplexseqmetrics/meta.yml create mode 100644 modules/nf-core/fgbio/collectduplexseqmetrics/tests/main.nf.test create mode 100644 modules/nf-core/fgbio/collectduplexseqmetrics/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/collectduplexseqmetrics/tests/tags.yml create mode 100644 modules/nf-core/fgbio/filterconsensusreads/tests/main.nf.test create mode 100644 modules/nf-core/fgbio/filterconsensusreads/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/filterconsensusreads/tests/tags.yml create mode 100644 modules/nf-core/fgbio/groupreadsbyumi/tests/main.nf.test create mode 100644 modules/nf-core/fgbio/groupreadsbyumi/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/groupreadsbyumi/tests/tags.yml create mode 100644 modules/nf-core/fgbio/sortbam/tests/main.nf.test create mode 100644 modules/nf-core/fgbio/sortbam/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/sortbam/tests/tags.yml create mode 100644 modules/nf-core/fgbio/zipperbams/tests/main.nf.test create mode 100644 modules/nf-core/fgbio/zipperbams/tests/main.nf.test.snap create mode 100644 modules/nf-core/fgbio/zipperbams/tests/nextflow.config create mode 100644 modules/nf-core/fgbio/zipperbams/tests/tags.yml delete mode 100644 modules/nf-core/filtlong/tests/tags.yml delete mode 100644 modules/nf-core/flye/tests/nextflow.config create mode 100644 modules/nf-core/foldmason/easymsa/environment.yml create mode 100644 modules/nf-core/foldmason/easymsa/main.nf create mode 100644 modules/nf-core/foldmason/easymsa/meta.yml create mode 100644 modules/nf-core/foldmason/easymsa/tests/main.nf.test create mode 100644 modules/nf-core/foldmason/easymsa/tests/main.nf.test.snap create mode 100644 modules/nf-core/foldmason/easymsa/tests/tags.yml create mode 100644 modules/nf-core/foldseek/easysearch/tests/main.nf.test.snap create mode 100644 modules/nf-core/gamma/gamma/tests/main.nf.test create mode 100644 modules/nf-core/gamma/gamma/tests/main.nf.test.snap create mode 100644 modules/nf-core/gamma/gamma/tests/nextflow.config create mode 100644 modules/nf-core/gappa/examineassign/tests/main.nf.test create mode 100644 modules/nf-core/gappa/examineassign/tests/main.nf.test.snap create mode 100644 modules/nf-core/gappa/examineassign/tests/nextflow.config create mode 100644 modules/nf-core/gappa/examinegraft/tests/main.nf.test create mode 100644 modules/nf-core/gappa/examinegraft/tests/main.nf.test.snap create mode 100644 modules/nf-core/gappa/examineheattree/tests/main.nf.test create mode 100644 modules/nf-core/gappa/examineheattree/tests/main.nf.test.snap create mode 100644 modules/nf-core/gappa/examineheattree/tests/nextflow.config create mode 100644 modules/nf-core/gatk/realignertargetcreator/tests/main.nf.test create mode 100644 modules/nf-core/gatk/realignertargetcreator/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk/unifiedgenotyper/tests/main.nf.test create mode 100644 modules/nf-core/gatk/unifiedgenotyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/calibratedragstrmodel/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/calibratedragstrmodel/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/collectreadcounts/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/collectreadcounts/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/collectreadcounts/tests/nextflow.cram.config create mode 100644 modules/nf-core/gatk4/collectreadcounts/tests/nextflow.hdf5.config create mode 100644 modules/nf-core/gatk4/collectreadcounts/tests/nextflow.tsv.config create mode 100644 modules/nf-core/gatk4/collectsvevidence/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/collectsvevidence/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/collectsvevidence/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/composestrtablefile/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/composestrtablefile/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/condensedepthevidence/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/condensedepthevidence/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/fastqtosam/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/fastqtosam/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/filterintervals/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/filterintervals/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/filterintervals/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/gatherbqsrreports/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/gatherbqsrreports/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/gatherpileupsummaries/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/gatherpileupsummaries/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/gatherpileupsummaries/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/genotypegvcfs/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/genotypegvcfs/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/learnreadorientationmodel/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/learnreadorientationmodel/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/learnreadorientationmodel/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/leftalignandtrimvariants/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/leftalignandtrimvariants/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/leftalignandtrimvariants/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/mergebamalignment/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/mergebamalignment/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/preprocessintervals/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/preprocessintervals/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/preprocessintervals/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/printreads/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/printreads/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/revertsam/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/revertsam/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/samtofastq/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/samtofastq/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/shiftfasta/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/shiftfasta/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/shiftfasta/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/splitcram/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/splitcram/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/splitcram/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/splitintervals/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/splitintervals/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/splitintervals/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/variantstotable/environment.yml create mode 100644 modules/nf-core/gatk4/variantstotable/main.nf create mode 100644 modules/nf-core/gatk4/variantstotable/meta.yml create mode 100644 modules/nf-core/gatk4/variantstotable/tests/main.nf.test create mode 100644 modules/nf-core/gatk4/variantstotable/tests/main.nf.test.snap create mode 100644 modules/nf-core/gatk4/variantstotable/tests/nextflow.config create mode 100644 modules/nf-core/gatk4/variantstotable/tests/tags.yml create mode 100644 modules/nf-core/genmap/index/tests/main.nf.test create mode 100644 modules/nf-core/genmap/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/geoquery/getgeo/tests/main.nf.test create mode 100644 modules/nf-core/geoquery/getgeo/tests/main.nf.test.snap create mode 100644 modules/nf-core/geoquery/getgeo/tests/nextflow.config create mode 100644 modules/nf-core/getorganelle/config/environment.yml create mode 100644 modules/nf-core/getorganelle/config/tests/main.nf.test create mode 100644 modules/nf-core/getorganelle/config/tests/main.nf.test.snap create mode 100644 modules/nf-core/gfaffix/tests/main.nf.test create mode 100644 modules/nf-core/gfaffix/tests/main.nf.test.snap create mode 100644 modules/nf-core/gfatools/gfa2fa/tests/main.nf.test create mode 100644 modules/nf-core/gfatools/gfa2fa/tests/main.nf.test.snap create mode 100644 modules/nf-core/gfatools/stat/tests/main.nf.test create mode 100644 modules/nf-core/gfatools/stat/tests/main.nf.test.snap create mode 100644 modules/nf-core/gffcompare/tests/main.nf.test create mode 100644 modules/nf-core/gffcompare/tests/main.nf.test.snap create mode 100644 modules/nf-core/gmmdemux/environment.yml create mode 100644 modules/nf-core/gmmdemux/main.nf create mode 100644 modules/nf-core/gmmdemux/meta.yml create mode 100644 modules/nf-core/gmmdemux/tests/main.nf.test create mode 100644 modules/nf-core/gmmdemux/tests/main.nf.test.snap create mode 100644 modules/nf-core/gmmdemux/tests/nextflow.config create mode 100644 modules/nf-core/gmmdemux/tests/tags.yml create mode 100644 modules/nf-core/goat/taxonsearch/tests/main.nf.test create mode 100644 modules/nf-core/goat/taxonsearch/tests/main.nf.test.snap create mode 100644 modules/nf-core/goat/taxonsearch/tests/nextflow.config create mode 100644 modules/nf-core/goleft/indexcov/tests/main.nf.test create mode 100644 modules/nf-core/goleft/indexcov/tests/main.nf.test.snap create mode 100644 modules/nf-core/goleft/indexcov/tests/tags.yml create mode 100644 modules/nf-core/goleft/indexsplit/tests/main.nf.test create mode 100644 modules/nf-core/goleft/indexsplit/tests/main.nf.test.snap create mode 100644 modules/nf-core/graphmap2/index/tests/main.nf.test create mode 100644 modules/nf-core/graphmap2/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/graphtyper/vcfconcatenate/tests/main.nf.test create mode 100644 modules/nf-core/graphtyper/vcfconcatenate/tests/main.nf.test.snap create mode 100644 modules/nf-core/graphtyper/vcfconcatenate/tests/nextflow.config create mode 100644 modules/nf-core/gridss/gridss/tests/main.nf.test create mode 100644 modules/nf-core/gridss/gridss/tests/main.nf.test.snap create mode 100644 modules/nf-core/gridss/gridss/tests/tags.yml create mode 100644 modules/nf-core/gstama/collapse/tests/main.nf.test create mode 100644 modules/nf-core/gstama/collapse/tests/main.nf.test.snap create mode 100644 modules/nf-core/gstama/collapse/tests/nextflow.config create mode 100644 modules/nf-core/gstama/merge/tests/main.nf.test create mode 100644 modules/nf-core/gstama/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/gstama/merge/tests/nextflow.config create mode 100644 modules/nf-core/gstama/polyacleanup/tests/main.nf.test create mode 100644 modules/nf-core/gstama/polyacleanup/tests/main.nf.test.snap create mode 100644 modules/nf-core/gstama/polyacleanup/tests/nextflow.config create mode 100644 modules/nf-core/gubbins/tests/main.nf.test create mode 100644 modules/nf-core/gubbins/tests/main.nf.test.snap create mode 100644 modules/nf-core/gunc/downloaddb/tests/main.nf.test create mode 100644 modules/nf-core/gunc/downloaddb/tests/main.nf.test.snap create mode 100644 modules/nf-core/gunzip/tests/nextflow.config create mode 100644 modules/nf-core/gvcftools/extractvariants/tests/main.nf.test create mode 100644 modules/nf-core/gvcftools/extractvariants/tests/main.nf.test.snap create mode 100644 modules/nf-core/hapibd/tests/main.nf.test create mode 100644 modules/nf-core/hapibd/tests/main.nf.test.snap create mode 100644 modules/nf-core/haplocheck/tests/main.nf.test create mode 100644 modules/nf-core/haplocheck/tests/main.nf.test.snap create mode 100644 modules/nf-core/haplogrep2/classify/tests/main.nf.test create mode 100644 modules/nf-core/haplogrep2/classify/tests/main.nf.test.snap create mode 100644 modules/nf-core/happy/happy/tests/main.nf.test create mode 100644 modules/nf-core/happy/happy/tests/main.nf.test.snap create mode 100644 modules/nf-core/happy/sompy/tests/main.nf.test create mode 100644 modules/nf-core/happy/sompy/tests/main.nf.test.snap create mode 100644 modules/nf-core/happy/sompy/tests/nextflow.config create mode 100644 modules/nf-core/hicap/tests/main.nf.test create mode 100644 modules/nf-core/hicap/tests/main.nf.test.snap create mode 100644 modules/nf-core/hmmer/hmmbuild/tests/main.nf.test create mode 100644 modules/nf-core/hmmer/hmmbuild/tests/main.nf.test.snap create mode 100644 modules/nf-core/hmmer/hmmfetch/tests/main.nf.test create mode 100644 modules/nf-core/hmmer/hmmfetch/tests/main.nf.test.snap create mode 100644 modules/nf-core/hmmer/hmmrank/environment.yml create mode 100644 modules/nf-core/hmmer/hmmrank/main.nf create mode 100644 modules/nf-core/hmmer/hmmrank/meta.yml create mode 100644 modules/nf-core/hmmer/hmmrank/tests/main.nf.test create mode 100644 modules/nf-core/hmmer/hmmrank/tests/main.nf.test.snap create mode 100644 modules/nf-core/hmmer/hmmrank/tests/tags.yml create mode 100644 modules/nf-core/homer/annotatepeaks/tests/main.nf.test create mode 100644 modules/nf-core/homer/annotatepeaks/tests/main.nf.test.snap create mode 100644 modules/nf-core/homer/annotatepeaks/tests/nextflow.config create mode 100644 modules/nf-core/hpsuissero/tests/main.nf.test create mode 100644 modules/nf-core/hpsuissero/tests/main.nf.test.snap create mode 100644 modules/nf-core/hypo/tests/main.nf.test create mode 100644 modules/nf-core/hypo/tests/main.nf.test.snap create mode 100644 modules/nf-core/ichorcna/createpon/tests/main.nf.test create mode 100644 modules/nf-core/ichorcna/createpon/tests/main.nf.test.snap create mode 100644 modules/nf-core/ichorcna/createpon/tests/tags.yml create mode 100644 modules/nf-core/ichorcna/run/tests/main.nf.test create mode 100644 modules/nf-core/ichorcna/run/tests/main.nf.test.snap create mode 100644 modules/nf-core/ichorcna/run/tests/nextflow.config create mode 100644 modules/nf-core/ichorcna/run/tests/tags.yml create mode 100644 modules/nf-core/icountmini/segment/tests/main.nf.test create mode 100644 modules/nf-core/icountmini/segment/tests/main.nf.test.snap create mode 100644 modules/nf-core/idr/tests/main.nf.test create mode 100644 modules/nf-core/idr/tests/main.nf.test.snap create mode 100644 modules/nf-core/igv/js/tests/main.nf.test create mode 100644 modules/nf-core/igv/js/tests/main.nf.test.snap create mode 100644 modules/nf-core/igv/js/tests/nextflow.config create mode 100644 modules/nf-core/ismapper/tests/main.nf.test create mode 100644 modules/nf-core/ismapper/tests/main.nf.test.snap create mode 100644 modules/nf-core/ivar/consensus/tests/main.nf.test create mode 100644 modules/nf-core/ivar/consensus/tests/main.nf.test.snap create mode 100644 modules/nf-core/ivar/consensus/tests/nextflow.config create mode 100644 modules/nf-core/ivar/trim/tests/main.nf.test create mode 100644 modules/nf-core/ivar/trim/tests/main.nf.test.snap create mode 100644 modules/nf-core/ivar/variants/tests/main.nf.test create mode 100644 modules/nf-core/ivar/variants/tests/main.nf.test.snap create mode 100644 modules/nf-core/jvarkit/vcfpolyx/environment.yml create mode 100644 modules/nf-core/jvarkit/vcfpolyx/main.nf create mode 100644 modules/nf-core/jvarkit/vcfpolyx/meta.yml create mode 100644 modules/nf-core/jvarkit/vcfpolyx/tests/main.nf.test create mode 100644 modules/nf-core/jvarkit/vcfpolyx/tests/main.nf.test.snap create mode 100644 modules/nf-core/jvarkit/vcfpolyx/tests/tags.yml create mode 100644 modules/nf-core/jvarkit/wgscoverageplotter/environment.yml create mode 100644 modules/nf-core/jvarkit/wgscoverageplotter/main.nf create mode 100644 modules/nf-core/jvarkit/wgscoverageplotter/meta.yml create mode 100644 modules/nf-core/jvarkit/wgscoverageplotter/tests/main.nf.test create mode 100644 modules/nf-core/jvarkit/wgscoverageplotter/tests/main.nf.test.snap create mode 100644 modules/nf-core/jvarkit/wgscoverageplotter/tests/nextflow.config create mode 100644 modules/nf-core/jvarkit/wgscoverageplotter/tests/tags.yml create mode 100644 modules/nf-core/kleborate/tests/main.nf.test create mode 100644 modules/nf-core/kleborate/tests/main.nf.test.snap create mode 100644 modules/nf-core/kraken2/buildstandard/environment.yml create mode 100644 modules/nf-core/kraken2/buildstandard/main.nf create mode 100644 modules/nf-core/kraken2/buildstandard/meta.yml create mode 100644 modules/nf-core/kraken2/buildstandard/tests/main.nf.test create mode 100644 modules/nf-core/kraken2/buildstandard/tests/main.nf.test.snap create mode 100644 modules/nf-core/kraken2/buildstandard/tests/tags.yml create mode 100644 modules/nf-core/krakentools/combinekreports/tests/main.nf.test create mode 100644 modules/nf-core/krakentools/combinekreports/tests/main.nf.test.snap create mode 100644 modules/nf-core/krakentools/combinekreports/tests/tags.yml create mode 100644 modules/nf-core/krakentools/kreport2krona/tests/main.nf.test create mode 100644 modules/nf-core/krakentools/kreport2krona/tests/main.nf.test.snap create mode 100644 modules/nf-core/krakentools/kreport2krona/tests/tags.yml create mode 100644 modules/nf-core/krona/ktimporttaxonomy/tests/main.nf.test create mode 100644 modules/nf-core/krona/ktimporttaxonomy/tests/main.nf.test.snap create mode 100644 modules/nf-core/krona/ktimporttaxonomy/tests/tags.yml create mode 100644 modules/nf-core/krona/ktimporttext/tests/main.nf.test create mode 100644 modules/nf-core/krona/ktimporttext/tests/main.nf.test.snap create mode 100644 modules/nf-core/krona/ktimporttext/tests/tags.yml create mode 100644 modules/nf-core/krona/ktupdatetaxonomy/tests/main.nf.test create mode 100644 modules/nf-core/krona/ktupdatetaxonomy/tests/main.nf.test.snap create mode 100644 modules/nf-core/legsta/tests/main.nf.test create mode 100644 modules/nf-core/legsta/tests/main.nf.test.snap delete mode 100644 modules/nf-core/liftoff/tests/tags.yml create mode 100644 modules/nf-core/lissero/tests/main.nf.test create mode 100644 modules/nf-core/lissero/tests/main.nf.test.snap create mode 100644 modules/nf-core/lofreq/call/tests/main.nf.test create mode 100644 modules/nf-core/lofreq/call/tests/main.nf.test.snap create mode 100644 modules/nf-core/lofreq/callparallel/tests/main.nf.test create mode 100644 modules/nf-core/lofreq/callparallel/tests/main.nf.test.snap create mode 100644 modules/nf-core/lofreq/callparallel/tests/tags.yml create mode 100644 modules/nf-core/lofreq/filter/tests/main.nf.test create mode 100644 modules/nf-core/lofreq/filter/tests/main.nf.test.snap create mode 100644 modules/nf-core/lofreq/filter/tests/tags.yml create mode 100644 modules/nf-core/lofreq/indelqual/tests/main.nf.test create mode 100644 modules/nf-core/lofreq/indelqual/tests/main.nf.test.snap create mode 100644 modules/nf-core/lofreq/indelqual/tests/nextflow.config create mode 100644 modules/nf-core/lofreq/indelqual/tests/tags.yml create mode 100644 modules/nf-core/lofreq/somatic/tests/main.nf.test create mode 100644 modules/nf-core/lofreq/somatic/tests/main.nf.test.snap create mode 100644 modules/nf-core/longphase/haplotag/environment.yml create mode 100644 modules/nf-core/longphase/haplotag/main.nf create mode 100644 modules/nf-core/longphase/haplotag/meta.yml create mode 100644 modules/nf-core/longphase/haplotag/tests/main.nf.test create mode 100644 modules/nf-core/longphase/haplotag/tests/main.nf.test.snap create mode 100644 modules/nf-core/longphase/haplotag/tests/nextflow.config create mode 100644 modules/nf-core/longphase/haplotag/tests/tags.yml create mode 100644 modules/nf-core/longphase/phase/environment.yml create mode 100644 modules/nf-core/longphase/phase/main.nf create mode 100644 modules/nf-core/longphase/phase/meta.yml create mode 100644 modules/nf-core/longphase/phase/tests/main.nf.test create mode 100644 modules/nf-core/longphase/phase/tests/main.nf.test.snap create mode 100644 modules/nf-core/longphase/phase/tests/nextflow.config create mode 100644 modules/nf-core/longphase/phase/tests/tags.yml delete mode 100644 modules/nf-core/ltrfinder/tests/tags.yml delete mode 100644 modules/nf-core/ltrharvest/tests/tags.yml delete mode 100644 modules/nf-core/ltrretriever/ltrretriever/tests/tags.yml create mode 100644 modules/nf-core/macrel/contigs/tests/main.nf.test create mode 100644 modules/nf-core/macrel/contigs/tests/main.nf.test.snap create mode 100644 modules/nf-core/macs2/callpeak/tests/bam.config create mode 100644 modules/nf-core/macs2/callpeak/tests/bed.config create mode 100644 modules/nf-core/macs2/callpeak/tests/main.nf.test create mode 100644 modules/nf-core/macs2/callpeak/tests/main.nf.test.snap create mode 100644 modules/nf-core/macs3/callpeak/environment.yml create mode 100644 modules/nf-core/macs3/callpeak/main.nf create mode 100644 modules/nf-core/macs3/callpeak/meta.yml create mode 100644 modules/nf-core/macs3/callpeak/tests/bam.config create mode 100644 modules/nf-core/macs3/callpeak/tests/bed.config create mode 100644 modules/nf-core/macs3/callpeak/tests/main.nf.test create mode 100644 modules/nf-core/macs3/callpeak/tests/main.nf.test.snap create mode 100644 modules/nf-core/mapdamage2/tests/main.nf.test create mode 100644 modules/nf-core/mapdamage2/tests/main.nf.test.snap create mode 100644 modules/nf-core/mash/dist/tests/main.nf.test create mode 100644 modules/nf-core/mash/dist/tests/main.nf.test.snap create mode 100644 modules/nf-core/mashmap/environment.yml create mode 100644 modules/nf-core/mashmap/main.nf create mode 100644 modules/nf-core/mashmap/meta.yml create mode 100644 modules/nf-core/mashmap/tests/main.nf.test create mode 100644 modules/nf-core/mashmap/tests/main.nf.test.snap create mode 100644 modules/nf-core/mashmap/tests/tags.yml create mode 100644 modules/nf-core/mashtree/tests/main.nf.test create mode 100644 modules/nf-core/mashtree/tests/main.nf.test.snap create mode 100644 modules/nf-core/maxbin2/tests/main.nf.test create mode 100644 modules/nf-core/maxbin2/tests/main.nf.test.snap create mode 100644 modules/nf-core/mcroni/tests/main.nf.test create mode 100644 modules/nf-core/mcroni/tests/main.nf.test.snap create mode 100644 modules/nf-core/mcstaging/imc2mc/environment.yml create mode 100644 modules/nf-core/mcstaging/imc2mc/main.nf create mode 100644 modules/nf-core/mcstaging/imc2mc/meta.yml create mode 100644 modules/nf-core/mcstaging/imc2mc/tests/main.nf.test create mode 100644 modules/nf-core/mcstaging/imc2mc/tests/main.nf.test.snap create mode 100644 modules/nf-core/mcstaging/imc2mc/tests/nextflow.config create mode 100644 modules/nf-core/mcstaging/imc2mc/tests/tags.yml create mode 100644 modules/nf-core/mcstaging/phenoimager2mc/main.nf create mode 100644 modules/nf-core/mcstaging/phenoimager2mc/meta.yml create mode 100644 modules/nf-core/mcstaging/phenoimager2mc/tests/main.nf.test create mode 100644 modules/nf-core/mcstaging/phenoimager2mc/tests/main.nf.test.snap create mode 100644 modules/nf-core/mcstaging/phenoimager2mc/tests/nextflow.config create mode 100644 modules/nf-core/mcstaging/phenoimager2mc/tests/tags.yml create mode 100644 modules/nf-core/megahit/tests/main.nf.test create mode 100644 modules/nf-core/megahit/tests/main.nf.test.snap create mode 100644 modules/nf-core/megahit/tests/tags.yml create mode 100644 modules/nf-core/megan/rma2info/tests/main.nf.test create mode 100644 modules/nf-core/megan/rma2info/tests/main.nf.test.snap create mode 100644 modules/nf-core/megan/rma2info/tests/nextflow.config create mode 100644 modules/nf-core/megan/rma2info/tests/tags.yml create mode 100644 modules/nf-core/meningotype/tests/main.nf.test create mode 100644 modules/nf-core/meningotype/tests/main.nf.test.snap delete mode 100644 modules/nf-core/merquryfk/merquryfk/environment.yml create mode 100644 modules/nf-core/merquryfk/merquryfk/tests/main.nf.test create mode 100644 modules/nf-core/merquryfk/merquryfk/tests/main.nf.test.snap create mode 100644 modules/nf-core/merquryfk/merquryfk/tests/nextflow.config create mode 100644 modules/nf-core/merquryfk/merquryfk/tests/nextflow.pdf.config create mode 100644 modules/nf-core/merquryfk/merquryfk/tests/nextflow.png.config create mode 100644 modules/nf-core/merquryfk/merquryfk/tests/nextflow.trio.config create mode 100644 modules/nf-core/merquryfk/merquryfk/tests/tags.yml create mode 100644 modules/nf-core/metabat2/jgisummarizebamcontigdepths/tests/main.nf.test create mode 100644 modules/nf-core/metabat2/jgisummarizebamcontigdepths/tests/main.nf.test.snap create mode 100644 modules/nf-core/metaphlan/makedb/tests/main.nf.test create mode 100644 modules/nf-core/metaphlan/makedb/tests/main.nf.test.snap create mode 100644 modules/nf-core/metaphlan/makedb/tests/nextflow.config create mode 100644 modules/nf-core/metaphlan/mergemetaphlantables/tests/main.nf.test create mode 100644 modules/nf-core/metaphlan/mergemetaphlantables/tests/main.nf.test.snap create mode 100644 modules/nf-core/metaphlan/mergemetaphlantables/tests/nextflow.config create mode 100644 modules/nf-core/metaphlan/mergemetaphlantables/tests/tags.yml create mode 100644 modules/nf-core/metaphlan/metaphlan/tests/main.nf.test create mode 100644 modules/nf-core/metaphlan/metaphlan/tests/main.nf.test.snap create mode 100644 modules/nf-core/metaphlan/metaphlan/tests/nextflow.config create mode 100644 modules/nf-core/metaphlan/metaphlan/tests/tags.yml create mode 100644 modules/nf-core/methyldackel/extract/tests/main.nf.test create mode 100644 modules/nf-core/methyldackel/extract/tests/main.nf.test.snap create mode 100644 modules/nf-core/methyldackel/extract/tests/nextflow.config create mode 100644 modules/nf-core/methyldackel/mbias/tests/main.nf.test create mode 100644 modules/nf-core/methyldackel/mbias/tests/main.nf.test.snap create mode 100644 modules/nf-core/minia/tests/main.nf.test create mode 100644 modules/nf-core/minia/tests/main.nf.test.snap create mode 100644 modules/nf-core/miniprot/align/tests/main.nf.test create mode 100644 modules/nf-core/miniprot/align/tests/main.nf.test.snap create mode 100644 modules/nf-core/miniprot/align/tests/nextflow.gff.config create mode 100644 modules/nf-core/miniprot/align/tests/nextflow.paf.config create mode 100644 modules/nf-core/miniprot/index/tests/main.nf.test create mode 100644 modules/nf-core/miniprot/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/miranda/tests/main.nf.test create mode 100644 modules/nf-core/miranda/tests/main.nf.test.snap create mode 100644 modules/nf-core/miranda/tests/nextflow.config create mode 100644 modules/nf-core/mirtop/counts/environment.yml create mode 100644 modules/nf-core/mirtop/counts/main.nf create mode 100644 modules/nf-core/mirtop/counts/meta.yml create mode 100644 modules/nf-core/mirtop/counts/tests/main.nf.test create mode 100644 modules/nf-core/mirtop/counts/tests/main.nf.test.snap create mode 100644 modules/nf-core/mirtop/counts/tests/nextflow.config create mode 100644 modules/nf-core/mirtop/export/environment.yml create mode 100644 modules/nf-core/mirtop/export/main.nf create mode 100644 modules/nf-core/mirtop/export/meta.yml create mode 100644 modules/nf-core/mirtop/export/tests/main.nf.test create mode 100644 modules/nf-core/mirtop/export/tests/main.nf.test.snap create mode 100644 modules/nf-core/mirtop/gff/environment.yml create mode 100644 modules/nf-core/mirtop/gff/main.nf create mode 100644 modules/nf-core/mirtop/gff/meta.yml create mode 100644 modules/nf-core/mirtop/gff/tests/main.nf.test create mode 100644 modules/nf-core/mirtop/gff/tests/main.nf.test.snap create mode 100644 modules/nf-core/mirtop/stats/environment.yml create mode 100644 modules/nf-core/mirtop/stats/main.nf create mode 100644 modules/nf-core/mirtop/stats/meta.yml create mode 100644 modules/nf-core/mirtop/stats/tests/main.nf.test create mode 100644 modules/nf-core/mirtop/stats/tests/main.nf.test.snap create mode 100644 modules/nf-core/mirtrace/qc/environment.yml create mode 100644 modules/nf-core/mirtrace/qc/main.nf create mode 100644 modules/nf-core/mirtrace/qc/meta.yml create mode 100644 modules/nf-core/mirtrace/qc/tests/main.nf.test create mode 100644 modules/nf-core/mirtrace/qc/tests/main.nf.test.snap create mode 100644 modules/nf-core/mmseqs/databases/tests/main.nf.test create mode 100644 modules/nf-core/mmseqs/databases/tests/main.nf.test.snap create mode 100644 modules/nf-core/mobsuite/recon/tests/main.nf.test create mode 100644 modules/nf-core/mobsuite/recon/tests/main.nf.test.snap create mode 100644 modules/nf-core/motus/profile/tests/main.nf.test create mode 100644 modules/nf-core/motus/profile/tests/main.nf.test.snap create mode 100644 modules/nf-core/motus/profile/tests/tags.yml create mode 100644 modules/nf-core/msisensor2/scan/tests/main.nf.test create mode 100644 modules/nf-core/msisensor2/scan/tests/main.nf.test.snap create mode 100644 modules/nf-core/msisensorpro/scan/tests/main.nf.test create mode 100644 modules/nf-core/msisensorpro/scan/tests/main.nf.test.snap create mode 100644 modules/nf-core/mtnucratio/tests/main.nf.test create mode 100644 modules/nf-core/mtnucratio/tests/main.nf.test.snap create mode 100644 modules/nf-core/multiqc/tests/nextflow.config create mode 100644 modules/nf-core/multivcfanalyzer/tests/main.nf.test create mode 100644 modules/nf-core/multivcfanalyzer/tests/main.nf.test.snap create mode 100644 modules/nf-core/multivcfanalyzer/tests/tags.yml create mode 100644 modules/nf-core/mykrobe/predict/tests/main.nf.test create mode 100644 modules/nf-core/mykrobe/predict/tests/main.nf.test.snap mode change 100755 => 100644 modules/nf-core/nanocomp/main.nf mode change 100755 => 100644 modules/nf-core/nanocomp/meta.yml create mode 100644 modules/nf-core/nanocomp/tests/main.nf.test create mode 100644 modules/nf-core/nanocomp/tests/main.nf.test.snap create mode 100644 modules/nf-core/nanolyse/tests/main.nf.test create mode 100644 modules/nf-core/nanolyse/tests/main.nf.test.snap create mode 100644 modules/nf-core/nanolyse/tests/nextflow.config create mode 100644 modules/nf-core/nanoq/environment.yml create mode 100644 modules/nf-core/nanoq/main.nf create mode 100644 modules/nf-core/nanoq/meta.yml create mode 100644 modules/nf-core/nanoq/tests/main.nf.test create mode 100644 modules/nf-core/nanoq/tests/main.nf.test.snap create mode 100644 modules/nf-core/nanoq/tests/tags.yml create mode 100644 modules/nf-core/narfmap/align/tests/segfault.nf.test create mode 100644 modules/nf-core/narfmap/align/tests/segfault.nf.test.snap create mode 100644 modules/nf-core/ncbigenomedownload/tests/main.nf.test create mode 100644 modules/nf-core/ncbigenomedownload/tests/main.nf.test.snap create mode 100644 modules/nf-core/ncbigenomedownload/tests/nextflow.config create mode 100644 modules/nf-core/nextclade/datasetget/tests/main.nf.test create mode 100644 modules/nf-core/nextclade/datasetget/tests/main.nf.test.snap create mode 100644 modules/nf-core/nextclade/run/tests/main.nf.test create mode 100644 modules/nf-core/nextclade/run/tests/main.nf.test.snap create mode 100644 modules/nf-core/nextgenmap/tests/main.nf.test create mode 100644 modules/nf-core/nextgenmap/tests/main.nf.test.snap create mode 100644 modules/nf-core/ngmaster/tests/main.nf.test create mode 100644 modules/nf-core/ngmaster/tests/main.nf.test.snap create mode 100644 modules/nf-core/ngmerge/tests/main.nf.test create mode 100644 modules/nf-core/ngmerge/tests/main.nf.test.snap create mode 100644 modules/nf-core/nonpareil/nonpareilcurvesr/environment.yml create mode 100644 modules/nf-core/nonpareil/nonpareilcurvesr/main.nf create mode 100644 modules/nf-core/nonpareil/nonpareilcurvesr/meta.yml create mode 100644 modules/nf-core/nonpareil/nonpareilcurvesr/tests/main.nf.test create mode 100644 modules/nf-core/nonpareil/nonpareilcurvesr/tests/main.nf.test.snap create mode 100644 modules/nf-core/nonpareil/nonpareilcurvesr/tests/tags.yml delete mode 100644 modules/nf-core/odgi/draw/test/main.nf.test create mode 100644 modules/nf-core/odgi/draw/tests/main.nf.test rename modules/nf-core/odgi/draw/{test => tests}/main.nf.test.snap (100%) create mode 100644 modules/nf-core/openms/idmassaccuracy/environment.yml create mode 100644 modules/nf-core/openms/idmassaccuracy/main.nf create mode 100644 modules/nf-core/openms/idmassaccuracy/meta.yml create mode 100644 modules/nf-core/openms/idmassaccuracy/tests/main.nf.test create mode 100644 modules/nf-core/openms/idmassaccuracy/tests/main.nf.test.snap create mode 100644 modules/nf-core/openms/idmassaccuracy/tests/nextflow.config create mode 100644 modules/nf-core/openmsthirdparty/cometadapter/environment.yml create mode 100644 modules/nf-core/openmsthirdparty/cometadapter/main.nf create mode 100644 modules/nf-core/openmsthirdparty/cometadapter/meta.yml create mode 100644 modules/nf-core/openmsthirdparty/cometadapter/tests/main.nf.test create mode 100644 modules/nf-core/openmsthirdparty/cometadapter/tests/main.nf.test.snap create mode 100644 modules/nf-core/openmsthirdparty/cometadapter/tests/nextflow.config create mode 100644 modules/nf-core/openmsthirdparty/cometadapter/tests/tags.yml create mode 100644 modules/nf-core/paftools/sam2paf/tests/main.nf.test create mode 100644 modules/nf-core/paftools/sam2paf/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairix/tests/main.nf.test create mode 100644 modules/nf-core/pairix/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/dedup/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/dedup/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/dedup/tests/nextflow.config create mode 100644 modules/nf-core/pairtools/flip/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/flip/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/merge/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/parse/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/parse/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/parse/tests/nextflow.config create mode 100644 modules/nf-core/pairtools/restrict/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/restrict/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/restrict/tests/nextflow.config create mode 100644 modules/nf-core/pairtools/select/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/select/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/select/tests/nextflow.config create mode 100644 modules/nf-core/pairtools/sort/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/sort/tests/main.nf.test.snap create mode 100644 modules/nf-core/pairtools/sort/tests/nextflow.config create mode 100644 modules/nf-core/pairtools/stats/tests/main.nf.test create mode 100644 modules/nf-core/pairtools/stats/tests/main.nf.test.snap create mode 100644 modules/nf-core/panaroo/run/tests/main.nf.test create mode 100644 modules/nf-core/panaroo/run/tests/main.nf.test.snap create mode 100644 modules/nf-core/panaroo/run/tests/nextflow.config create mode 100644 modules/nf-core/paragraph/vcf2paragraph/tests/main.nf.test create mode 100644 modules/nf-core/paragraph/vcf2paragraph/tests/main.nf.test.snap create mode 100644 modules/nf-core/paraphase/tests/nextflow.csi_index.config create mode 100644 modules/nf-core/pasty/tests/main.nf.test create mode 100644 modules/nf-core/pasty/tests/main.nf.test.snap create mode 100644 modules/nf-core/pbbam/pbmerge/tests/main.nf.test create mode 100644 modules/nf-core/pbbam/pbmerge/tests/main.nf.test.snap create mode 100644 modules/nf-core/pbbam/pbmerge/tests/nextflow.config create mode 100644 modules/nf-core/pbptyper/tests/main.nf.test create mode 100644 modules/nf-core/pbptyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/pbtk/pbindex/environment.yml create mode 100644 modules/nf-core/pbtk/pbindex/main.nf create mode 100644 modules/nf-core/pbtk/pbindex/meta.yml create mode 100644 modules/nf-core/pbtk/pbindex/tests/main.nf.test create mode 100644 modules/nf-core/pbtk/pbindex/tests/main.nf.test.snap create mode 100644 modules/nf-core/peddy/tests/main.nf.test create mode 100644 modules/nf-core/peddy/tests/main.nf.test.snap create mode 100644 modules/nf-core/peddy/tests/tags.yml create mode 100644 modules/nf-core/peka/tests/main.nf.test create mode 100644 modules/nf-core/peka/tests/main.nf.test.snap create mode 100644 modules/nf-core/peka/tests/nextflow.config create mode 100644 modules/nf-core/phantompeakqualtools/tests/main.nf.test create mode 100644 modules/nf-core/phantompeakqualtools/tests/main.nf.test.snap create mode 100644 modules/nf-core/phantompeakqualtools/tests/tags.yml create mode 100644 modules/nf-core/picard/bedtointervallist/tests/main.nf.test create mode 100644 modules/nf-core/picard/bedtointervallist/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/cleansam/tests/main.nf.test create mode 100644 modules/nf-core/picard/cleansam/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/cleansam/tests/nextflow.config create mode 100644 modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test create mode 100644 modules/nf-core/picard/collectinsertsizemetrics/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test create mode 100644 modules/nf-core/picard/collectmultiplemetrics/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test create mode 100644 modules/nf-core/picard/collectwgsmetrics/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/createsequencedictionary/tests/main.nf.test create mode 100644 modules/nf-core/picard/createsequencedictionary/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/fastqtosam/tests/main.nf.test create mode 100644 modules/nf-core/picard/fastqtosam/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/fastqtosam/tests/nextflow.config create mode 100644 modules/nf-core/picard/fixmateinformation/tests/main.nf.test create mode 100644 modules/nf-core/picard/fixmateinformation/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/fixmateinformation/tests/nextflow.config create mode 100644 modules/nf-core/picard/liftovervcf/tests/main.nf.test create mode 100644 modules/nf-core/picard/liftovervcf/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/liftovervcf/tests/nextflow.config create mode 100644 modules/nf-core/picard/mergesamfiles/tests/main.nf.test create mode 100644 modules/nf-core/picard/mergesamfiles/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/positionbaseddownsamplesam/environment.yml create mode 100644 modules/nf-core/picard/positionbaseddownsamplesam/main.nf create mode 100644 modules/nf-core/picard/positionbaseddownsamplesam/meta.yml create mode 100644 modules/nf-core/picard/positionbaseddownsamplesam/tests/main.nf.test create mode 100644 modules/nf-core/picard/positionbaseddownsamplesam/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/positionbaseddownsamplesam/tests/tags.yml create mode 100644 modules/nf-core/picard/renamesampleinvcf/tests/main.nf.test create mode 100644 modules/nf-core/picard/renamesampleinvcf/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/scatterintervalsbyns/tests/main.nf.test create mode 100644 modules/nf-core/picard/scatterintervalsbyns/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/sortsam/tests/main.nf.test create mode 100644 modules/nf-core/picard/sortsam/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/sortsam/tests/nextflow.config create mode 100644 modules/nf-core/picard/sortvcf/tests/main.nf.test create mode 100644 modules/nf-core/picard/sortvcf/tests/main.nf.test.snap create mode 100644 modules/nf-core/pilon/tests/main.nf.test create mode 100644 modules/nf-core/pilon/tests/main.nf.test.snap create mode 100644 modules/nf-core/pilon/tests/tags.yml mode change 100755 => 100644 modules/nf-core/pindel/pindel/main.nf mode change 100755 => 100644 modules/nf-core/pindel/pindel/meta.yml create mode 100644 modules/nf-core/pindel/pindel/tests/main.nf.test create mode 100644 modules/nf-core/pindel/pindel/tests/main.nf.test.snap create mode 100644 modules/nf-core/pints/caller/tests/main.nf.test create mode 100644 modules/nf-core/pints/caller/tests/main.nf.test.snap create mode 100644 modules/nf-core/pints/caller/tests/nextflow.config create mode 100644 modules/nf-core/pirate/tests/main.nf.test create mode 100644 modules/nf-core/pirate/tests/main.nf.test.snap create mode 100644 modules/nf-core/plasmidfinder/tests/main.nf.test create mode 100644 modules/nf-core/plasmidfinder/tests/main.nf.test.snap create mode 100644 modules/nf-core/plasmidid/tests/main.nf.test create mode 100644 modules/nf-core/plasmidid/tests/main.nf.test.snap create mode 100644 modules/nf-core/plasmidid/tests/nextflow.config create mode 100644 modules/nf-core/platypus/tests/main.nf.test create mode 100644 modules/nf-core/platypus/tests/main.nf.test.snap create mode 100644 modules/nf-core/plink/bcf/tests/main.nf.test create mode 100644 modules/nf-core/plink/bcf/tests/main.nf.test.snap create mode 100644 modules/nf-core/plink/bcf/tests/nextflow.config create mode 100644 modules/nf-core/plink/vcf/tests/main.nf.test create mode 100644 modules/nf-core/plink/vcf/tests/main.nf.test.snap create mode 100644 modules/nf-core/plink/vcf/tests/nextflow.config create mode 100644 modules/nf-core/pmdtools/filter/tests/main.nf.test create mode 100644 modules/nf-core/pmdtools/filter/tests/main.nf.test.snap create mode 100644 modules/nf-core/poolsnp/environment.yml create mode 100644 modules/nf-core/poolsnp/main.nf create mode 100644 modules/nf-core/poolsnp/meta.yml create mode 100644 modules/nf-core/poolsnp/tests/main.nf.test create mode 100644 modules/nf-core/poolsnp/tests/main.nf.test.snap create mode 100644 modules/nf-core/poolsnp/tests/nextflow.config create mode 100644 modules/nf-core/poolsnp/tests/tags.yml create mode 100644 modules/nf-core/porechop/abi/tests/main.nf.test create mode 100644 modules/nf-core/porechop/abi/tests/main.nf.test.snap create mode 100644 modules/nf-core/preseq/ccurve/tests/main.nf.test create mode 100644 modules/nf-core/preseq/ccurve/tests/main.nf.test.snap create mode 100644 modules/nf-core/president/tests/main.nf.test.snap create mode 100644 modules/nf-core/prinseqplusplus/tests/main.nf.test create mode 100644 modules/nf-core/prinseqplusplus/tests/main.nf.test.snap create mode 100644 modules/nf-core/prinseqplusplus/tests/nextflow.config create mode 100644 modules/nf-core/pureclip/tests/main.nf.test create mode 100644 modules/nf-core/pureclip/tests/main.nf.test.snap create mode 100644 modules/nf-core/purecn/intervalfile/tests/main.nf.test create mode 100644 modules/nf-core/purecn/intervalfile/tests/main.nf.test.snap create mode 100644 modules/nf-core/purecn/normaldb/tests/main.nf.test create mode 100644 modules/nf-core/purecn/normaldb/tests/main.nf.test.snap create mode 100644 modules/nf-core/purgedups/pbcstat/tests/main.nf.test create mode 100644 modules/nf-core/purgedups/pbcstat/tests/main.nf.test.snap create mode 100644 modules/nf-core/purgedups/splitfa/tests/main.nf.test create mode 100644 modules/nf-core/purgedups/splitfa/tests/main.nf.test.snap create mode 100644 modules/nf-core/pydamage/analyze/tests/main.nf.test create mode 100644 modules/nf-core/pydamage/analyze/tests/main.nf.test.snap create mode 100644 modules/nf-core/qcat/tests/main.nf.test create mode 100644 modules/nf-core/qcat/tests/main.nf.test.snap create mode 100644 modules/nf-core/quast/tests/main.nf.test create mode 100644 modules/nf-core/quast/tests/main.nf.test.snap create mode 100644 modules/nf-core/quast/tests/tags.yml create mode 100644 modules/nf-core/rapidnj/tests/main.nf.test create mode 100644 modules/nf-core/rapidnj/tests/main.nf.test.snap create mode 100644 modules/nf-core/raven/tests/main.nf.test create mode 100644 modules/nf-core/raven/tests/main.nf.test.snap create mode 100644 modules/nf-core/rtgtools/pedfilter/tests/main.nf.test create mode 100644 modules/nf-core/rtgtools/pedfilter/tests/main.nf.test.snap create mode 100644 modules/nf-core/rtgtools/pedfilter/tests/nextflow.config create mode 100644 modules/nf-core/sam2lca/analyze/tests/main.nf.test create mode 100644 modules/nf-core/sam2lca/analyze/tests/main.nf.test.snap create mode 100644 modules/nf-core/sam2lca/analyze/tests/nextflow.config create mode 100644 modules/nf-core/sambamba/flagstat/tests/main.nf.test create mode 100644 modules/nf-core/sambamba/flagstat/tests/main.nf.test.snap create mode 100644 modules/nf-core/sambamba/markdup/tests/main.nf.test create mode 100644 modules/nf-core/sambamba/markdup/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/collatefastq/tests/main.nf.test create mode 100644 modules/nf-core/samtools/collatefastq/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/collatefastq/tests/tags.yml create mode 100644 modules/nf-core/samtools/consensus/environment.yml create mode 100644 modules/nf-core/samtools/consensus/main.nf create mode 100644 modules/nf-core/samtools/consensus/meta.yml create mode 100644 modules/nf-core/samtools/consensus/tests/fastq.config create mode 100644 modules/nf-core/samtools/consensus/tests/main.nf.test create mode 100644 modules/nf-core/samtools/consensus/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/consensus/tests/pileup.config create mode 100644 modules/nf-core/samtools/consensus/tests/tags.yml create mode 100644 modules/nf-core/samtools/depth/tests/main.nf.test create mode 100644 modules/nf-core/samtools/depth/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/dict/tests/main.nf.test create mode 100644 modules/nf-core/samtools/dict/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/fasta/tests/main.nf.test create mode 100644 modules/nf-core/samtools/fasta/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/getrg/tests/main.nf.test create mode 100644 modules/nf-core/samtools/getrg/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/sort/tests/nextflow_cram.config delete mode 100644 modules/nf-core/scimap/mcmicro/environment.yml create mode 100644 modules/nf-core/scimap/mcmicro/tests/main.nf.test create mode 100644 modules/nf-core/scimap/mcmicro/tests/main.nf.test.snap create mode 100644 modules/nf-core/scoary/tests/main.nf.test create mode 100644 modules/nf-core/scoary/tests/main.nf.test.snap create mode 100644 modules/nf-core/scramble/clusteridentifier/tests/main.nf.test create mode 100644 modules/nf-core/scramble/clusteridentifier/tests/main.nf.test.snap create mode 100644 modules/nf-core/seacr/callpeak/tests/main.nf.test create mode 100644 modules/nf-core/seacr/callpeak/tests/main.nf.test.snap create mode 100644 modules/nf-core/seacr/callpeak/tests/nextflow.config create mode 100644 modules/nf-core/segemehl/index/tests/main.nf.test create mode 100644 modules/nf-core/segemehl/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/README.md create mode 100644 modules/nf-core/sentieon/bwamem/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/bwamem/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/bwamem/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/bwamem/tests/nextflow_out_cram.config create mode 100644 modules/nf-core/sentieon/bwamem/tests/tags.yml create mode 100644 modules/nf-core/sentieon/collectvcmetrics/environment.yml create mode 100644 modules/nf-core/sentieon/collectvcmetrics/main.nf create mode 100644 modules/nf-core/sentieon/collectvcmetrics/meta.yml create mode 100644 modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/collectvcmetrics/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/collectvcmetrics/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/collectvcmetrics/tests/tags.yml create mode 100644 modules/nf-core/sentieon/coveragemetrics/environment.yml create mode 100644 modules/nf-core/sentieon/coveragemetrics/main.nf create mode 100644 modules/nf-core/sentieon/coveragemetrics/meta.yml create mode 100644 modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/coveragemetrics/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/coveragemetrics/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/coveragemetrics/tests/nextflow_omit.config create mode 100644 modules/nf-core/sentieon/coveragemetrics/tests/nextflow_partitions.config create mode 100644 modules/nf-core/sentieon/coveragemetrics/tests/tags.yml create mode 100644 modules/nf-core/sentieon/dedup/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/dedup/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/dedup/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/dedup/tests/nextflow_rmdup.config create mode 100644 modules/nf-core/sentieon/gvcftyper/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/gvcftyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/gvcftyper/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/haplotyper/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/haplotyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/haplotyper/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/haplotyper/tests/tags.yml create mode 100644 modules/nf-core/sentieon/qualcal/environment.yml create mode 100644 modules/nf-core/sentieon/qualcal/main.nf create mode 100644 modules/nf-core/sentieon/qualcal/meta.yml create mode 100644 modules/nf-core/sentieon/qualcal/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/qualcal/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/qualcal/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/qualcal/tests/tags.yml create mode 100644 modules/nf-core/sentieon/readwriter/tests/main.nf.test create mode 100644 modules/nf-core/sentieon/readwriter/tests/main.nf.test.snap create mode 100644 modules/nf-core/sentieon/readwriter/tests/nextflow.config create mode 100644 modules/nf-core/sentieon/readwriter/tests/nextflow_outputcram.config delete mode 100644 modules/nf-core/sentieon/setup.md create mode 100644 modules/nf-core/seqcluster/collapse/environment.yml create mode 100644 modules/nf-core/seqcluster/collapse/main.nf create mode 100644 modules/nf-core/seqcluster/collapse/meta.yml create mode 100644 modules/nf-core/seqcluster/collapse/tests/main.nf.test create mode 100644 modules/nf-core/seqcluster/collapse/tests/main.nf.test.snap create mode 100644 modules/nf-core/seqcluster/collapse/tests/nextflow.config create mode 100644 modules/nf-core/seqfu/derep/environment.yml create mode 100644 modules/nf-core/seqfu/derep/main.nf create mode 100644 modules/nf-core/seqfu/derep/meta.yml create mode 100644 modules/nf-core/seqfu/derep/tests/main.nf.test create mode 100644 modules/nf-core/seqfu/derep/tests/main.nf.test.snap create mode 100644 modules/nf-core/seqfu/derep/tests/tags.yml create mode 100644 modules/nf-core/seqsero2/tests/main.nf.test create mode 100644 modules/nf-core/seqsero2/tests/main.nf.test.snap create mode 100644 modules/nf-core/seqsero2/tests/nextflow.config mode change 100755 => 100644 modules/nf-core/sequenzautils/bam2seqz/meta.yml create mode 100644 modules/nf-core/sequenzautils/bam2seqz/tests/main.nf.test create mode 100644 modules/nf-core/sequenzautils/bam2seqz/tests/main.nf.test.snap create mode 100644 modules/nf-core/sequenzautils/gcwiggle/tests/main.nf.test create mode 100644 modules/nf-core/sequenzautils/gcwiggle/tests/main.nf.test.snap create mode 100644 modules/nf-core/sequenzautils/gcwiggle/tests/nextflow.config create mode 100644 modules/nf-core/seroba/run/tests/main.nf.test create mode 100644 modules/nf-core/seroba/run/tests/main.nf.test.snap create mode 100644 modules/nf-core/severus/environment.yml create mode 100644 modules/nf-core/severus/main.nf create mode 100644 modules/nf-core/severus/meta.yml create mode 100644 modules/nf-core/severus/tests/main.nf.test create mode 100644 modules/nf-core/severus/tests/main.nf.test.snap create mode 100644 modules/nf-core/severus/tests/nextflow.config create mode 100644 modules/nf-core/severus/tests/tags.yml create mode 100644 modules/nf-core/shasta/tests/main.nf.test create mode 100644 modules/nf-core/shasta/tests/main.nf.test.snap create mode 100644 modules/nf-core/shasta/tests/nextflow.config create mode 100644 modules/nf-core/shasum/tests/main.nf.test create mode 100644 modules/nf-core/shasum/tests/main.nf.test.snap create mode 100644 modules/nf-core/shigatyper/tests/main.nf.test create mode 100644 modules/nf-core/shigatyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/sickle/tests/main.nf.test create mode 100644 modules/nf-core/sickle/tests/main.nf.test.snap create mode 100644 modules/nf-core/sickle/tests/nextflow.config create mode 100644 modules/nf-core/sistr/tests/main.nf.test create mode 100644 modules/nf-core/sistr/tests/main.nf.test.snap create mode 100644 modules/nf-core/slimfastq/tests/main.nf.test create mode 100644 modules/nf-core/slimfastq/tests/main.nf.test.snap create mode 100644 modules/nf-core/smncopynumbercaller/tests/main.nf.test create mode 100644 modules/nf-core/smncopynumbercaller/tests/main.nf.test.snap create mode 100644 modules/nf-core/smncopynumbercaller/tests/nextflow.config create mode 100644 modules/nf-core/snapaligner/index/tests/main.nf.test create mode 100644 modules/nf-core/snapaligner/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/sniffles/tests/main.nf.test create mode 100644 modules/nf-core/sniffles/tests/main.nf.test.snap create mode 100644 modules/nf-core/sniffles/tests/nextflow.config create mode 100644 modules/nf-core/sniffles/tests/tags.yml create mode 100644 modules/nf-core/snippy/run/tests/main.nf.test create mode 100644 modules/nf-core/snippy/run/tests/main.nf.test.snap create mode 100644 modules/nf-core/snpdists/tests/main.nf.test create mode 100644 modules/nf-core/snpdists/tests/main.nf.test.snap create mode 100644 modules/nf-core/snpeff/download/tests/main.nf.test create mode 100644 modules/nf-core/snpeff/download/tests/main.nf.test.snap create mode 100644 modules/nf-core/snpsift/annotate/tests/main.nf.test create mode 100644 modules/nf-core/snpsift/annotate/tests/main.nf.test.snap create mode 100644 modules/nf-core/snpsift/dbnsfp/tests/main.nf.test create mode 100644 modules/nf-core/snpsift/dbnsfp/tests/main.nf.test.snap create mode 100644 modules/nf-core/snpsift/dbnsfp/tests/nextflow.config create mode 100644 modules/nf-core/snpsift/split/tests/main.nf.test create mode 100644 modules/nf-core/snpsift/split/tests/main.nf.test.snap create mode 100644 modules/nf-core/snpsites/tests/main.nf.test create mode 100644 modules/nf-core/snpsites/tests/main.nf.test.snap create mode 100644 modules/nf-core/snpsites/tests/tags.yml create mode 100644 modules/nf-core/somalier/extract/tests/main.nf.test create mode 100644 modules/nf-core/somalier/extract/tests/main.nf.test.snap create mode 100644 modules/nf-core/somalier/extract/tests/tags.yml create mode 100644 modules/nf-core/somalier/relate/tests/main.nf.test create mode 100644 modules/nf-core/somalier/relate/tests/main.nf.test.snap create mode 100644 modules/nf-core/somalier/relate/tests/tags.yml create mode 100644 modules/nf-core/sourmash/compare/tests/main.nf.test create mode 100644 modules/nf-core/sourmash/compare/tests/main.nf.test.snap create mode 100644 modules/nf-core/sourmash/compare/tests/nextflow.config create mode 100644 modules/nf-core/sourmash/compare/tests/tags.yml create mode 100644 modules/nf-core/splitubam/environment.yml create mode 100644 modules/nf-core/splitubam/main.nf create mode 100644 modules/nf-core/splitubam/meta.yml create mode 100644 modules/nf-core/splitubam/tests/main.nf.test create mode 100644 modules/nf-core/splitubam/tests/main.nf.test.snap create mode 100644 modules/nf-core/splitubam/tests/nextflow.config create mode 100644 modules/nf-core/splitubam/tests/tags.yml create mode 100644 modules/nf-core/spring/compress/tests/main.nf.test create mode 100644 modules/nf-core/spring/compress/tests/main.nf.test.snap create mode 100644 modules/nf-core/spring/decompress/test/main.nf.test create mode 100644 modules/nf-core/spring/decompress/test/main.nf.test.snap rename {tests/modules/nf-core/ariba/getref => modules/nf-core/spring/decompress/test}/nextflow.config (100%) create mode 100644 modules/nf-core/spring/decompress/test/tags.yml create mode 100644 modules/nf-core/ssuissero/tests/main.nf.test create mode 100644 modules/nf-core/ssuissero/tests/main.nf.test.snap create mode 100644 modules/nf-core/stadeniolib/scramble/tests/main.nf.test create mode 100644 modules/nf-core/stadeniolib/scramble/tests/main.nf.test.snap create mode 100644 modules/nf-core/staphopiasccmec/tests/main.nf.test create mode 100644 modules/nf-core/staphopiasccmec/tests/main.nf.test.snap create mode 100644 modules/nf-core/staphopiasccmec/tests/nextflow.config create mode 100644 modules/nf-core/star/starsolo/tests/NO_FILE create mode 100644 modules/nf-core/star/starsolo/tests/main.nf.test create mode 100644 modules/nf-core/star/starsolo/tests/main.nf.test.snap create mode 100644 modules/nf-core/star/starsolo/tests/tags.yml create mode 100644 modules/nf-core/stardist/environment.yml create mode 100644 modules/nf-core/stardist/main.nf create mode 100644 modules/nf-core/stardist/meta.yml create mode 100644 modules/nf-core/stardist/tests/main.nf.test create mode 100644 modules/nf-core/stardist/tests/main.nf.test.snap create mode 100644 modules/nf-core/stardist/tests/nextflow.config create mode 100644 modules/nf-core/stranger/tests/main.nf.test create mode 100644 modules/nf-core/stranger/tests/main.nf.test.snap create mode 100644 modules/nf-core/stranger/tests/nextflow.config create mode 100644 modules/nf-core/stranger/tests/tags.yml delete mode 100644 modules/nf-core/strelka/germline/tests/tags.yml create mode 100644 modules/nf-core/survivor/merge/tests/main.nf.test create mode 100644 modules/nf-core/survivor/merge/tests/main.nf.test.snap create mode 100644 modules/nf-core/svtk/countsvtypes/tests/main.nf.test create mode 100644 modules/nf-core/svtk/countsvtypes/tests/main.nf.test.snap create mode 100644 modules/nf-core/svtyper/svtyper/tests/main.nf.test create mode 100644 modules/nf-core/svtyper/svtyper/tests/main.nf.test.snap create mode 100644 modules/nf-core/tailfindr/tests/main.nf.test create mode 100644 modules/nf-core/tailfindr/tests/main.nf.test.snap create mode 100644 modules/nf-core/tbprofiler/profile/tests/main.nf.test create mode 100644 modules/nf-core/tbprofiler/profile/tests/main.nf.test.snap create mode 100644 modules/nf-core/tbprofiler/profile/tests/nextflow.illumina.config create mode 100644 modules/nf-core/tbprofiler/profile/tests/nextflow.nanopore.config create mode 100644 modules/nf-core/tcoffee/consensus/environment.yml create mode 100644 modules/nf-core/tcoffee/consensus/main.nf create mode 100644 modules/nf-core/tcoffee/consensus/meta.yml create mode 100644 modules/nf-core/tcoffee/consensus/tests/main.nf.test create mode 100644 modules/nf-core/tcoffee/consensus/tests/main.nf.test.snap create mode 100644 modules/nf-core/tcoffee/consensus/tests/sequence.config create mode 100644 modules/nf-core/tcoffee/consensus/tests/tags.yml create mode 100644 modules/nf-core/tiara/tiara/tests/main.nf.test create mode 100644 modules/nf-core/tiara/tiara/tests/main.nf.test.snap create mode 100644 modules/nf-core/tiara/tiara/tests/nextflow.config create mode 100644 modules/nf-core/transdecoder/longorf/tests/main.nf.test create mode 100644 modules/nf-core/transdecoder/longorf/tests/main.nf.test.snap create mode 100644 modules/nf-core/ucsc/bigwigaverageoverbed/tests/main.nf.test create mode 100644 modules/nf-core/ucsc/bigwigaverageoverbed/tests/main.nf.test.snap create mode 100644 modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test create mode 100644 modules/nf-core/ucsc/gtftogenepred/tests/main.nf.test.snap create mode 100644 modules/nf-core/ucsc/gtftogenepred/tests/nextflow.config create mode 100644 modules/nf-core/ucsc/liftover/tests/main.nf.test create mode 100644 modules/nf-core/ucsc/liftover/tests/main.nf.test.snap create mode 100644 modules/nf-core/ucsc/liftover/tests/tags.yml create mode 100644 modules/nf-core/ucsc/liftover/tests/test.config create mode 100644 modules/nf-core/ucsc/wigtobigwig/tests/main.nf.test create mode 100644 modules/nf-core/ucsc/wigtobigwig/tests/main.nf.test.snap create mode 100644 modules/nf-core/untarfiles/tests/main.nf.test create mode 100644 modules/nf-core/untarfiles/tests/main.nf.test.snap create mode 100644 modules/nf-core/unzip/tests/main.nf.test create mode 100644 modules/nf-core/unzip/tests/main.nf.test.snap create mode 100644 modules/nf-core/unzip/tests/tags.yml create mode 100644 modules/nf-core/unzipfiles/tests/main.nf.test create mode 100644 modules/nf-core/unzipfiles/tests/main.nf.test.snap create mode 100644 modules/nf-core/unzipfiles/tests/tags.yml create mode 100644 modules/nf-core/upd/tests/main.nf.test create mode 100644 modules/nf-core/upd/tests/main.nf.test.snap create mode 100644 modules/nf-core/upd/tests/nextflow.config create mode 100644 modules/nf-core/upp/align/environment.yml create mode 100644 modules/nf-core/upp/align/main.nf create mode 100644 modules/nf-core/upp/align/meta.yml create mode 100644 modules/nf-core/upp/align/tests/main.nf.test create mode 100644 modules/nf-core/upp/align/tests/main.nf.test.snap create mode 100644 modules/nf-core/upp/align/tests/nextflow.config create mode 100644 modules/nf-core/upp/align/tests/tags.yml create mode 100644 modules/nf-core/variantbam/tests/main.nf.test create mode 100644 modules/nf-core/variantbam/tests/main.nf.test.snap create mode 100644 modules/nf-core/varlociraptor/estimatealignmentproperties/tests/main.nf.test create mode 100644 modules/nf-core/varlociraptor/estimatealignmentproperties/tests/main.nf.test.snap create mode 100644 modules/nf-core/vcf2maf/tests/main.nf.test create mode 100644 modules/nf-core/vcf2maf/tests/main.nf.test.snap create mode 100644 modules/nf-core/vcf2maf/tests/nextflow.config create mode 100644 modules/nf-core/vcf2maf/tests/nextflow.withVEP.config create mode 100644 modules/nf-core/vcf2maf/tests/tags.yml create mode 100644 modules/nf-core/vcflib/vcfbreakmulti/tests/main.nf.test create mode 100644 modules/nf-core/vcflib/vcfbreakmulti/tests/main.nf.test.snap create mode 100644 modules/nf-core/vcflib/vcffilter/tests/main.nf.test create mode 100644 modules/nf-core/vcflib/vcffilter/tests/main.nf.test.snap create mode 100644 modules/nf-core/vcflib/vcffilter/tests/nextflow.config create mode 100644 modules/nf-core/vcflib/vcfuniq/tests/main.nf.test create mode 100644 modules/nf-core/vcflib/vcfuniq/tests/main.nf.test.snap create mode 100644 modules/nf-core/vcflib/vcfuniq/tests/nextflow.config create mode 100644 modules/nf-core/verifybamid/verifybamid/tests/main.nf.test create mode 100644 modules/nf-core/verifybamid/verifybamid/tests/main.nf.test.snap create mode 100644 modules/nf-core/verifybamid/verifybamid/tests/nextflow.config create mode 100644 modules/nf-core/vg/construct/tests/main.nf.test create mode 100644 modules/nf-core/vg/construct/tests/main.nf.test.snap create mode 100644 modules/nf-core/vg/deconstruct/tests/main.nf.test create mode 100644 modules/nf-core/vg/deconstruct/tests/main.nf.test.snap create mode 100644 modules/nf-core/vg/deconstruct/tests/nextflow.config create mode 100644 modules/nf-core/vg/index/tests/main.nf.test create mode 100644 modules/nf-core/vg/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/vrhyme/vrhyme/tests/main.nf.test create mode 100644 modules/nf-core/vrhyme/vrhyme/tests/main.nf.test.snap create mode 100644 modules/nf-core/vsearch/dereplicate/environment.yml create mode 100644 modules/nf-core/vsearch/dereplicate/main.nf create mode 100644 modules/nf-core/vsearch/dereplicate/meta.yml create mode 100644 modules/nf-core/vsearch/dereplicate/tests/main.nf.test create mode 100644 modules/nf-core/vsearch/dereplicate/tests/main.nf.test.snap create mode 100644 modules/nf-core/vsearch/fastqfilter/environment.yml create mode 100644 modules/nf-core/vsearch/fastqfilter/main.nf create mode 100644 modules/nf-core/vsearch/fastqfilter/meta.yml create mode 100644 modules/nf-core/vsearch/fastqfilter/tests/main.nf.test create mode 100644 modules/nf-core/vsearch/fastqfilter/tests/main.nf.test.snap create mode 100644 modules/nf-core/vsearch/fastqfilter/tests/nextflow.config create mode 100644 modules/nf-core/vsearch/sintax/tests/main.nf.test create mode 100644 modules/nf-core/vsearch/sintax/tests/main.nf.test.snap create mode 100644 modules/nf-core/vsearch/usearchglobal/tests/main.nf.test create mode 100644 modules/nf-core/vsearch/usearchglobal/tests/main.nf.test.snap create mode 100644 modules/nf-core/vt/decompose/tests/main.nf.test create mode 100644 modules/nf-core/vt/decompose/tests/main.nf.test.snap create mode 100644 modules/nf-core/vt/decompose/tests/nextflow.config create mode 100644 modules/nf-core/vt/normalize/tests/main.nf.test create mode 100644 modules/nf-core/vt/normalize/tests/main.nf.test.snap create mode 100644 modules/nf-core/vt/normalize/tests/nextflow.config create mode 100644 modules/nf-core/wgsim/tests/main.nf.test create mode 100644 modules/nf-core/wgsim/tests/main.nf.test.snap create mode 100644 modules/nf-core/wgsim/tests/seed.config create mode 100644 modules/nf-core/whamg/tests/main.nf.test create mode 100644 modules/nf-core/whamg/tests/main.nf.test.snap create mode 100644 modules/nf-core/whamg/tests/nextflow.config rename modules/nf-core/wittyer/tests/{test.config => nextflow.config} (100%) create mode 100644 modules/nf-core/yahs/tests/main.nf.test create mode 100644 modules/nf-core/yahs/tests/main.nf.test.snap create mode 100644 modules/nf-core/yahs/tests/nextflow.config create mode 100644 modules/nf-core/yak/count/environment.yml create mode 100644 modules/nf-core/yak/count/main.nf create mode 100644 modules/nf-core/yak/count/meta.yml create mode 100644 modules/nf-core/yak/count/tests/main.nf.test create mode 100644 modules/nf-core/yak/count/tests/main.nf.test.snap create mode 100644 modules/nf-core/yak/count/tests/tags.yml create mode 100644 modules/nf-core/yara/index/tests/main.nf.test create mode 100644 modules/nf-core/yara/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/yara/mapper/tests/main.nf.test create mode 100644 modules/nf-core/yara/mapper/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_stats_mirna_mirtop/main.nf create mode 100644 subworkflows/nf-core/bam_stats_mirna_mirtop/meta.yml create mode 100644 subworkflows/nf-core/bam_stats_mirna_mirtop/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_stats_mirna_mirtop/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_stats_mirna_mirtop/tests/nextflow.config create mode 100644 subworkflows/nf-core/bam_subsampledepth_samtools/main.nf create mode 100644 subworkflows/nf-core/bam_subsampledepth_samtools/meta.yml create mode 100644 subworkflows/nf-core/bam_subsampledepth_samtools/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_subsampledepth_samtools/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_subsampledepth_samtools/tests/nextflow.config create mode 100644 subworkflows/nf-core/bam_subsampledepth_samtools/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_tumor_normal_somatic_variant_calling_strelka/main.nf create mode 100644 subworkflows/nf-core/bam_tumor_normal_somatic_variant_calling_strelka/meta.yml create mode 100644 subworkflows/nf-core/bam_tumor_normal_somatic_variant_calling_strelka/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_tumor_normal_somatic_variant_calling_strelka/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_tumor_normal_somatic_variant_calling_strelka/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_variant_demix_boot_freyja/tests/nextflow.config create mode 100644 subworkflows/nf-core/deepvariant/README.md create mode 100644 subworkflows/nf-core/deepvariant/main.nf create mode 100644 subworkflows/nf-core/deepvariant/meta.yml create mode 100644 subworkflows/nf-core/deepvariant/tests/main.nf.test create mode 100644 subworkflows/nf-core/deepvariant/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/deepvariant/tests/nextflow.config create mode 100644 subworkflows/nf-core/deepvariant/tests/tags.yml create mode 100644 subworkflows/nf-core/fasta_binning_concoct/tests/main.nf.test create mode 100644 subworkflows/nf-core/fasta_binning_concoct/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fasta_hmmsearch_rank_fastas/main.nf create mode 100644 subworkflows/nf-core/fasta_hmmsearch_rank_fastas/meta.yml create mode 100644 subworkflows/nf-core/fasta_hmmsearch_rank_fastas/tests/main.nf.test create mode 100644 subworkflows/nf-core/fasta_hmmsearch_rank_fastas/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fasta_hmmsearch_rank_fastas/tests/tags.yml create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/meta.yml create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.function.nf.test.snap create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test create mode 100644 subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/tests/main.nf.test.snap rename subworkflows/nf-core/{preprocess_rnaseq => fastq_qc_trim_filter_setstrandedness}/tests/nextflow.config (100%) rename subworkflows/nf-core/{preprocess_rnaseq => fastq_qc_trim_filter_setstrandedness}/tests/tags.yml (100%) delete mode 100644 subworkflows/nf-core/preprocess_rnaseq/tests/main.nf.test delete mode 100644 subworkflows/nf-core/preprocess_rnaseq/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/main.nf create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/meta.yml create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config create mode 100644 subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json delete mode 100644 tests/modules/nf-core/adapterremovalfixprefix/main.nf delete mode 100644 tests/modules/nf-core/adapterremovalfixprefix/nextflow.config delete mode 100644 tests/modules/nf-core/adapterremovalfixprefix/test.yml delete mode 100644 tests/modules/nf-core/affy/justrma/main.nf delete mode 100644 tests/modules/nf-core/affy/justrma/nextflow.config delete mode 100644 tests/modules/nf-core/affy/justrma/test.yml delete mode 100644 tests/modules/nf-core/angsd/contamination/main.nf delete mode 100644 tests/modules/nf-core/angsd/contamination/nextflow.config delete mode 100644 tests/modules/nf-core/angsd/contamination/test.yml delete mode 100644 tests/modules/nf-core/angsd/docounts/main.nf delete mode 100644 tests/modules/nf-core/angsd/docounts/nextflow.config delete mode 100644 tests/modules/nf-core/angsd/docounts/test.yml delete mode 100644 tests/modules/nf-core/arcashla/extract/main.nf delete mode 100644 tests/modules/nf-core/arcashla/extract/nextflow.config delete mode 100644 tests/modules/nf-core/arcashla/extract/test.yml delete mode 100644 tests/modules/nf-core/ariba/getref/main.nf delete mode 100644 tests/modules/nf-core/ariba/getref/test.yml delete mode 100644 tests/modules/nf-core/arriba/download/main.nf delete mode 100644 tests/modules/nf-core/arriba/download/nextflow.config delete mode 100644 tests/modules/nf-core/arriba/download/test.yml delete mode 100644 tests/modules/nf-core/atlas/call/main.nf delete mode 100644 tests/modules/nf-core/atlas/call/nextflow.config delete mode 100644 tests/modules/nf-core/atlas/call/test.yml delete mode 100644 tests/modules/nf-core/atlas/pmd/main.nf delete mode 100644 tests/modules/nf-core/atlas/pmd/nextflow.config delete mode 100644 tests/modules/nf-core/atlas/pmd/test.yml delete mode 100644 tests/modules/nf-core/atlas/recal/main.nf delete mode 100644 tests/modules/nf-core/atlas/recal/nextflow.config delete mode 100644 tests/modules/nf-core/atlas/recal/test.yml delete mode 100644 tests/modules/nf-core/atlas/splitmerge/main.nf delete mode 100644 tests/modules/nf-core/atlas/splitmerge/nextflow.config delete mode 100644 tests/modules/nf-core/atlas/splitmerge/test.yml delete mode 100644 tests/modules/nf-core/bam2fastx/bam2fastq/main.nf delete mode 100644 tests/modules/nf-core/bam2fastx/bam2fastq/nextflow.config delete mode 100644 tests/modules/nf-core/bam2fastx/bam2fastq/test.yml delete mode 100644 tests/modules/nf-core/bamtools/stats/main.nf delete mode 100644 tests/modules/nf-core/bamtools/stats/nextflow.config delete mode 100644 tests/modules/nf-core/bamtools/stats/test.yml delete mode 100644 tests/modules/nf-core/bamutil/trimbam/main.nf delete mode 100644 tests/modules/nf-core/bamutil/trimbam/nextflow.config delete mode 100644 tests/modules/nf-core/bamutil/trimbam/test.yml delete mode 100644 tests/modules/nf-core/bandage/image/main.nf delete mode 100644 tests/modules/nf-core/bandage/image/nextflow.config delete mode 100644 tests/modules/nf-core/bandage/image/test.yml delete mode 100644 tests/modules/nf-core/barrnap/main.nf delete mode 100644 tests/modules/nf-core/barrnap/nextflow.config delete mode 100644 tests/modules/nf-core/barrnap/test.yml delete mode 100644 tests/modules/nf-core/bbmap/bbnorm/main.nf delete mode 100644 tests/modules/nf-core/bbmap/bbnorm/nextflow.config delete mode 100644 tests/modules/nf-core/bbmap/bbnorm/test.yml delete mode 100644 tests/modules/nf-core/bbmap/clumpify/main.nf delete mode 100644 tests/modules/nf-core/bbmap/clumpify/nextflow.config delete mode 100644 tests/modules/nf-core/bbmap/clumpify/test.yml delete mode 100644 tests/modules/nf-core/bbmap/index/main.nf delete mode 100644 tests/modules/nf-core/bbmap/index/nextflow.config delete mode 100644 tests/modules/nf-core/bbmap/index/test.yml delete mode 100644 tests/modules/nf-core/bbmap/pileup/main.nf delete mode 100644 tests/modules/nf-core/bbmap/pileup/nextflow.config delete mode 100644 tests/modules/nf-core/bbmap/pileup/test.yml delete mode 100644 tests/modules/nf-core/bbmap/sendsketch/main.nf delete mode 100644 tests/modules/nf-core/bbmap/sendsketch/nextflow.config delete mode 100644 tests/modules/nf-core/bbmap/sendsketch/test.yml delete mode 100644 tests/modules/nf-core/bcftools/consensus/main.nf delete mode 100644 tests/modules/nf-core/bcftools/consensus/nextflow.config delete mode 100644 tests/modules/nf-core/bcftools/consensus/test.yml delete mode 100644 tests/modules/nf-core/bcftools/merge/main.nf delete mode 100644 tests/modules/nf-core/bcftools/merge/nextflow.config delete mode 100644 tests/modules/nf-core/bcftools/merge/test.yml delete mode 100644 tests/modules/nf-core/bcftools/pluginsplit/main.nf delete mode 100644 tests/modules/nf-core/bcftools/pluginsplit/nextflow.config delete mode 100644 tests/modules/nf-core/bcftools/pluginsplit/test.yml delete mode 100644 tests/modules/nf-core/bcftools/roh/main.nf delete mode 100644 tests/modules/nf-core/bcftools/roh/nextflow.config delete mode 100644 tests/modules/nf-core/bcftools/roh/test.yml delete mode 100644 tests/modules/nf-core/bcftools/split/main.nf delete mode 100644 tests/modules/nf-core/bcftools/split/nextflow.config delete mode 100644 tests/modules/nf-core/bcftools/split/test.yml delete mode 100644 tests/modules/nf-core/beagle5/beagle/main.nf delete mode 100644 tests/modules/nf-core/beagle5/beagle/nextflow.config delete mode 100644 tests/modules/nf-core/beagle5/beagle/test.yml delete mode 100644 tests/modules/nf-core/bedtools/groupby/main.nf delete mode 100644 tests/modules/nf-core/bedtools/groupby/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/groupby/test.yml delete mode 100644 tests/modules/nf-core/bedtools/jaccard/main.nf delete mode 100644 tests/modules/nf-core/bedtools/jaccard/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/jaccard/test.yml delete mode 100644 tests/modules/nf-core/bedtools/makewindows/main.nf delete mode 100644 tests/modules/nf-core/bedtools/makewindows/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/makewindows/test.yml delete mode 100644 tests/modules/nf-core/bedtools/maskfasta/main.nf delete mode 100644 tests/modules/nf-core/bedtools/maskfasta/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/maskfasta/test.yml delete mode 100644 tests/modules/nf-core/bedtools/multiinter/main.nf delete mode 100644 tests/modules/nf-core/bedtools/multiinter/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/multiinter/test.yml delete mode 100644 tests/modules/nf-core/bedtools/shift/main.nf delete mode 100644 tests/modules/nf-core/bedtools/shift/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/shift/test.yml delete mode 100644 tests/modules/nf-core/bedtools/slop/main.nf delete mode 100644 tests/modules/nf-core/bedtools/slop/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/slop/test.yml delete mode 100644 tests/modules/nf-core/bedtools/split/main.nf delete mode 100644 tests/modules/nf-core/bedtools/split/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/split/test.yml delete mode 100644 tests/modules/nf-core/bedtools/subtract/main.nf delete mode 100644 tests/modules/nf-core/bedtools/subtract/nextflow.config delete mode 100644 tests/modules/nf-core/bedtools/subtract/test.yml delete mode 100644 tests/modules/nf-core/bioawk/main.nf delete mode 100644 tests/modules/nf-core/bioawk/nextflow.config delete mode 100644 tests/modules/nf-core/bioawk/test.yml delete mode 100644 tests/modules/nf-core/biobambam/bammarkduplicates2/main.nf delete mode 100644 tests/modules/nf-core/biobambam/bammarkduplicates2/nextflow.config delete mode 100644 tests/modules/nf-core/biobambam/bammarkduplicates2/test.yml delete mode 100644 tests/modules/nf-core/biobambam/bammerge/main.nf delete mode 100644 tests/modules/nf-core/biobambam/bammerge/nextflow.config delete mode 100644 tests/modules/nf-core/biobambam/bammerge/test.yml delete mode 100644 tests/modules/nf-core/biobambam/bamsormadup/main.nf delete mode 100644 tests/modules/nf-core/biobambam/bamsormadup/nextflow.config delete mode 100644 tests/modules/nf-core/biobambam/bamsormadup/test.yml delete mode 100644 tests/modules/nf-core/biscuit/epiread/main.nf delete mode 100644 tests/modules/nf-core/biscuit/epiread/nextflow.config delete mode 100644 tests/modules/nf-core/biscuit/epiread/test.yml delete mode 100644 tests/modules/nf-core/biscuit/index/main.nf delete mode 100644 tests/modules/nf-core/biscuit/index/nextflow.config delete mode 100644 tests/modules/nf-core/biscuit/index/test.yml delete mode 100644 tests/modules/nf-core/biscuit/pileup/main.nf delete mode 100644 tests/modules/nf-core/biscuit/pileup/nextflow.config delete mode 100644 tests/modules/nf-core/biscuit/pileup/test.yml delete mode 100644 tests/modules/nf-core/biscuit/qc/main.nf delete mode 100644 tests/modules/nf-core/biscuit/qc/nextflow.config delete mode 100644 tests/modules/nf-core/biscuit/qc/test.yml delete mode 100644 tests/modules/nf-core/biscuit/vcf2bed/main.nf delete mode 100644 tests/modules/nf-core/biscuit/vcf2bed/nextflow.config delete mode 100644 tests/modules/nf-core/biscuit/vcf2bed/test.yml delete mode 100644 tests/modules/nf-core/blat/main.nf delete mode 100644 tests/modules/nf-core/blat/nextflow.config delete mode 100644 tests/modules/nf-core/blat/test.yml delete mode 100644 tests/modules/nf-core/bowtie/align/main.nf delete mode 100644 tests/modules/nf-core/bowtie/align/nextflow.config delete mode 100644 tests/modules/nf-core/bowtie/align/test.yml delete mode 120000 tests/modules/nf-core/bowtie/build delete mode 100644 tests/modules/nf-core/bowtie/build_test/main.nf delete mode 100644 tests/modules/nf-core/bowtie/build_test/nextflow.config delete mode 100644 tests/modules/nf-core/bowtie/build_test/test.yml delete mode 100644 tests/modules/nf-core/bwameth/align/main.nf delete mode 100644 tests/modules/nf-core/bwameth/align/nextflow.config delete mode 100644 tests/modules/nf-core/bwameth/align/test.yml delete mode 100644 tests/modules/nf-core/bwameth/index/main.nf delete mode 100644 tests/modules/nf-core/bwameth/index/nextflow.config delete mode 100644 tests/modules/nf-core/bwameth/index/test.yml delete mode 100644 tests/modules/nf-core/calder2/main.nf delete mode 100644 tests/modules/nf-core/calder2/nextflow.config delete mode 100644 tests/modules/nf-core/calder2/test.yml delete mode 100644 tests/modules/nf-core/cdhit/cdhitest/main.nf delete mode 100644 tests/modules/nf-core/cdhit/cdhitest/nextflow.config delete mode 100644 tests/modules/nf-core/cdhit/cdhitest/test.yml delete mode 100644 tests/modules/nf-core/cellrangerarc/mkgtf/main.nf delete mode 100644 tests/modules/nf-core/cellrangerarc/mkgtf/nextflow.config delete mode 100644 tests/modules/nf-core/cellrangerarc/mkgtf/test.yml delete mode 100644 tests/modules/nf-core/circexplorer2/annotate/main.nf delete mode 100644 tests/modules/nf-core/circexplorer2/annotate/nextflow.config delete mode 100644 tests/modules/nf-core/circexplorer2/annotate/test.yml delete mode 100644 tests/modules/nf-core/circexplorer2/parse/main.nf delete mode 100644 tests/modules/nf-core/circexplorer2/parse/nextflow.config delete mode 100644 tests/modules/nf-core/circexplorer2/parse/test.yml delete mode 100644 tests/modules/nf-core/clonalframeml/main.nf delete mode 100644 tests/modules/nf-core/clonalframeml/nextflow.config delete mode 100644 tests/modules/nf-core/clonalframeml/test.yml delete mode 100644 tests/modules/nf-core/cmseq/polymut/main.nf delete mode 100644 tests/modules/nf-core/cmseq/polymut/nextflow.config delete mode 100644 tests/modules/nf-core/cmseq/polymut/test.yml delete mode 100644 tests/modules/nf-core/cnvkit/access/main.nf delete mode 100644 tests/modules/nf-core/cnvkit/access/nextflow.config delete mode 100644 tests/modules/nf-core/cnvkit/access/test.yml delete mode 100644 tests/modules/nf-core/cnvkit/call/main.nf delete mode 100644 tests/modules/nf-core/cnvkit/call/nextflow.config delete mode 100644 tests/modules/nf-core/cnvkit/call/test.yml delete mode 100755 tests/modules/nf-core/cnvkit/genemetrics/main.nf delete mode 100755 tests/modules/nf-core/cnvkit/genemetrics/nextflow.config delete mode 100755 tests/modules/nf-core/cnvkit/genemetrics/test.yml delete mode 100644 tests/modules/nf-core/cnvkit/target/main.nf delete mode 100644 tests/modules/nf-core/cnvkit/target/nextflow.config delete mode 100644 tests/modules/nf-core/cnvkit/target/test.yml delete mode 100644 tests/modules/nf-core/cnvpytor/callcnvs/main.nf delete mode 100644 tests/modules/nf-core/cnvpytor/callcnvs/nextflow.config delete mode 100644 tests/modules/nf-core/cnvpytor/callcnvs/test.yml delete mode 100644 tests/modules/nf-core/cnvpytor/importreaddepth/main.nf delete mode 100644 tests/modules/nf-core/cnvpytor/importreaddepth/nextflow.config delete mode 100644 tests/modules/nf-core/cnvpytor/importreaddepth/test.yml delete mode 100644 tests/modules/nf-core/cnvpytor/view/main.nf delete mode 100644 tests/modules/nf-core/cnvpytor/view/nextflow.config delete mode 100644 tests/modules/nf-core/cnvpytor/view/test.yml delete mode 100644 tests/modules/nf-core/concoct/concoct/main.nf delete mode 100644 tests/modules/nf-core/concoct/concoct/nextflow.config delete mode 100644 tests/modules/nf-core/concoct/concoct/test.yml delete mode 100644 tests/modules/nf-core/concoct/concoctcoveragetable/main.nf delete mode 100644 tests/modules/nf-core/concoct/concoctcoveragetable/nextflow.config delete mode 100644 tests/modules/nf-core/concoct/concoctcoveragetable/test.yml delete mode 100644 tests/modules/nf-core/concoct/cutupfasta/main.nf delete mode 100644 tests/modules/nf-core/concoct/cutupfasta/nextflow.config delete mode 100644 tests/modules/nf-core/concoct/cutupfasta/test.yml delete mode 100644 tests/modules/nf-core/concoct/extractfastabins/main.nf delete mode 100644 tests/modules/nf-core/concoct/extractfastabins/nextflow.config delete mode 100644 tests/modules/nf-core/concoct/extractfastabins/test.yml delete mode 100644 tests/modules/nf-core/concoct/mergecutupclustering/main.nf delete mode 100644 tests/modules/nf-core/concoct/mergecutupclustering/nextflow.config delete mode 100644 tests/modules/nf-core/concoct/mergecutupclustering/test.yml delete mode 100644 tests/modules/nf-core/cooler/digest/main.nf delete mode 100644 tests/modules/nf-core/cooler/digest/nextflow.config delete mode 100644 tests/modules/nf-core/cooler/digest/test.yml delete mode 100644 tests/modules/nf-core/cooler/dump/main.nf delete mode 100644 tests/modules/nf-core/cooler/dump/nextflow.config delete mode 100644 tests/modules/nf-core/cooler/dump/test.yml delete mode 100644 tests/modules/nf-core/cooler/makebins/main.nf delete mode 100644 tests/modules/nf-core/cooler/makebins/nextflow.config delete mode 100644 tests/modules/nf-core/cooler/makebins/test.yml delete mode 100644 tests/modules/nf-core/crumble/main.nf delete mode 100644 tests/modules/nf-core/crumble/nextflow.config delete mode 100644 tests/modules/nf-core/crumble/test.yml delete mode 100644 tests/modules/nf-core/deeptools/bamcoverage/main.nf delete mode 100644 tests/modules/nf-core/deeptools/bamcoverage/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/bamcoverage/test.yml delete mode 100644 tests/modules/nf-core/deeptools/computematrix/main.nf delete mode 100644 tests/modules/nf-core/deeptools/computematrix/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/computematrix/test.yml delete mode 100644 tests/modules/nf-core/deeptools/multibamsummary/main.nf delete mode 100644 tests/modules/nf-core/deeptools/multibamsummary/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/multibamsummary/test.yml delete mode 100644 tests/modules/nf-core/deeptools/plotcorrelation/main.nf delete mode 100644 tests/modules/nf-core/deeptools/plotcorrelation/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/plotcorrelation/test.yml delete mode 100644 tests/modules/nf-core/deeptools/plotfingerprint/main.nf delete mode 100644 tests/modules/nf-core/deeptools/plotfingerprint/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/plotfingerprint/test.yml delete mode 100644 tests/modules/nf-core/deeptools/plotheatmap/main.nf delete mode 100644 tests/modules/nf-core/deeptools/plotheatmap/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/plotheatmap/test.yml delete mode 100644 tests/modules/nf-core/deeptools/plotpca/main.nf delete mode 100644 tests/modules/nf-core/deeptools/plotpca/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/plotpca/test.yml delete mode 100644 tests/modules/nf-core/deeptools/plotprofile/main.nf delete mode 100644 tests/modules/nf-core/deeptools/plotprofile/nextflow.config delete mode 100644 tests/modules/nf-core/deeptools/plotprofile/test.yml delete mode 100644 tests/modules/nf-core/dshbio/exportsegments/main.nf delete mode 100644 tests/modules/nf-core/dshbio/exportsegments/nextflow.config delete mode 100644 tests/modules/nf-core/dshbio/exportsegments/test.yml delete mode 100644 tests/modules/nf-core/dshbio/filterbed/main.nf delete mode 100644 tests/modules/nf-core/dshbio/filterbed/nextflow.config delete mode 100644 tests/modules/nf-core/dshbio/filterbed/test.yml delete mode 100644 tests/modules/nf-core/dshbio/filtergff3/main.nf delete mode 100644 tests/modules/nf-core/dshbio/filtergff3/nextflow.config delete mode 100644 tests/modules/nf-core/dshbio/filtergff3/test.yml delete mode 100644 tests/modules/nf-core/dshbio/splitbed/main.nf delete mode 100644 tests/modules/nf-core/dshbio/splitbed/nextflow.config delete mode 100644 tests/modules/nf-core/dshbio/splitbed/test.yml delete mode 100644 tests/modules/nf-core/dshbio/splitgff3/main.nf delete mode 100644 tests/modules/nf-core/dshbio/splitgff3/nextflow.config delete mode 100644 tests/modules/nf-core/dshbio/splitgff3/test.yml delete mode 100644 tests/modules/nf-core/ectyper/main.nf delete mode 100644 tests/modules/nf-core/ectyper/nextflow.config delete mode 100644 tests/modules/nf-core/ectyper/test.yml delete mode 100644 tests/modules/nf-core/eido/convert/main.nf delete mode 100644 tests/modules/nf-core/eido/convert/nextflow.config delete mode 100644 tests/modules/nf-core/eido/convert/test.yml delete mode 100644 tests/modules/nf-core/eido/validate/main.nf delete mode 100644 tests/modules/nf-core/eido/validate/nextflow.config delete mode 100644 tests/modules/nf-core/eido/validate/test.yml delete mode 100644 tests/modules/nf-core/elprep/filter/main.nf delete mode 100644 tests/modules/nf-core/elprep/filter/nextflow.config delete mode 100644 tests/modules/nf-core/elprep/filter/test.yml delete mode 100644 tests/modules/nf-core/elprep/split/main.nf delete mode 100644 tests/modules/nf-core/elprep/split/nextflow.config delete mode 100644 tests/modules/nf-core/elprep/split/test.yml delete mode 100644 tests/modules/nf-core/emboss/cons/main.nf delete mode 100644 tests/modules/nf-core/emboss/cons/nextflow.config delete mode 100644 tests/modules/nf-core/emboss/cons/test.yml delete mode 100644 tests/modules/nf-core/emboss/revseq/main.nf delete mode 100644 tests/modules/nf-core/emboss/revseq/nextflow.config delete mode 100644 tests/modules/nf-core/emboss/revseq/test.yml delete mode 100644 tests/modules/nf-core/emmtyper/main.nf delete mode 100644 tests/modules/nf-core/emmtyper/nextflow.config delete mode 100644 tests/modules/nf-core/emmtyper/test.yml delete mode 100644 tests/modules/nf-core/ensemblvep/filtervep/main.nf delete mode 100644 tests/modules/nf-core/ensemblvep/filtervep/nextflow.config delete mode 100644 tests/modules/nf-core/ensemblvep/filtervep/test.yml delete mode 100644 tests/modules/nf-core/entrezdirect/esummary/main.nf delete mode 100644 tests/modules/nf-core/entrezdirect/esummary/nextflow.config delete mode 100644 tests/modules/nf-core/entrezdirect/esummary/test.yml delete mode 100644 tests/modules/nf-core/epang/place/main.nf delete mode 100644 tests/modules/nf-core/epang/place/nextflow.config delete mode 100644 tests/modules/nf-core/epang/place/test.yml delete mode 100644 tests/modules/nf-core/estsfs/main.nf delete mode 100644 tests/modules/nf-core/estsfs/nextflow.config delete mode 100644 tests/modules/nf-core/estsfs/test.yml delete mode 100644 tests/modules/nf-core/expansionhunterdenovo/profile/main.nf delete mode 100644 tests/modules/nf-core/expansionhunterdenovo/profile/nextflow.config delete mode 100644 tests/modules/nf-core/expansionhunterdenovo/profile/test.yml delete mode 100644 tests/modules/nf-core/fastawindows/main.nf delete mode 100644 tests/modules/nf-core/fastawindows/nextflow.config delete mode 100644 tests/modules/nf-core/fastawindows/test.yml delete mode 100644 tests/modules/nf-core/fasttree/main.nf delete mode 100644 tests/modules/nf-core/fasttree/nextflow.config delete mode 100644 tests/modules/nf-core/fasttree/test.yml delete mode 100644 tests/modules/nf-core/ffq/main.nf delete mode 100644 tests/modules/nf-core/ffq/nextflow.config delete mode 100644 tests/modules/nf-core/ffq/test.yml delete mode 100644 tests/modules/nf-core/fgbio/callduplexconsensusreads/main.nf delete mode 100644 tests/modules/nf-core/fgbio/callduplexconsensusreads/nextflow.config delete mode 100644 tests/modules/nf-core/fgbio/callduplexconsensusreads/test.yml delete mode 100644 tests/modules/nf-core/fgbio/callmolecularconsensusreads/main.nf delete mode 100644 tests/modules/nf-core/fgbio/callmolecularconsensusreads/nextflow.config delete mode 100644 tests/modules/nf-core/fgbio/callmolecularconsensusreads/test.yml delete mode 100644 tests/modules/nf-core/fgbio/filterconsensusreads/main.nf delete mode 100644 tests/modules/nf-core/fgbio/filterconsensusreads/nextflow.config delete mode 100644 tests/modules/nf-core/fgbio/filterconsensusreads/test.yml delete mode 100644 tests/modules/nf-core/fgbio/groupreadsbyumi/main.nf delete mode 100644 tests/modules/nf-core/fgbio/groupreadsbyumi/nextflow.config delete mode 100644 tests/modules/nf-core/fgbio/groupreadsbyumi/test.yml delete mode 100644 tests/modules/nf-core/fgbio/sortbam/main.nf delete mode 100644 tests/modules/nf-core/fgbio/sortbam/nextflow.config delete mode 100644 tests/modules/nf-core/fgbio/sortbam/test.yml delete mode 100644 tests/modules/nf-core/fgbio/zipperbams/main.nf delete mode 100644 tests/modules/nf-core/fgbio/zipperbams/nextflow.config delete mode 100644 tests/modules/nf-core/fgbio/zipperbams/test.yml delete mode 100644 tests/modules/nf-core/filtlong/main.nf delete mode 100644 tests/modules/nf-core/filtlong/nextflow.config delete mode 100644 tests/modules/nf-core/filtlong/test.yml delete mode 100644 tests/modules/nf-core/gamma/gamma/main.nf delete mode 100644 tests/modules/nf-core/gamma/gamma/nextflow.config delete mode 100644 tests/modules/nf-core/gamma/gamma/test.yml delete mode 100644 tests/modules/nf-core/gappa/examineassign/main.nf delete mode 100644 tests/modules/nf-core/gappa/examineassign/nextflow.config delete mode 100644 tests/modules/nf-core/gappa/examineassign/test.yml delete mode 100644 tests/modules/nf-core/gappa/examinegraft/main.nf delete mode 100644 tests/modules/nf-core/gappa/examinegraft/nextflow.config delete mode 100644 tests/modules/nf-core/gappa/examinegraft/test.yml delete mode 100644 tests/modules/nf-core/gappa/examineheattree/main.nf delete mode 100644 tests/modules/nf-core/gappa/examineheattree/nextflow.config delete mode 100644 tests/modules/nf-core/gappa/examineheattree/test.yml delete mode 100644 tests/modules/nf-core/gatk/realignertargetcreator/main.nf delete mode 100644 tests/modules/nf-core/gatk/realignertargetcreator/nextflow.config delete mode 100644 tests/modules/nf-core/gatk/realignertargetcreator/test.yml delete mode 100644 tests/modules/nf-core/gatk/unifiedgenotyper/main.nf delete mode 100644 tests/modules/nf-core/gatk/unifiedgenotyper/nextflow.config delete mode 100644 tests/modules/nf-core/gatk/unifiedgenotyper/test.yml delete mode 100644 tests/modules/nf-core/gatk4/calibratedragstrmodel/main.nf delete mode 100644 tests/modules/nf-core/gatk4/calibratedragstrmodel/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/calibratedragstrmodel/test.yml delete mode 100644 tests/modules/nf-core/gatk4/collectreadcounts/main.nf delete mode 100644 tests/modules/nf-core/gatk4/collectreadcounts/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/collectreadcounts/test.yml delete mode 100644 tests/modules/nf-core/gatk4/collectsvevidence/main.nf delete mode 100644 tests/modules/nf-core/gatk4/collectsvevidence/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/collectsvevidence/test.yml delete mode 100644 tests/modules/nf-core/gatk4/composestrtablefile/main.nf delete mode 100644 tests/modules/nf-core/gatk4/composestrtablefile/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/composestrtablefile/test.yml delete mode 100644 tests/modules/nf-core/gatk4/condensedepthevidence/main.nf delete mode 100644 tests/modules/nf-core/gatk4/condensedepthevidence/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/condensedepthevidence/test.yml delete mode 100644 tests/modules/nf-core/gatk4/fastqtosam/main.nf delete mode 100644 tests/modules/nf-core/gatk4/fastqtosam/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/fastqtosam/test.yml delete mode 100644 tests/modules/nf-core/gatk4/filterintervals/main.nf delete mode 100644 tests/modules/nf-core/gatk4/filterintervals/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/filterintervals/test.yml delete mode 100644 tests/modules/nf-core/gatk4/gatherbqsrreports/main.nf delete mode 100644 tests/modules/nf-core/gatk4/gatherbqsrreports/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/gatherbqsrreports/test.yml delete mode 100644 tests/modules/nf-core/gatk4/gatherpileupsummaries/main.nf delete mode 100644 tests/modules/nf-core/gatk4/gatherpileupsummaries/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/gatherpileupsummaries/test.yml delete mode 100644 tests/modules/nf-core/gatk4/genotypegvcfs/main.nf delete mode 100644 tests/modules/nf-core/gatk4/genotypegvcfs/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/genotypegvcfs/test.yml delete mode 100644 tests/modules/nf-core/gatk4/learnreadorientationmodel/main.nf delete mode 100644 tests/modules/nf-core/gatk4/learnreadorientationmodel/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/learnreadorientationmodel/test.yml delete mode 100644 tests/modules/nf-core/gatk4/leftalignandtrimvariants/main.nf delete mode 100644 tests/modules/nf-core/gatk4/leftalignandtrimvariants/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/leftalignandtrimvariants/test.yml delete mode 100644 tests/modules/nf-core/gatk4/mergebamalignment/main.nf delete mode 100644 tests/modules/nf-core/gatk4/mergebamalignment/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/mergebamalignment/test.yml delete mode 100644 tests/modules/nf-core/gatk4/preprocessintervals/main.nf delete mode 100644 tests/modules/nf-core/gatk4/preprocessintervals/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/preprocessintervals/test.yml delete mode 100644 tests/modules/nf-core/gatk4/printreads/main.nf delete mode 100644 tests/modules/nf-core/gatk4/printreads/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/printreads/test.yml delete mode 100644 tests/modules/nf-core/gatk4/revertsam/main.nf delete mode 100644 tests/modules/nf-core/gatk4/revertsam/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/revertsam/test.yml delete mode 100644 tests/modules/nf-core/gatk4/samtofastq/main.nf delete mode 100644 tests/modules/nf-core/gatk4/samtofastq/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/samtofastq/test.yml delete mode 100644 tests/modules/nf-core/gatk4/shiftfasta/main.nf delete mode 100644 tests/modules/nf-core/gatk4/shiftfasta/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/shiftfasta/test.yml delete mode 100644 tests/modules/nf-core/gatk4/splitcram/main.nf delete mode 100644 tests/modules/nf-core/gatk4/splitcram/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/splitcram/test.yml delete mode 100644 tests/modules/nf-core/gatk4/splitintervals/main.nf delete mode 100644 tests/modules/nf-core/gatk4/splitintervals/nextflow.config delete mode 100644 tests/modules/nf-core/gatk4/splitintervals/test.yml delete mode 100644 tests/modules/nf-core/genmap/index/main.nf delete mode 100644 tests/modules/nf-core/genmap/index/nextflow.config delete mode 100644 tests/modules/nf-core/genmap/index/test.yml delete mode 100644 tests/modules/nf-core/geoquery/getgeo/main.nf delete mode 100644 tests/modules/nf-core/geoquery/getgeo/nextflow.config delete mode 100644 tests/modules/nf-core/geoquery/getgeo/test.yml delete mode 100644 tests/modules/nf-core/getorganelle/config/main.nf delete mode 100644 tests/modules/nf-core/getorganelle/config/nextflow.config delete mode 100644 tests/modules/nf-core/getorganelle/config/test.yml delete mode 100644 tests/modules/nf-core/getorganelle/fromreads/main.nf delete mode 100644 tests/modules/nf-core/getorganelle/fromreads/nextflow.config delete mode 100644 tests/modules/nf-core/getorganelle/fromreads/test.yml delete mode 100644 tests/modules/nf-core/gfaffix/main.nf delete mode 100644 tests/modules/nf-core/gfaffix/nextflow.config delete mode 100644 tests/modules/nf-core/gfaffix/test.yml delete mode 100644 tests/modules/nf-core/gfatools/gfa2fa/main.nf delete mode 100644 tests/modules/nf-core/gfatools/gfa2fa/nextflow.config delete mode 100644 tests/modules/nf-core/gfatools/gfa2fa/test.yml delete mode 100644 tests/modules/nf-core/gfatools/stat/main.nf delete mode 100644 tests/modules/nf-core/gfatools/stat/nextflow.config delete mode 100644 tests/modules/nf-core/gfatools/stat/test.yml delete mode 100644 tests/modules/nf-core/gffcompare/main.nf delete mode 100644 tests/modules/nf-core/gffcompare/nextflow.config delete mode 100644 tests/modules/nf-core/gffcompare/test.yml delete mode 100644 tests/modules/nf-core/goat/taxonsearch/main.nf delete mode 100644 tests/modules/nf-core/goat/taxonsearch/nextflow.config delete mode 100644 tests/modules/nf-core/goat/taxonsearch/test.yml delete mode 100644 tests/modules/nf-core/goleft/indexcov/main.nf delete mode 100644 tests/modules/nf-core/goleft/indexcov/nextflow.config delete mode 100644 tests/modules/nf-core/goleft/indexcov/test.yml delete mode 100644 tests/modules/nf-core/goleft/indexsplit/main.nf delete mode 100644 tests/modules/nf-core/goleft/indexsplit/nextflow.config delete mode 100644 tests/modules/nf-core/goleft/indexsplit/test.yml delete mode 100644 tests/modules/nf-core/graphmap2/index/main.nf delete mode 100644 tests/modules/nf-core/graphmap2/index/nextflow.config delete mode 100644 tests/modules/nf-core/graphmap2/index/test.yml delete mode 100644 tests/modules/nf-core/graphtyper/vcfconcatenate/main.nf delete mode 100644 tests/modules/nf-core/graphtyper/vcfconcatenate/nextflow.config delete mode 100644 tests/modules/nf-core/graphtyper/vcfconcatenate/test.yml delete mode 100644 tests/modules/nf-core/gridss/gridss/main.nf delete mode 100644 tests/modules/nf-core/gridss/gridss/nextflow.config delete mode 100644 tests/modules/nf-core/gridss/gridss/test.yml delete mode 100644 tests/modules/nf-core/gstama/collapse/main.nf delete mode 100644 tests/modules/nf-core/gstama/collapse/nextflow.config delete mode 100644 tests/modules/nf-core/gstama/collapse/test.yml delete mode 100644 tests/modules/nf-core/gstama/merge/main.nf delete mode 100644 tests/modules/nf-core/gstama/merge/nextflow.config delete mode 100644 tests/modules/nf-core/gstama/merge/test.yml delete mode 100644 tests/modules/nf-core/gstama/polyacleanup/main.nf delete mode 100644 tests/modules/nf-core/gstama/polyacleanup/nextflow.config delete mode 100644 tests/modules/nf-core/gstama/polyacleanup/test.yml delete mode 100644 tests/modules/nf-core/gubbins/main.nf delete mode 100644 tests/modules/nf-core/gubbins/nextflow.config delete mode 100644 tests/modules/nf-core/gubbins/test.yml delete mode 100644 tests/modules/nf-core/gunc/downloaddb/main.nf delete mode 100644 tests/modules/nf-core/gunc/downloaddb/nextflow.config delete mode 100644 tests/modules/nf-core/gunc/downloaddb/test.yml delete mode 100644 tests/modules/nf-core/gvcftools/extractvariants/main.nf delete mode 100644 tests/modules/nf-core/gvcftools/extractvariants/nextflow.config delete mode 100644 tests/modules/nf-core/gvcftools/extractvariants/test.yml delete mode 100644 tests/modules/nf-core/hapibd/main.nf delete mode 100644 tests/modules/nf-core/hapibd/nextflow.config delete mode 100644 tests/modules/nf-core/hapibd/test.yml delete mode 100644 tests/modules/nf-core/haplocheck/main.nf delete mode 100644 tests/modules/nf-core/haplocheck/nextflow.config delete mode 100644 tests/modules/nf-core/haplocheck/test.yml delete mode 100644 tests/modules/nf-core/haplogrep2/classify/main.nf delete mode 100644 tests/modules/nf-core/haplogrep2/classify/nextflow.config delete mode 100644 tests/modules/nf-core/haplogrep2/classify/test.yml delete mode 100644 tests/modules/nf-core/happy/happy/main.nf delete mode 100644 tests/modules/nf-core/happy/happy/nextflow.config delete mode 100644 tests/modules/nf-core/happy/happy/test.yml delete mode 100644 tests/modules/nf-core/happy/sompy/main.nf delete mode 100644 tests/modules/nf-core/happy/sompy/nextflow.config delete mode 100644 tests/modules/nf-core/happy/sompy/test.yml delete mode 100644 tests/modules/nf-core/hicap/main.nf delete mode 100644 tests/modules/nf-core/hicap/nextflow.config delete mode 100644 tests/modules/nf-core/hicap/test.yml delete mode 100644 tests/modules/nf-core/hmmer/hmmbuild/main.nf delete mode 100644 tests/modules/nf-core/hmmer/hmmbuild/nextflow.config delete mode 100644 tests/modules/nf-core/hmmer/hmmbuild/test.yml delete mode 100644 tests/modules/nf-core/hmmer/hmmfetch/main.nf delete mode 100644 tests/modules/nf-core/hmmer/hmmfetch/nextflow.config delete mode 100644 tests/modules/nf-core/hmmer/hmmfetch/test.yml delete mode 100644 tests/modules/nf-core/homer/annotatepeaks/main.nf delete mode 100644 tests/modules/nf-core/homer/annotatepeaks/nextflow.config delete mode 100644 tests/modules/nf-core/homer/annotatepeaks/test.yml delete mode 100644 tests/modules/nf-core/hpsuissero/main.nf delete mode 100644 tests/modules/nf-core/hpsuissero/nextflow.config delete mode 100644 tests/modules/nf-core/hpsuissero/test.yml delete mode 100644 tests/modules/nf-core/hypo/main.nf delete mode 100644 tests/modules/nf-core/hypo/nextflow.config delete mode 100644 tests/modules/nf-core/hypo/test.yml delete mode 100644 tests/modules/nf-core/ichorcna/createpon/main.nf delete mode 100644 tests/modules/nf-core/ichorcna/createpon/nextflow.config delete mode 100644 tests/modules/nf-core/ichorcna/createpon/test.yml delete mode 100644 tests/modules/nf-core/ichorcna/run/main.nf delete mode 100644 tests/modules/nf-core/ichorcna/run/nextflow.config delete mode 100644 tests/modules/nf-core/ichorcna/run/test.yml delete mode 100644 tests/modules/nf-core/icountmini/segment/main.nf delete mode 100644 tests/modules/nf-core/icountmini/segment/nextflow.config delete mode 100644 tests/modules/nf-core/icountmini/segment/test.yml delete mode 100644 tests/modules/nf-core/idr/main.nf delete mode 100644 tests/modules/nf-core/idr/nextflow.config delete mode 100644 tests/modules/nf-core/idr/test.yml delete mode 100644 tests/modules/nf-core/igv/js/main.nf delete mode 100644 tests/modules/nf-core/igv/js/nextflow.config delete mode 100644 tests/modules/nf-core/igv/js/test.yml delete mode 100644 tests/modules/nf-core/ismapper/main.nf delete mode 100644 tests/modules/nf-core/ismapper/nextflow.config delete mode 100644 tests/modules/nf-core/ismapper/test.yml delete mode 100644 tests/modules/nf-core/ivar/consensus/main.nf delete mode 100644 tests/modules/nf-core/ivar/consensus/nextflow.config delete mode 100644 tests/modules/nf-core/ivar/consensus/test.yml delete mode 100644 tests/modules/nf-core/ivar/trim/main.nf delete mode 100644 tests/modules/nf-core/ivar/trim/nextflow.config delete mode 100644 tests/modules/nf-core/ivar/trim/test.yml delete mode 100644 tests/modules/nf-core/ivar/variants/main.nf delete mode 100644 tests/modules/nf-core/ivar/variants/nextflow.config delete mode 100644 tests/modules/nf-core/ivar/variants/test.yml delete mode 100644 tests/modules/nf-core/kleborate/main.nf delete mode 100644 tests/modules/nf-core/kleborate/nextflow.config delete mode 100644 tests/modules/nf-core/kleborate/test.yml delete mode 100644 tests/modules/nf-core/krakentools/kreport2krona/main.nf delete mode 100644 tests/modules/nf-core/krakentools/kreport2krona/nextflow.config delete mode 100644 tests/modules/nf-core/krakentools/kreport2krona/test.yml delete mode 100644 tests/modules/nf-core/krona/ktupdatetaxonomy/main.nf delete mode 100644 tests/modules/nf-core/krona/ktupdatetaxonomy/nextflow.config delete mode 100644 tests/modules/nf-core/krona/ktupdatetaxonomy/test.yml delete mode 100644 tests/modules/nf-core/legsta/main.nf delete mode 100644 tests/modules/nf-core/legsta/nextflow.config delete mode 100644 tests/modules/nf-core/legsta/test.yml delete mode 100644 tests/modules/nf-core/lissero/main.nf delete mode 100644 tests/modules/nf-core/lissero/nextflow.config delete mode 100644 tests/modules/nf-core/lissero/test.yml delete mode 100644 tests/modules/nf-core/lofreq/call/main.nf delete mode 100644 tests/modules/nf-core/lofreq/call/nextflow.config delete mode 100644 tests/modules/nf-core/lofreq/call/test.yml delete mode 100644 tests/modules/nf-core/lofreq/callparallel/main.nf delete mode 100644 tests/modules/nf-core/lofreq/callparallel/nextflow.config delete mode 100644 tests/modules/nf-core/lofreq/callparallel/test.yml delete mode 100644 tests/modules/nf-core/lofreq/filter/main.nf delete mode 100644 tests/modules/nf-core/lofreq/filter/nextflow.config delete mode 100644 tests/modules/nf-core/lofreq/filter/test.yml delete mode 100644 tests/modules/nf-core/lofreq/indelqual/main.nf delete mode 100644 tests/modules/nf-core/lofreq/indelqual/nextflow.config delete mode 100644 tests/modules/nf-core/lofreq/indelqual/test.yml delete mode 100644 tests/modules/nf-core/lofreq/somatic/main.nf delete mode 100644 tests/modules/nf-core/lofreq/somatic/nextflow.config delete mode 100644 tests/modules/nf-core/lofreq/somatic/test.yml delete mode 100644 tests/modules/nf-core/macrel/contigs/main.nf delete mode 100644 tests/modules/nf-core/macrel/contigs/nextflow.config delete mode 100644 tests/modules/nf-core/macrel/contigs/test.yml delete mode 100644 tests/modules/nf-core/macs2/callpeak/main.nf delete mode 100644 tests/modules/nf-core/macs2/callpeak/nextflow.config delete mode 100644 tests/modules/nf-core/macs2/callpeak/test.yml delete mode 100644 tests/modules/nf-core/mapdamage2/main.nf delete mode 100644 tests/modules/nf-core/mapdamage2/nextflow.config delete mode 100644 tests/modules/nf-core/mapdamage2/test.yml delete mode 100644 tests/modules/nf-core/mash/dist/main.nf delete mode 100644 tests/modules/nf-core/mash/dist/nextflow.config delete mode 100644 tests/modules/nf-core/mash/dist/test.yml delete mode 100644 tests/modules/nf-core/mashtree/main.nf delete mode 100644 tests/modules/nf-core/mashtree/nextflow.config delete mode 100644 tests/modules/nf-core/mashtree/test.yml delete mode 100644 tests/modules/nf-core/maxbin2/main.nf delete mode 100644 tests/modules/nf-core/maxbin2/nextflow.config delete mode 100644 tests/modules/nf-core/maxbin2/test.yml delete mode 100644 tests/modules/nf-core/mcroni/main.nf delete mode 100644 tests/modules/nf-core/mcroni/nextflow.config delete mode 100644 tests/modules/nf-core/mcroni/test.yml delete mode 100644 tests/modules/nf-core/megahit/main.nf delete mode 100644 tests/modules/nf-core/megahit/nextflow.config delete mode 100644 tests/modules/nf-core/megahit/test.yml delete mode 100644 tests/modules/nf-core/megan/rma2info/main.nf delete mode 100644 tests/modules/nf-core/megan/rma2info/nextflow.config delete mode 100644 tests/modules/nf-core/megan/rma2info/test.yml delete mode 100644 tests/modules/nf-core/meningotype/main.nf delete mode 100644 tests/modules/nf-core/meningotype/nextflow.config delete mode 100644 tests/modules/nf-core/meningotype/test.yml delete mode 100644 tests/modules/nf-core/merquryfk/merquryfk/main.nf delete mode 100644 tests/modules/nf-core/merquryfk/merquryfk/nextflow.config delete mode 100644 tests/modules/nf-core/merquryfk/merquryfk/test.yml delete mode 100644 tests/modules/nf-core/metabat2/jgisummarizebamcontigdepths/main.nf delete mode 100644 tests/modules/nf-core/metabat2/jgisummarizebamcontigdepths/nextflow.config delete mode 100644 tests/modules/nf-core/metabat2/jgisummarizebamcontigdepths/test.yml delete mode 100644 tests/modules/nf-core/metaphlan/makedb/main.nf delete mode 100644 tests/modules/nf-core/metaphlan/makedb/nextflow.config delete mode 100644 tests/modules/nf-core/metaphlan/makedb/test.yml delete mode 100644 tests/modules/nf-core/metaphlan/mergemetaphlantables/main.nf delete mode 100644 tests/modules/nf-core/metaphlan/mergemetaphlantables/nextflow.config delete mode 100644 tests/modules/nf-core/metaphlan/mergemetaphlantables/test.yml delete mode 100644 tests/modules/nf-core/metaphlan/metaphlan/main.nf delete mode 100644 tests/modules/nf-core/metaphlan/metaphlan/nextflow.config delete mode 100644 tests/modules/nf-core/metaphlan/metaphlan/test.yml delete mode 100644 tests/modules/nf-core/methyldackel/extract/main.nf delete mode 100644 tests/modules/nf-core/methyldackel/extract/nextflow.config delete mode 100644 tests/modules/nf-core/methyldackel/extract/test.yml delete mode 100644 tests/modules/nf-core/methyldackel/mbias/main.nf delete mode 100644 tests/modules/nf-core/methyldackel/mbias/nextflow.config delete mode 100644 tests/modules/nf-core/methyldackel/mbias/test.yml delete mode 100644 tests/modules/nf-core/minia/main.nf delete mode 100644 tests/modules/nf-core/minia/nextflow.config delete mode 100644 tests/modules/nf-core/minia/test.yml delete mode 100644 tests/modules/nf-core/miniprot/align/main.nf delete mode 100644 tests/modules/nf-core/miniprot/align/nextflow.config delete mode 100644 tests/modules/nf-core/miniprot/align/test.yml delete mode 100644 tests/modules/nf-core/miniprot/index/main.nf delete mode 100644 tests/modules/nf-core/miniprot/index/nextflow.config delete mode 100644 tests/modules/nf-core/miniprot/index/test.yml delete mode 100644 tests/modules/nf-core/miranda/main.nf delete mode 100644 tests/modules/nf-core/miranda/nextflow.config delete mode 100644 tests/modules/nf-core/miranda/test.yml delete mode 100644 tests/modules/nf-core/mmseqs/databases/main.nf delete mode 100644 tests/modules/nf-core/mmseqs/databases/nextflow.config delete mode 100644 tests/modules/nf-core/mmseqs/databases/test.yml delete mode 100644 tests/modules/nf-core/mobsuite/recon/main.nf delete mode 100644 tests/modules/nf-core/mobsuite/recon/nextflow.config delete mode 100644 tests/modules/nf-core/mobsuite/recon/test.yml delete mode 100644 tests/modules/nf-core/motus/profile/main.nf delete mode 100644 tests/modules/nf-core/motus/profile/nextflow.config delete mode 100644 tests/modules/nf-core/motus/profile/test.yml delete mode 100644 tests/modules/nf-core/msisensor2/scan/main.nf delete mode 100644 tests/modules/nf-core/msisensor2/scan/nextflow.config delete mode 100644 tests/modules/nf-core/msisensor2/scan/test.yml delete mode 100644 tests/modules/nf-core/msisensorpro/scan/main.nf delete mode 100644 tests/modules/nf-core/msisensorpro/scan/nextflow.config delete mode 100644 tests/modules/nf-core/msisensorpro/scan/test.yml delete mode 100644 tests/modules/nf-core/mtnucratio/main.nf delete mode 100644 tests/modules/nf-core/mtnucratio/nextflow.config delete mode 100644 tests/modules/nf-core/mtnucratio/test.yml delete mode 100644 tests/modules/nf-core/multivcfanalyzer/main.nf delete mode 100644 tests/modules/nf-core/multivcfanalyzer/nextflow.config delete mode 100644 tests/modules/nf-core/multivcfanalyzer/test.yml delete mode 100644 tests/modules/nf-core/mykrobe/predict/main.nf delete mode 100644 tests/modules/nf-core/mykrobe/predict/nextflow.config delete mode 100644 tests/modules/nf-core/mykrobe/predict/test.yml delete mode 100755 tests/modules/nf-core/nanocomp/main.nf delete mode 100644 tests/modules/nf-core/nanocomp/nextflow.config delete mode 100755 tests/modules/nf-core/nanocomp/test.yml delete mode 100644 tests/modules/nf-core/nanolyse/main.nf delete mode 100644 tests/modules/nf-core/nanolyse/nextflow.config delete mode 100644 tests/modules/nf-core/nanolyse/test.yml delete mode 100644 tests/modules/nf-core/ncbigenomedownload/main.nf delete mode 100644 tests/modules/nf-core/ncbigenomedownload/nextflow.config delete mode 100644 tests/modules/nf-core/ncbigenomedownload/test.yml delete mode 100644 tests/modules/nf-core/nextclade/datasetget/main.nf delete mode 100644 tests/modules/nf-core/nextclade/datasetget/nextflow.config delete mode 100644 tests/modules/nf-core/nextclade/datasetget/test.yml delete mode 100644 tests/modules/nf-core/nextclade/run/main.nf delete mode 100644 tests/modules/nf-core/nextclade/run/test.yml delete mode 100644 tests/modules/nf-core/nextgenmap/main.nf delete mode 100644 tests/modules/nf-core/nextgenmap/nextflow.config delete mode 100644 tests/modules/nf-core/nextgenmap/test.yml delete mode 100644 tests/modules/nf-core/ngmaster/main.nf delete mode 100644 tests/modules/nf-core/ngmaster/nextflow.config delete mode 100644 tests/modules/nf-core/ngmaster/test.yml delete mode 100644 tests/modules/nf-core/ngmerge/main.nf delete mode 100644 tests/modules/nf-core/ngmerge/nextflow.config delete mode 100644 tests/modules/nf-core/ngmerge/test.yml delete mode 100644 tests/modules/nf-core/paftools/sam2paf/main.nf delete mode 100644 tests/modules/nf-core/paftools/sam2paf/nextflow.config delete mode 100644 tests/modules/nf-core/paftools/sam2paf/test.yml delete mode 100644 tests/modules/nf-core/pairix/main.nf delete mode 100644 tests/modules/nf-core/pairix/nextflow.config delete mode 100644 tests/modules/nf-core/pairix/test.yml delete mode 100644 tests/modules/nf-core/pairtools/dedup/main.nf delete mode 100644 tests/modules/nf-core/pairtools/dedup/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/dedup/test.yml delete mode 100644 tests/modules/nf-core/pairtools/flip/main.nf delete mode 100644 tests/modules/nf-core/pairtools/flip/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/flip/test.yml delete mode 100644 tests/modules/nf-core/pairtools/merge/main.nf delete mode 100644 tests/modules/nf-core/pairtools/merge/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/merge/test.yml delete mode 100644 tests/modules/nf-core/pairtools/parse/main.nf delete mode 100644 tests/modules/nf-core/pairtools/parse/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/parse/test.yml delete mode 100644 tests/modules/nf-core/pairtools/restrict/main.nf delete mode 100644 tests/modules/nf-core/pairtools/restrict/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/restrict/test.yml delete mode 100644 tests/modules/nf-core/pairtools/select/main.nf delete mode 100644 tests/modules/nf-core/pairtools/select/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/select/test.yml delete mode 100644 tests/modules/nf-core/pairtools/sort/main.nf delete mode 100644 tests/modules/nf-core/pairtools/sort/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/sort/test.yml delete mode 100644 tests/modules/nf-core/pairtools/stats/main.nf delete mode 100644 tests/modules/nf-core/pairtools/stats/nextflow.config delete mode 100644 tests/modules/nf-core/pairtools/stats/test.yml delete mode 100644 tests/modules/nf-core/panaroo/run/main.nf delete mode 100644 tests/modules/nf-core/panaroo/run/nextflow.config delete mode 100644 tests/modules/nf-core/panaroo/run/test.yml delete mode 100644 tests/modules/nf-core/paragraph/vcf2paragraph/main.nf delete mode 100644 tests/modules/nf-core/paragraph/vcf2paragraph/nextflow.config delete mode 100644 tests/modules/nf-core/paragraph/vcf2paragraph/test.yml delete mode 100644 tests/modules/nf-core/pasty/main.nf delete mode 100644 tests/modules/nf-core/pasty/nextflow.config delete mode 100644 tests/modules/nf-core/pasty/test.yml delete mode 100644 tests/modules/nf-core/pbbam/pbmerge/main.nf delete mode 100644 tests/modules/nf-core/pbbam/pbmerge/nextflow.config delete mode 100644 tests/modules/nf-core/pbbam/pbmerge/test.yml delete mode 100644 tests/modules/nf-core/pbptyper/main.nf delete mode 100644 tests/modules/nf-core/pbptyper/nextflow.config delete mode 100644 tests/modules/nf-core/pbptyper/test.yml delete mode 100644 tests/modules/nf-core/peddy/main.nf delete mode 100644 tests/modules/nf-core/peddy/nextflow.config delete mode 100644 tests/modules/nf-core/peddy/test.yml delete mode 100644 tests/modules/nf-core/peka/main.nf delete mode 100644 tests/modules/nf-core/peka/nextflow.config delete mode 100644 tests/modules/nf-core/peka/test.yml delete mode 100644 tests/modules/nf-core/phantompeakqualtools/main.nf delete mode 100644 tests/modules/nf-core/phantompeakqualtools/nextflow.config delete mode 100644 tests/modules/nf-core/phantompeakqualtools/test.yml delete mode 100644 tests/modules/nf-core/picard/bedtointervallist/main.nf delete mode 100644 tests/modules/nf-core/picard/bedtointervallist/nextflow.config delete mode 100644 tests/modules/nf-core/picard/bedtointervallist/test.yml delete mode 100644 tests/modules/nf-core/picard/cleansam/main.nf delete mode 100644 tests/modules/nf-core/picard/cleansam/nextflow.config delete mode 100644 tests/modules/nf-core/picard/cleansam/test.yml delete mode 100644 tests/modules/nf-core/picard/collectinsertsizemetrics/main.nf delete mode 100644 tests/modules/nf-core/picard/collectinsertsizemetrics/nextflow.config delete mode 100644 tests/modules/nf-core/picard/collectinsertsizemetrics/test.yml delete mode 100644 tests/modules/nf-core/picard/collectmultiplemetrics/main.nf delete mode 100644 tests/modules/nf-core/picard/collectmultiplemetrics/nextflow.config delete mode 100644 tests/modules/nf-core/picard/collectmultiplemetrics/test.yml delete mode 100644 tests/modules/nf-core/picard/collectwgsmetrics/main.nf delete mode 100644 tests/modules/nf-core/picard/collectwgsmetrics/nextflow.config delete mode 100644 tests/modules/nf-core/picard/collectwgsmetrics/test.yml delete mode 100644 tests/modules/nf-core/picard/createsequencedictionary/main.nf delete mode 100644 tests/modules/nf-core/picard/createsequencedictionary/nextflow.config delete mode 100644 tests/modules/nf-core/picard/createsequencedictionary/test.yml delete mode 100644 tests/modules/nf-core/picard/fastqtosam/main.nf delete mode 100644 tests/modules/nf-core/picard/fastqtosam/nextflow.config delete mode 100644 tests/modules/nf-core/picard/fastqtosam/test.yml delete mode 100644 tests/modules/nf-core/picard/fixmateinformation/main.nf delete mode 100644 tests/modules/nf-core/picard/fixmateinformation/nextflow.config delete mode 100644 tests/modules/nf-core/picard/fixmateinformation/test.yml delete mode 100644 tests/modules/nf-core/picard/liftovervcf/main.nf delete mode 100644 tests/modules/nf-core/picard/liftovervcf/nextflow.config delete mode 100644 tests/modules/nf-core/picard/liftovervcf/test.yml delete mode 100644 tests/modules/nf-core/picard/mergesamfiles/main.nf delete mode 100644 tests/modules/nf-core/picard/mergesamfiles/nextflow.config delete mode 100644 tests/modules/nf-core/picard/mergesamfiles/test.yml delete mode 100644 tests/modules/nf-core/picard/renamesampleinvcf/main.nf delete mode 100644 tests/modules/nf-core/picard/renamesampleinvcf/nextflow.config delete mode 100644 tests/modules/nf-core/picard/renamesampleinvcf/test.yml delete mode 100644 tests/modules/nf-core/picard/scatterintervalsbyns/main.nf delete mode 100644 tests/modules/nf-core/picard/scatterintervalsbyns/nextflow.config delete mode 100644 tests/modules/nf-core/picard/scatterintervalsbyns/test.yml delete mode 100644 tests/modules/nf-core/picard/sortsam/main.nf delete mode 100644 tests/modules/nf-core/picard/sortsam/nextflow.config delete mode 100644 tests/modules/nf-core/picard/sortsam/test.yml delete mode 100644 tests/modules/nf-core/picard/sortvcf/main.nf delete mode 100644 tests/modules/nf-core/picard/sortvcf/nextflow.config delete mode 100644 tests/modules/nf-core/picard/sortvcf/test.yml delete mode 100644 tests/modules/nf-core/pilon/main.nf delete mode 100644 tests/modules/nf-core/pilon/nextflow.config delete mode 100644 tests/modules/nf-core/pilon/test.yml delete mode 100755 tests/modules/nf-core/pindel/pindel/main.nf delete mode 100755 tests/modules/nf-core/pindel/pindel/nextflow.config delete mode 100755 tests/modules/nf-core/pindel/pindel/test.yml delete mode 100644 tests/modules/nf-core/pints/caller/main.nf delete mode 100644 tests/modules/nf-core/pints/caller/nextflow.config delete mode 100644 tests/modules/nf-core/pints/caller/test.yml delete mode 100644 tests/modules/nf-core/pirate/main.nf delete mode 100644 tests/modules/nf-core/pirate/nextflow.config delete mode 100644 tests/modules/nf-core/pirate/test.yml delete mode 100644 tests/modules/nf-core/plasmidfinder/main.nf delete mode 100644 tests/modules/nf-core/plasmidfinder/nextflow.config delete mode 100644 tests/modules/nf-core/plasmidfinder/test.yml delete mode 100644 tests/modules/nf-core/plasmidid/main.nf delete mode 100644 tests/modules/nf-core/plasmidid/nextflow.config delete mode 100644 tests/modules/nf-core/plasmidid/test.yml delete mode 100644 tests/modules/nf-core/platypus/main.nf delete mode 100644 tests/modules/nf-core/platypus/nextflow.config delete mode 100644 tests/modules/nf-core/platypus/test.yml delete mode 100644 tests/modules/nf-core/plink/bcf/main.nf delete mode 100644 tests/modules/nf-core/plink/bcf/nextflow.config delete mode 100644 tests/modules/nf-core/plink/bcf/test.yml delete mode 100644 tests/modules/nf-core/plink/vcf/main.nf delete mode 100644 tests/modules/nf-core/plink/vcf/nextflow.config delete mode 100644 tests/modules/nf-core/plink/vcf/test.yml delete mode 100644 tests/modules/nf-core/pmdtools/filter/main.nf delete mode 100644 tests/modules/nf-core/pmdtools/filter/nextflow.config delete mode 100644 tests/modules/nf-core/pmdtools/filter/test.yml delete mode 100644 tests/modules/nf-core/porechop/abi/main.nf delete mode 100644 tests/modules/nf-core/porechop/abi/nextflow.config delete mode 100644 tests/modules/nf-core/porechop/abi/test.yml delete mode 100644 tests/modules/nf-core/preseq/ccurve/main.nf delete mode 100644 tests/modules/nf-core/preseq/ccurve/nextflow.config delete mode 100644 tests/modules/nf-core/preseq/ccurve/test.yml delete mode 100644 tests/modules/nf-core/prinseqplusplus/main.nf delete mode 100644 tests/modules/nf-core/prinseqplusplus/nextflow.config delete mode 100644 tests/modules/nf-core/prinseqplusplus/test.yml delete mode 100644 tests/modules/nf-core/pureclip/main.nf delete mode 100644 tests/modules/nf-core/pureclip/nextflow.config delete mode 100644 tests/modules/nf-core/pureclip/test.yml delete mode 100644 tests/modules/nf-core/purecn/intervalfile/main.nf delete mode 100644 tests/modules/nf-core/purecn/intervalfile/nextflow.config delete mode 100644 tests/modules/nf-core/purecn/intervalfile/test.yml delete mode 100644 tests/modules/nf-core/purecn/normaldb/main.nf delete mode 100644 tests/modules/nf-core/purecn/normaldb/nextflow.config delete mode 100644 tests/modules/nf-core/purecn/normaldb/test.yml delete mode 100644 tests/modules/nf-core/purgedups/pbcstat/main.nf delete mode 100644 tests/modules/nf-core/purgedups/pbcstat/nextflow.config delete mode 100644 tests/modules/nf-core/purgedups/pbcstat/test.yml delete mode 100644 tests/modules/nf-core/purgedups/splitfa/main.nf delete mode 100644 tests/modules/nf-core/purgedups/splitfa/nextflow.config delete mode 100644 tests/modules/nf-core/purgedups/splitfa/test.yml delete mode 100644 tests/modules/nf-core/pydamage/analyze/main.nf delete mode 100644 tests/modules/nf-core/pydamage/analyze/nextflow.config delete mode 100644 tests/modules/nf-core/pydamage/analyze/test.yml delete mode 100644 tests/modules/nf-core/qcat/main.nf delete mode 100644 tests/modules/nf-core/qcat/nextflow.config delete mode 100644 tests/modules/nf-core/qcat/test.yml delete mode 100644 tests/modules/nf-core/quast/main.nf delete mode 100644 tests/modules/nf-core/quast/nextflow.config delete mode 100644 tests/modules/nf-core/quast/test.yml delete mode 100644 tests/modules/nf-core/rapidnj/main.nf delete mode 100644 tests/modules/nf-core/rapidnj/nextflow.config delete mode 100644 tests/modules/nf-core/rapidnj/test.yml delete mode 100644 tests/modules/nf-core/raven/main.nf delete mode 100644 tests/modules/nf-core/raven/nextflow.config delete mode 100644 tests/modules/nf-core/raven/test.yml delete mode 100644 tests/modules/nf-core/rtgtools/pedfilter/main.nf delete mode 100644 tests/modules/nf-core/rtgtools/pedfilter/nextflow.config delete mode 100644 tests/modules/nf-core/rtgtools/pedfilter/test.yml delete mode 100644 tests/modules/nf-core/sam2lca/analyze/main.nf delete mode 100644 tests/modules/nf-core/sam2lca/analyze/nextflow.config delete mode 100644 tests/modules/nf-core/sam2lca/analyze/test.yml delete mode 100644 tests/modules/nf-core/sambamba/flagstat/main.nf delete mode 100644 tests/modules/nf-core/sambamba/flagstat/nextflow.config delete mode 100644 tests/modules/nf-core/sambamba/flagstat/test.yml delete mode 100644 tests/modules/nf-core/sambamba/markdup/main.nf delete mode 100644 tests/modules/nf-core/sambamba/markdup/nextflow.config delete mode 100644 tests/modules/nf-core/sambamba/markdup/test.yml delete mode 100644 tests/modules/nf-core/samtools/collatefastq/main.nf delete mode 100644 tests/modules/nf-core/samtools/collatefastq/nextflow.config delete mode 100644 tests/modules/nf-core/samtools/collatefastq/test.yml delete mode 100644 tests/modules/nf-core/samtools/depth/main.nf delete mode 100644 tests/modules/nf-core/samtools/depth/nextflow.config delete mode 100644 tests/modules/nf-core/samtools/depth/test.yml delete mode 100644 tests/modules/nf-core/samtools/dict/main.nf delete mode 100644 tests/modules/nf-core/samtools/dict/nextflow.config delete mode 100644 tests/modules/nf-core/samtools/dict/test.yml delete mode 100644 tests/modules/nf-core/samtools/fasta/main.nf delete mode 100644 tests/modules/nf-core/samtools/fasta/nextflow.config delete mode 100644 tests/modules/nf-core/samtools/fasta/test.yml delete mode 100644 tests/modules/nf-core/samtools/getrg/main.nf delete mode 100644 tests/modules/nf-core/samtools/getrg/nextflow.config delete mode 100644 tests/modules/nf-core/samtools/getrg/test.yml delete mode 100644 tests/modules/nf-core/scimap/mcmicro/main.nf delete mode 100644 tests/modules/nf-core/scimap/mcmicro/nextflow.config delete mode 100644 tests/modules/nf-core/scimap/mcmicro/test.yml delete mode 100644 tests/modules/nf-core/scoary/main.nf delete mode 100644 tests/modules/nf-core/scoary/nextflow.config delete mode 100644 tests/modules/nf-core/scoary/test.yml delete mode 100644 tests/modules/nf-core/scramble/clusteridentifier/main.nf delete mode 100644 tests/modules/nf-core/scramble/clusteridentifier/nextflow.config delete mode 100644 tests/modules/nf-core/scramble/clusteridentifier/test.yml delete mode 100644 tests/modules/nf-core/seacr/callpeak/main.nf delete mode 100644 tests/modules/nf-core/seacr/callpeak/nextflow.config delete mode 100644 tests/modules/nf-core/seacr/callpeak/test.yml delete mode 100644 tests/modules/nf-core/segemehl/index/main.nf delete mode 100644 tests/modules/nf-core/segemehl/index/nextflow.config delete mode 100644 tests/modules/nf-core/segemehl/index/test.yml delete mode 100644 tests/modules/nf-core/sentieon/bwamem/main.nf delete mode 100644 tests/modules/nf-core/sentieon/bwamem/nextflow.config delete mode 100644 tests/modules/nf-core/sentieon/bwamem/test.yml delete mode 100644 tests/modules/nf-core/sentieon/dedup/main.nf delete mode 100644 tests/modules/nf-core/sentieon/dedup/nextflow.config delete mode 100644 tests/modules/nf-core/sentieon/dedup/test.yml delete mode 100644 tests/modules/nf-core/sentieon/gvcftyper/main.nf delete mode 100644 tests/modules/nf-core/sentieon/gvcftyper/nextflow.config delete mode 100644 tests/modules/nf-core/sentieon/gvcftyper/test.yml delete mode 100644 tests/modules/nf-core/sentieon/haplotyper/main.nf delete mode 100644 tests/modules/nf-core/sentieon/haplotyper/nextflow.config delete mode 100644 tests/modules/nf-core/sentieon/haplotyper/test.yml delete mode 100644 tests/modules/nf-core/sentieon/readwriter/main.nf delete mode 100644 tests/modules/nf-core/sentieon/readwriter/nextflow.config delete mode 100644 tests/modules/nf-core/sentieon/readwriter/test.yml delete mode 100644 tests/modules/nf-core/seqsero2/main.nf delete mode 100644 tests/modules/nf-core/seqsero2/nextflow.config delete mode 100644 tests/modules/nf-core/seqsero2/test.yml delete mode 100755 tests/modules/nf-core/sequenzautils/bam2seqz/main.nf delete mode 100644 tests/modules/nf-core/sequenzautils/bam2seqz/nextflow.config delete mode 100644 tests/modules/nf-core/sequenzautils/bam2seqz/test.yml delete mode 100644 tests/modules/nf-core/sequenzautils/gcwiggle/main.nf delete mode 100644 tests/modules/nf-core/sequenzautils/gcwiggle/nextflow.config delete mode 100644 tests/modules/nf-core/sequenzautils/gcwiggle/test.yml delete mode 100644 tests/modules/nf-core/seroba/run/main.nf delete mode 100644 tests/modules/nf-core/seroba/run/nextflow.config delete mode 100644 tests/modules/nf-core/seroba/run/test.yml delete mode 100644 tests/modules/nf-core/shasta/main.nf delete mode 100644 tests/modules/nf-core/shasta/nextflow.config delete mode 100644 tests/modules/nf-core/shasta/test.yml delete mode 100644 tests/modules/nf-core/shasum/main.nf delete mode 100644 tests/modules/nf-core/shasum/nextflow.config delete mode 100644 tests/modules/nf-core/shasum/test.yml delete mode 100644 tests/modules/nf-core/shigatyper/main.nf delete mode 100644 tests/modules/nf-core/shigatyper/nextflow.config delete mode 100644 tests/modules/nf-core/shigatyper/test.yml delete mode 100644 tests/modules/nf-core/sickle/main.nf delete mode 100644 tests/modules/nf-core/sickle/nextflow.config delete mode 100644 tests/modules/nf-core/sickle/test.yml delete mode 100644 tests/modules/nf-core/sistr/main.nf delete mode 100644 tests/modules/nf-core/sistr/nextflow.config delete mode 100644 tests/modules/nf-core/sistr/test.yml delete mode 100644 tests/modules/nf-core/slimfastq/main.nf delete mode 100644 tests/modules/nf-core/slimfastq/nextflow.config delete mode 100644 tests/modules/nf-core/slimfastq/test.yml delete mode 100644 tests/modules/nf-core/smncopynumbercaller/main.nf delete mode 100644 tests/modules/nf-core/smncopynumbercaller/nextflow.config delete mode 100644 tests/modules/nf-core/smncopynumbercaller/test.yml delete mode 100644 tests/modules/nf-core/snapaligner/index/main.nf delete mode 100644 tests/modules/nf-core/snapaligner/index/nextflow.config delete mode 100644 tests/modules/nf-core/snapaligner/index/test.yml delete mode 100644 tests/modules/nf-core/sniffles/main.nf delete mode 100644 tests/modules/nf-core/sniffles/nextflow.config delete mode 100644 tests/modules/nf-core/sniffles/test.yml delete mode 100644 tests/modules/nf-core/snippy/run/main.nf delete mode 100644 tests/modules/nf-core/snippy/run/nextflow.config delete mode 100644 tests/modules/nf-core/snippy/run/test.yml delete mode 100644 tests/modules/nf-core/snpdists/main.nf delete mode 100644 tests/modules/nf-core/snpdists/nextflow.config delete mode 100644 tests/modules/nf-core/snpdists/test.yml delete mode 100644 tests/modules/nf-core/snpeff/download/main.nf delete mode 100644 tests/modules/nf-core/snpeff/download/nextflow.config delete mode 100644 tests/modules/nf-core/snpeff/download/test.yml delete mode 100644 tests/modules/nf-core/snpsift/annotate/main.nf delete mode 100644 tests/modules/nf-core/snpsift/annotate/nextflow.config delete mode 100644 tests/modules/nf-core/snpsift/annotate/test.yml delete mode 100644 tests/modules/nf-core/snpsift/dbnsfp/main.nf delete mode 100644 tests/modules/nf-core/snpsift/dbnsfp/nextflow.config delete mode 100644 tests/modules/nf-core/snpsift/dbnsfp/test.yml delete mode 100644 tests/modules/nf-core/snpsift/split/main.nf delete mode 100644 tests/modules/nf-core/snpsift/split/nextflow.config delete mode 100644 tests/modules/nf-core/snpsift/split/test.yml delete mode 100644 tests/modules/nf-core/snpsites/main.nf delete mode 100644 tests/modules/nf-core/snpsites/nextflow.config delete mode 100644 tests/modules/nf-core/snpsites/test.yml delete mode 100644 tests/modules/nf-core/somalier/extract/main.nf delete mode 100644 tests/modules/nf-core/somalier/extract/nextflow.config delete mode 100644 tests/modules/nf-core/somalier/extract/test.yml delete mode 100644 tests/modules/nf-core/somalier/relate/main.nf delete mode 100644 tests/modules/nf-core/somalier/relate/nextflow.config delete mode 100644 tests/modules/nf-core/somalier/relate/test.yml delete mode 100644 tests/modules/nf-core/sourmash/compare/main.nf delete mode 100644 tests/modules/nf-core/sourmash/compare/nextflow.config delete mode 100644 tests/modules/nf-core/sourmash/compare/test.yml delete mode 100644 tests/modules/nf-core/spring/compress/main.nf delete mode 100644 tests/modules/nf-core/spring/compress/nextflow.config delete mode 100644 tests/modules/nf-core/spring/compress/test.yml delete mode 100644 tests/modules/nf-core/ssuissero/main.nf delete mode 100644 tests/modules/nf-core/ssuissero/nextflow.config delete mode 100644 tests/modules/nf-core/ssuissero/test.yml delete mode 100644 tests/modules/nf-core/stadeniolib/scramble/main.nf delete mode 100644 tests/modules/nf-core/stadeniolib/scramble/nextflow.config delete mode 100644 tests/modules/nf-core/stadeniolib/scramble/test.yml delete mode 100644 tests/modules/nf-core/staphopiasccmec/main.nf delete mode 100644 tests/modules/nf-core/staphopiasccmec/nextflow.config delete mode 100644 tests/modules/nf-core/staphopiasccmec/test.yml delete mode 100644 tests/modules/nf-core/star/starsolo/main.nf delete mode 100644 tests/modules/nf-core/star/starsolo/nextflow.config delete mode 100644 tests/modules/nf-core/star/starsolo/test.yml delete mode 100644 tests/modules/nf-core/stranger/main.nf delete mode 100644 tests/modules/nf-core/stranger/nextflow.config delete mode 100644 tests/modules/nf-core/stranger/test.yml delete mode 100644 tests/modules/nf-core/strelka/germline/main.nf delete mode 100644 tests/modules/nf-core/strelka/germline/nextflow.config delete mode 100644 tests/modules/nf-core/strelka/germline/test.yml delete mode 100644 tests/modules/nf-core/survivor/merge/main.nf delete mode 100644 tests/modules/nf-core/survivor/merge/nextflow.config delete mode 100644 tests/modules/nf-core/survivor/merge/test.yml delete mode 100644 tests/modules/nf-core/svtk/countsvtypes/main.nf delete mode 100644 tests/modules/nf-core/svtk/countsvtypes/nextflow.config delete mode 100644 tests/modules/nf-core/svtk/countsvtypes/test.yml delete mode 100644 tests/modules/nf-core/svtyper/svtyper/main.nf delete mode 100644 tests/modules/nf-core/svtyper/svtyper/nextflow.config delete mode 100644 tests/modules/nf-core/svtyper/svtyper/test.yml delete mode 100644 tests/modules/nf-core/tailfindr/main.nf delete mode 100644 tests/modules/nf-core/tailfindr/nextflow.config delete mode 100644 tests/modules/nf-core/tailfindr/test.yml delete mode 100644 tests/modules/nf-core/tbprofiler/profile/main.nf delete mode 100644 tests/modules/nf-core/tbprofiler/profile/nextflow.config delete mode 100644 tests/modules/nf-core/tbprofiler/profile/test.yml delete mode 100644 tests/modules/nf-core/tiara/tiara/main.nf delete mode 100644 tests/modules/nf-core/tiara/tiara/nextflow.config delete mode 100644 tests/modules/nf-core/tiara/tiara/test.yml delete mode 100644 tests/modules/nf-core/transdecoder/longorf/main.nf delete mode 100644 tests/modules/nf-core/transdecoder/longorf/nextflow.config delete mode 100644 tests/modules/nf-core/transdecoder/longorf/test.yml delete mode 100644 tests/modules/nf-core/ucsc/bigwigaverageoverbed/main.nf delete mode 100644 tests/modules/nf-core/ucsc/bigwigaverageoverbed/nextflow.config delete mode 100644 tests/modules/nf-core/ucsc/bigwigaverageoverbed/test.yml delete mode 100644 tests/modules/nf-core/ucsc/gtftogenepred/main.nf delete mode 100644 tests/modules/nf-core/ucsc/gtftogenepred/nextflow.config delete mode 100644 tests/modules/nf-core/ucsc/gtftogenepred/test.yml delete mode 100644 tests/modules/nf-core/ucsc/liftover/main.nf delete mode 100644 tests/modules/nf-core/ucsc/liftover/nextflow.config delete mode 100644 tests/modules/nf-core/ucsc/liftover/test.yml delete mode 100644 tests/modules/nf-core/ucsc/wigtobigwig/main.nf delete mode 100644 tests/modules/nf-core/ucsc/wigtobigwig/nextflow.config delete mode 100644 tests/modules/nf-core/ucsc/wigtobigwig/test.yml delete mode 100644 tests/modules/nf-core/untarfiles/main.nf delete mode 100644 tests/modules/nf-core/untarfiles/nextflow.config delete mode 100644 tests/modules/nf-core/untarfiles/test.yml delete mode 100644 tests/modules/nf-core/unzip/main.nf delete mode 100644 tests/modules/nf-core/unzip/nextflow.config delete mode 100644 tests/modules/nf-core/unzip/test.yml delete mode 100644 tests/modules/nf-core/unzipfiles/main.nf delete mode 100644 tests/modules/nf-core/unzipfiles/nextflow.config delete mode 100644 tests/modules/nf-core/unzipfiles/test.yml delete mode 100644 tests/modules/nf-core/upd/main.nf delete mode 100644 tests/modules/nf-core/upd/nextflow.config delete mode 100644 tests/modules/nf-core/upd/test.yml delete mode 100644 tests/modules/nf-core/variantbam/main.nf delete mode 100644 tests/modules/nf-core/variantbam/nextflow.config delete mode 100644 tests/modules/nf-core/variantbam/test.yml delete mode 100644 tests/modules/nf-core/varlociraptor/estimatealignmentproperties/main.nf delete mode 100644 tests/modules/nf-core/varlociraptor/estimatealignmentproperties/nextflow.config delete mode 100644 tests/modules/nf-core/varlociraptor/estimatealignmentproperties/test.yml delete mode 100644 tests/modules/nf-core/vcf2maf/main.nf delete mode 100644 tests/modules/nf-core/vcf2maf/nextflow.config delete mode 100644 tests/modules/nf-core/vcf2maf/test.yml delete mode 100644 tests/modules/nf-core/vcflib/vcfbreakmulti/main.nf delete mode 100644 tests/modules/nf-core/vcflib/vcfbreakmulti/nextflow.config delete mode 100644 tests/modules/nf-core/vcflib/vcfbreakmulti/test.yml delete mode 100644 tests/modules/nf-core/vcflib/vcffilter/main.nf delete mode 100644 tests/modules/nf-core/vcflib/vcffilter/nextflow.config delete mode 100644 tests/modules/nf-core/vcflib/vcffilter/test.yml delete mode 100644 tests/modules/nf-core/vcflib/vcfuniq/main.nf delete mode 100644 tests/modules/nf-core/vcflib/vcfuniq/nextflow.config delete mode 100644 tests/modules/nf-core/vcflib/vcfuniq/test.yml delete mode 100644 tests/modules/nf-core/verifybamid/verifybamid/main.nf delete mode 100644 tests/modules/nf-core/verifybamid/verifybamid/nextflow.config delete mode 100644 tests/modules/nf-core/verifybamid/verifybamid/test.yml delete mode 100644 tests/modules/nf-core/vg/construct/main.nf delete mode 100644 tests/modules/nf-core/vg/construct/nextflow.config delete mode 100644 tests/modules/nf-core/vg/construct/test.yml delete mode 100644 tests/modules/nf-core/vg/deconstruct/main.nf delete mode 100644 tests/modules/nf-core/vg/deconstruct/nextflow.config delete mode 100644 tests/modules/nf-core/vg/deconstruct/test.yml delete mode 100644 tests/modules/nf-core/vg/index/main.nf delete mode 100644 tests/modules/nf-core/vg/index/nextflow.config delete mode 100644 tests/modules/nf-core/vg/index/test.yml delete mode 100644 tests/modules/nf-core/vrhyme/vrhyme/main.nf delete mode 100644 tests/modules/nf-core/vrhyme/vrhyme/nextflow.config delete mode 100644 tests/modules/nf-core/vrhyme/vrhyme/test.yml delete mode 100644 tests/modules/nf-core/vsearch/sintax/main.nf delete mode 100644 tests/modules/nf-core/vsearch/sintax/nextflow.config delete mode 100644 tests/modules/nf-core/vsearch/sintax/test.yml delete mode 100644 tests/modules/nf-core/vsearch/usearchglobal/main.nf delete mode 100644 tests/modules/nf-core/vsearch/usearchglobal/nextflow.config delete mode 100644 tests/modules/nf-core/vsearch/usearchglobal/test.yml delete mode 100644 tests/modules/nf-core/vt/decompose/main.nf delete mode 100644 tests/modules/nf-core/vt/decompose/nextflow.config delete mode 100644 tests/modules/nf-core/vt/decompose/test.yml delete mode 100644 tests/modules/nf-core/vt/normalize/main.nf delete mode 100644 tests/modules/nf-core/vt/normalize/nextflow.config delete mode 100644 tests/modules/nf-core/vt/normalize/test.yml delete mode 100644 tests/modules/nf-core/wgsim/main.nf delete mode 100644 tests/modules/nf-core/wgsim/nextflow.config delete mode 100644 tests/modules/nf-core/wgsim/test.yml delete mode 100644 tests/modules/nf-core/whamg/main.nf delete mode 100644 tests/modules/nf-core/whamg/nextflow.config delete mode 100644 tests/modules/nf-core/whamg/test.yml delete mode 100644 tests/modules/nf-core/yahs/main.nf delete mode 100644 tests/modules/nf-core/yahs/nextflow.config delete mode 100644 tests/modules/nf-core/yahs/test.yml delete mode 100644 tests/modules/nf-core/yara/index/main.nf delete mode 100644 tests/modules/nf-core/yara/index/nextflow.config delete mode 100644 tests/modules/nf-core/yara/index/test.yml delete mode 100644 tests/modules/nf-core/yara/mapper/main.nf delete mode 100644 tests/modules/nf-core/yara/mapper/nextflow.config delete mode 100644 tests/modules/nf-core/yara/mapper/test.yml delete mode 100644 tests/subworkflows/nf-core/fasta_binning_concoct/main.nf delete mode 100644 tests/subworkflows/nf-core/fasta_binning_concoct/nextflow.config delete mode 100644 tests/subworkflows/nf-core/fasta_binning_concoct/test.yml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 21f91d5cb59..d2286a7018c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -854,6 +854,7 @@ modules/nf-core/seacr/callpeak/** @chris-cheshire modules/nf-core/segemehl/align/** @BarryDigby modules/nf-core/segemehl/index/** @BarryDigby modules/nf-core/semibin/singleeasybin/** @BigDataBiology +modules/nf-core/sentieon/** @DonFreed modules/nf-core/sentieon/applyvarcal/** @assp8200 modules/nf-core/sentieon/bwaindex/** @drpatelh @maxulysse modules/nf-core/sentieon/bwamem/** @asp8200 diff --git a/.github/ISSUE_TEMPLATE/new_module.yml b/.github/ISSUE_TEMPLATE/new_module.yml index 2d3e9d473b6..a8b822e2a24 100644 --- a/.github/ISSUE_TEMPLATE/new_module.yml +++ b/.github/ISSUE_TEMPLATE/new_module.yml @@ -27,6 +27,13 @@ body: - label: I have searched for existing issues required: true + - type: textarea + attributes: + label: Further Information + description: Is there a website, github repo or conda package? If yes enter the link here. + validations: + required: false + - type: checkboxes attributes: label: Are you going to work on this? diff --git a/.github/ISSUE_TEMPLATE/update_module.yml b/.github/ISSUE_TEMPLATE/update_module.yml new file mode 100644 index 00000000000..a08847e46b1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/update_module.yml @@ -0,0 +1,36 @@ +name: Update module +description: Update a module in nf-core/modules +title: "update module: TOOL/SUBTOOL" +labels: update module +body: + - type: checkboxes + attributes: + label: Is there an existing module for this? + description: This module already exists with the [`nf-core modules list`](https://github.com/nf-core/tools#list-modules) command + options: + - label: I have searched for the existing module + required: true + + - type: checkboxes + attributes: + label: Is there an open PR for this? + description: There is no [open pull request](https://github.com/nf-core/modules/pulls) for this module + options: + - label: I have searched for existing PRs + required: true + + - type: checkboxes + attributes: + label: Is there an open issue for this? + description: There is no [open issue](https://github.com/nf-core/modules/issues) for this module + options: + - label: I have searched for existing issues + required: true + + - type: checkboxes + attributes: + label: Are you going to work on this? + description: If I'm planning to work on this module, I added myself to the `Assignees` to facilitate tracking who is working on the module + options: + - label: If I'm planning to work on this module, I added myself to the `Assignees` to facilitate tracking who is working on the module + required: false diff --git a/.github/renovate.json5 b/.github/renovate.json5 index cb31d7f1fa4..7ffc321969b 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -20,7 +20,7 @@ enabled: true, }, customManagers: [ - // TODO waiting on https://github.com/nf-core/modules/pull/4080 + // TODO waiting on https://github.com/nf-core/modules/pull/4080 // { // customType: "regex", // description: "Process Containers dependencies", @@ -50,19 +50,19 @@ // ], // datasourceTemplate: "pypi", // }, - ], + ], packageRules: [ { matchDatasources: ["docker"], registryUrls: ["quay.io"], }, { - matchPackagePatterns: ["^nf-core/", "^seqera"], matchManagers: ["github-actions"], automerge: true, pinDigest: { enabled: false, }, + matchPackageNames: ["/^nf-core//", "/^seqera/"], }, { matchManagers: ["github-actions"], @@ -71,9 +71,9 @@ schedule: ["before 9am"], }, { - matchPackagePatterns: ["renovate-config-validator"], automerge: true, schedule: ["before 9am on Monday"], + matchPackageNames: ["/renovate-config-validator/"], }, ], } diff --git a/.github/scripts/license_message.py b/.github/scripts/license_message.py new file mode 100644 index 00000000000..f30af9b4e16 --- /dev/null +++ b/.github/scripts/license_message.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 + +""" +Functions for generating and sending license messages +""" + +# Modified from - https://stackoverflow.com/a/59835994 + +import argparse +import base64 +import calendar +import re +import secrets +import sys +from datetime import datetime as dt + +from cryptography.hazmat.primitives.ciphers.aead import AESGCM + +MESSAGE_TIMEOUT = 60 * 60 * 24 # Messages are valid for 1 day +NONCE_BYTES = 12 + + +class DecryptionTimeoutError(Exception): + # Decrypting a message that is too old + pass + + +def generate_key(): + key = secrets.token_bytes(32) + return key + + +def handle_generate_key(args): + key = generate_key() + key_b64 = base64.b64encode(key) + print(key_b64.decode("utf-8"), file=args.outfile) + + +def encrypt_message(key, message): + nonce = secrets.token_bytes(NONCE_BYTES) + timestamp = calendar.timegm(dt.now().utctimetuple()) + data = timestamp.to_bytes(10, byteorder="big") + b"__" + message + ciphertext = nonce + AESGCM(key).encrypt(nonce, data, b"") + return ciphertext + + +def handle_encrypt_message(args): + key = base64.b64decode(args.key.encode("utf-8")) + message = args.message.encode("utf-8") + ciphertext = encrypt_message(key, message) + ciphertext_b64 = base64.b64encode(ciphertext) + print(ciphertext_b64.decode("utf-8"), file=args.outfile) + + +def decrypt_message(key, ciphertext, timeout=MESSAGE_TIMEOUT): + nonce, ciphertext = ciphertext[:NONCE_BYTES], ciphertext[NONCE_BYTES:] + message = AESGCM(key).decrypt(nonce, ciphertext, b"") + + msg_timestamp, message = re.split(b"__", message, maxsplit=1) + msg_timestamp = int.from_bytes(msg_timestamp, byteorder="big") + timestamp = calendar.timegm(dt.now().utctimetuple()) + if (timestamp - msg_timestamp) > timeout: + raise DecryptionTimeoutError("The message has an expired timeout") + return message.decode("utf-8") + + +def handle_decrypt_message(args): + key = base64.b64decode(args.key.encode("utf-8")) + ciphertext = base64.b64decode(args.message.encode("utf-8")) + message = decrypt_message(key, ciphertext, timeout=args.timeout) + print(str(message), file=args.outfile) + + +def parse_args(argv=None): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--outfile", + default=sys.stdout, + type=argparse.FileType("w"), + help="The output file", + ) + + subparsers = parser.add_subparsers(help="Available sub-commands") + + gen_parser = subparsers.add_parser("generate_key", help="Generate a random key string") + gen_parser.set_defaults(func=handle_generate_key) + + encrypt_parser = subparsers.add_parser("encrypt", help="Encrypt a message") + encrypt_parser.add_argument("--key", required=True, help="The encryption key") + encrypt_parser.add_argument("--message", required=True, help="Message to encrypt") + encrypt_parser.set_defaults(func=handle_encrypt_message) + + decrypt_parser = subparsers.add_parser("decrypt", help="Decyrpt a message") + decrypt_parser.add_argument("--key", required=True, help="The encryption key") + decrypt_parser.add_argument("--message", required=True, help="Message to decrypt") + decrypt_parser.add_argument( + "--timeout", + default=MESSAGE_TIMEOUT, + type=int, + help="A message timeout. Decryption will fail for older messages", + ) + decrypt_parser.set_defaults(func=handle_decrypt_message) + + return parser.parse_args(argv) + + +if __name__ == "__main__": + args = parse_args() + args.func(args) diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml index 20c91c6c128..1b636925f23 100644 --- a/.github/workflows/fix-linting.yml +++ b/.github/workflows/fix-linting.yml @@ -32,7 +32,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4 + - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4 - name: Install Prettier run: npm install -g prettier @prettier/plugin-php diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 384adf14132..4a44189f3e8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,13 +30,13 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 # FIXME Flip this off once we get to less than a couple hundred. Adding # this so it will only run against changed files. It'll make it much # easier to fix these as they come up rather than everything at once. with: - extra_args: "" + extra_args: "--all-files" prettier: runs-on: ubuntu-latest @@ -45,12 +45,12 @@ jobs: uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Install NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4 with: node-version: "20" - name: Install Prettier - run: npm install -g prettier@3.1.0 + run: npm install -g prettier@3.2.5 - name: Run Prettier --check run: prettier --check . @@ -60,7 +60,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4 + - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4 with: node-version: "20" @@ -117,7 +117,7 @@ jobs: - name: List nf-test files id: list - uses: adamrtalbot/detect-nf-test-changes@6e67b7a6bd3caf8571b99cab3ab764c0e758f55c # v0.0.3 + uses: adamrtalbot/detect-nf-test-changes@7c8be3ffd0d6538312b363c8c949dbbf5f26c3dd # v0.0.4 with: head: ${{ github.sha }} base: ${{ github.event.pull_request.base.sha || github.event.merge_group.base_sha }} @@ -151,7 +151,7 @@ jobs: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Set up Python - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 with: python-version: "3.11" @@ -166,7 +166,7 @@ jobs: - name: Install pip run: python -m pip install --upgrade pip - - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 # v4 with: distribution: "temurin" java-version: "17" @@ -197,14 +197,14 @@ jobs: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Set up Python - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 with: python-version: "3.11" - name: Install pip run: python -m pip install --upgrade pip - - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 # v4 with: distribution: "temurin" java-version: "17" @@ -258,8 +258,6 @@ jobs: tags: cellrangerarc/count - profile: conda tags: cellrangerarc/mkfastq - - profile: conda - tags: cellrangerarc/mkgtf - profile: conda tags: cellrangerarc/mkref - profile: conda @@ -318,6 +316,8 @@ jobs: tags: islandpath - profile: conda tags: manta/convertinversion + - profile: conda + tags: mcstaging/imc2mc - profile: conda tags: mcquant - profile: conda @@ -360,26 +360,14 @@ jobs: tags: picard/collecthsmetrics - profile: conda tags: picard/collectwgsmetrics - - profile: conda - tags: scimap/mcmicro - profile: conda tags: sentieon/applyvarcal - - profile: conda - tags: sentieon/bwaindex - - profile: conda - tags: sentieon/bwamem - profile: conda tags: sentieon/datametrics - - profile: conda - tags: sentieon/dedup - profile: conda tags: sentieon/dnamodelapply - profile: conda tags: sentieon/dnascope - - profile: conda - tags: sentieon/gvcftyper - - profile: conda - tags: sentieon/haplotyper - profile: conda tags: sentieon/readwriter - profile: conda @@ -408,13 +396,12 @@ jobs: tags: vt/decompose env: NXF_ANSI_LOG: false - SENTIEON_LICENSE_BASE64: ${{ secrets.SENTIEON_LICENSE_BASE64 }} steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - name: Set up Python - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 with: python-version: "3.11" @@ -429,7 +416,7 @@ jobs: - name: Install Python dependencies run: python -m pip install --upgrade pip pytest-workflow cryptography - - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 # v4 with: distribution: "temurin" java-version: "17" @@ -463,18 +450,6 @@ jobs: echo $(realpath $CONDA)/condabin >> $GITHUB_PATH echo $(realpath python) >> $GITHUB_PATH - # Set up secrets - - name: Set up nextflow secrets - if: env.SENTIEON_LICENSE_BASE64 != null - run: | - nextflow secrets set SENTIEON_LICENSE_BASE64 ${{ secrets.SENTIEON_LICENSE_BASE64 }} - nextflow secrets set SENTIEON_AUTH_MECH_BASE64 ${{ secrets.SENTIEON_AUTH_MECH_BASE64 }} - SENTIEON_ENCRYPTION_KEY=$(echo -n "${{ secrets.ENCRYPTION_KEY_BASE64 }}" | base64 -d) - SENTIEON_LICENSE_MESSAGE=$(echo -n "${{ secrets.LICENSE_MESSAGE_BASE64 }}" | base64 -d) - SENTIEON_AUTH_DATA=$(python3 tests/modules/nf-core/sentieon/license_message.py encrypt --key "$SENTIEON_ENCRYPTION_KEY" --message "$SENTIEON_LICENSE_MESSAGE") - SENTIEON_AUTH_DATA_BASE64=$(echo -n "$SENTIEON_AUTH_DATA" | base64 -w 0) - nextflow secrets set SENTIEON_AUTH_DATA_BASE64 $SENTIEON_AUTH_DATA_BASE64 - # Test the module - name: Run pytest-workflow # only use one thread for pytest-workflow to avoid race condition on conda cache. @@ -497,7 +472,7 @@ jobs: - name: Upload logs on failure if: failure() - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4 with: name: logs-${{ matrix.profile }}-${{ steps.parsed.outputs.result }} path: | @@ -557,16 +532,28 @@ jobs: path: modules/nf-core/cellranger/multi - profile: conda path: modules/nf-core/cellranger/vdj + - profile: conda + path: modules/nf-core/checkqc - profile: conda path: modules/nf-core/custom/dumpsoftwareversions - profile: conda path: modules/nf-core/deepcell/mesmer - profile: conda path: modules/nf-core/deepvariant + - profile: conda + path: modules/nf-core/deepvariant/callvariants + - profile: conda + path: modules/nf-core/deepvariant/makeexamples + - profile: conda + path: modules/nf-core/deepvariant/postprocessvariants + - profile: conda + path: modules/nf-core/deepvariant/rundeepvariant - profile: conda path: modules/nf-core/ensemblvep/vep - profile: conda path: modules/nf-core/fastk/fastk + - profile: conda + path: modules/nf-core/cellrangerarc/mkgtf - profile: conda path: modules/nf-core/fastk/histex - profile: conda @@ -595,8 +582,12 @@ jobs: path: modules/nf-core/ilastik/pixelclassification - profile: conda path: modules/nf-core/imputeme/vcftoprs + - profile: conda + path: modules/nf-core/mcstaging/imc2mc - profile: conda path: modules/nf-core/mcquant + - profile: conda + path: modules/nf-core/mcstaging/phenoimager2mc - profile: conda path: modules/nf-core/merquryfk/katcomp - profile: conda @@ -615,6 +606,10 @@ jobs: path: modules/nf-core/sentieon/bwaindex - profile: conda path: modules/nf-core/sentieon/bwamem + - profile: conda + path: modules/nf-core/sentieon/dedup + - profile: conda + path: modules/nf-core/sentieon/qualcal - profile: conda path: modules/nf-core/spaceranger/mkgtf - profile: conda @@ -637,23 +632,28 @@ jobs: path: modules/nf-core/wittyer - profile: conda path: modules/nf-core/islandpath + - profile: conda + path: modules/nf-core/scimap/mcmicro - profile: conda path: subworkflows/nf-core/vcf_annotate_ensemblvep - profile: conda path: subworkflows/nf-core/bcl_demultiplex + - profile: conda + path: subworkflows/nf-core/deepvariant - profile: conda path: subworkflows/nf-core/fastq_align_bamcmp_bwa - profile: conda path: subworkflows/nf-core/fastq_align_bwa env: NXF_ANSI_LOG: false - SENTIEON_LICENSE_BASE64: ${{ secrets.SENTIEON_LICENSE_BASE64 }} - NFTEST_VER: "0.8.4" + NFTEST_VER: "0.9.0" + SENTIEON_LICENSE_MESSAGE: ${{ secrets.SENTIEON_LICENSE_MESSAGE }} + SENTIEON_ENCRYPTION_KEY: ${{ secrets.SENTIEON_ENCRYPTION_KEY }} steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 - - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4 + - uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 # v4 with: distribution: "temurin" java-version: "17" @@ -662,6 +662,8 @@ jobs: - name: Install nf-test uses: nf-core/setup-nf-test@v1 + with: + version: ${{ env.NFTEST_VER }} - name: Setup apptainer if: matrix.profile == 'singularity' @@ -674,9 +676,10 @@ jobs: mkdir -p $NXF_SINGULARITY_LIBRARYDIR - name: Set up Python - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 with: python-version: "3.11" + - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 id: cache-pip-pdiff with: @@ -689,6 +692,7 @@ jobs: run: python -m pip install --upgrade pip pdiff cryptography - name: Set up miniconda + if: matrix.profile == 'conda' uses: conda-incubator/setup-miniconda@a4260408e20b96e80095f42ff7f1a15b27dd94ca # v3 with: miniconda-version: "latest" @@ -696,6 +700,7 @@ jobs: channels: conda-forge,bioconda - name: Conda setup + if: matrix.profile == 'conda' run: | conda clean -a conda install -n base conda-libmamba-solver @@ -705,21 +710,18 @@ jobs: # Set up secrets - name: Set up nextflow secrets - if: env.SENTIEON_LICENSE_BASE64 != null + # TODO Only run if the tag includes `sentieon` + if: env.SENTIEON_ENCRYPTION_KEY != null && env.SENTIEON_LICENSE_MESSAGE != null run: | - nextflow secrets set SENTIEON_LICENSE_BASE64 ${{ secrets.SENTIEON_LICENSE_BASE64 }} - nextflow secrets set SENTIEON_AUTH_MECH_BASE64 ${{ secrets.SENTIEON_AUTH_MECH_BASE64 }} - SENTIEON_ENCRYPTION_KEY=$(echo -n "${{ secrets.ENCRYPTION_KEY_BASE64 }}" | base64 -d) - SENTIEON_LICENSE_MESSAGE=$(echo -n "${{ secrets.LICENSE_MESSAGE_BASE64 }}" | base64 -d) - SENTIEON_AUTH_DATA=$(python3 tests/modules/nf-core/sentieon/license_message.py encrypt --key "$SENTIEON_ENCRYPTION_KEY" --message "$SENTIEON_LICENSE_MESSAGE") - SENTIEON_AUTH_DATA_BASE64=$(echo -n "$SENTIEON_AUTH_DATA" | base64 -w 0) - nextflow secrets set SENTIEON_AUTH_DATA_BASE64 $SENTIEON_AUTH_DATA_BASE64 + nextflow secrets set SENTIEON_AUTH_DATA $(python3 tests/modules/nf-core/sentieon/license_message.py encrypt --key "${{ secrets.SENTIEON_ENCRYPTION_KEY }}" --message "${{ secrets.SENTIEON_LICENSE_MESSAGE }}") # Test the module - name: Run nf-test env: NFT_DIFF: "pdiff" NFT_DIFF_ARGS: "--line-numbers --width 120 --expand-tabs=2" + SENTIEON_LICSRVR_IP: ${{ secrets.SENTIEON_LICSRVR_IP }} + SENTIEON_AUTH_MECH: "GitHub Actions - token" run: | # use "docker_self_hosted" if it runs on self-hosted runner and matrix.profile=docker if [ "${{ matrix.profile }}" == "docker" ]; then diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index eb09ab07dc8..595734b39a2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ repos: additional_dependencies: - prettier@3.2.5 - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.28.5 + rev: 0.29.2 hooks: - id: check-jsonschema # match meta.ymls in one of the subdirectories of modules/nf-core @@ -18,12 +18,12 @@ repos: args: ["--schemafile", "subworkflows/yaml-schema.json"] - id: check-github-workflows - repo: https://github.com/renovatebot/pre-commit-hooks - rev: 37.408.2 + rev: 38.46.0 hooks: - id: renovate-config-validator # use ruff for python files - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.4.9 + rev: v0.6.5 hooks: - id: ruff files: \.py$ diff --git a/modules/environment-schema.json b/modules/environment-schema.json index b246706e422..cf0d09815ac 100644 --- a/modules/environment-schema.json +++ b/modules/environment-schema.json @@ -4,28 +4,39 @@ "description": "Validate the environment.yml file for an nf-core module", "type": "object", "properties": { - "name": { - "type": "string", - "description": "The name of the component, same as in the meta.yml" - }, "channels": { "type": "array", - "items": [ - { - "enum": ["conda-forge"] - }, - { - "enum": ["bioconda"] - } - ], + "items": { + "enum": ["bioconda", "conda-forge"] + }, "minItems": 2 }, "dependencies": { "type": "array", "items": { - "type": "string" + "oneOf": [ + { + "type": "string", + "pattern": "^.*[^><]=[^><].*$", + "$comment": "The above pattern ensures that all packages are pinned to a specific version. This ensures the reproducibility of the environment" + }, + { + "type": "object", + "properties": { + "pip": { + "type": "array", + "items": { + "type": "string", + "pattern": "^.*==.*$", + "$comment": "The above pattern ensures that all packages are pinned to a specific version. This ensures the reproducibility of the environment" + } + } + } + } + ] } } }, - "required": ["name", "channels", "dependencies"] + "required": ["channels", "dependencies"], + "not": { "required": ["name"] } } diff --git a/modules/nf-core/abacas/environment.yml b/modules/nf-core/abacas/environment.yml index c13791900c5..a3e0eb8d415 100644 --- a/modules/nf-core/abacas/environment.yml +++ b/modules/nf-core/abacas/environment.yml @@ -1,7 +1,5 @@ -name: abacas channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::abacas=1.3.1 diff --git a/modules/nf-core/abacas/tests/main.nf.test b/modules/nf-core/abacas/tests/main.nf.test index 86f056ed43b..daf8ac788e7 100644 --- a/modules/nf-core/abacas/tests/main.nf.test +++ b/modules/nf-core/abacas/tests/main.nf.test @@ -14,9 +14,9 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['scaffolds_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/scaffolds.fasta', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } diff --git a/modules/nf-core/abricate/run/environment.yml b/modules/nf-core/abricate/run/environment.yml index 4b2a1d2a75f..c7a7d19971f 100644 --- a/modules/nf-core/abricate/run/environment.yml +++ b/modules/nf-core/abricate/run/environment.yml @@ -1,7 +1,5 @@ -name: abricate_run channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::abricate=1.0.1 diff --git a/modules/nf-core/abricate/run/main.nf b/modules/nf-core/abricate/run/main.nf index 5ec8a9a787c..b0d8a68a1cc 100644 --- a/modules/nf-core/abricate/run/main.nf +++ b/modules/nf-core/abricate/run/main.nf @@ -9,6 +9,7 @@ process ABRICATE_RUN { input: tuple val(meta), path(assembly) + path databasedir output: tuple val(meta), path("*.txt"), emit: report @@ -20,11 +21,27 @@ process ABRICATE_RUN { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def datadir = databasedir ? "--datadir ${databasedir}" : '' """ abricate \\ $assembly \\ $args \\ - --threads $task.cpus > ${prefix}.txt + $datadir \\ + --threads $task.cpus \\ + > ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + abricate: \$(echo \$(abricate --version 2>&1) | sed 's/^.*abricate //' ) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def datadir = databasedir ? '--datadir ${databasedir}' : '' + """ + touch ${prefix}.txt cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/abricate/run/meta.yml b/modules/nf-core/abricate/run/meta.yml index 9c5f21775ee..927c21f60f9 100644 --- a/modules/nf-core/abricate/run/meta.yml +++ b/modules/nf-core/abricate/run/meta.yml @@ -21,6 +21,10 @@ input: type: file description: FASTA, GenBank or EMBL formatted file pattern: "*.{fa,fasta,fna,fa.gz,fasta.gz,fna.gz,gbk,gbk.gz,embl,embl.gz}" + - databasedir: + type: directory + description: Optional location of local copy of database files, possibly with custom databases set up with `abricate --setupdb` + pattern: "*/" output: - meta: type: map diff --git a/modules/nf-core/abricate/run/tests/main.nf.test b/modules/nf-core/abricate/run/tests/main.nf.test index 07767adf9c7..f31a67e7aed 100644 --- a/modules/nf-core/abricate/run/tests/main.nf.test +++ b/modules/nf-core/abricate/run/tests/main.nf.test @@ -8,7 +8,7 @@ nextflow_process { tag "abricate" tag "abricate/run" - test("Should run without failures") { + test("bacteroides_fragilis - genome.fa.gz") { when { params { @@ -18,8 +18,36 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bacteroides_fragilis - genome - stub") { + + options "-stub" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) + ] + input[1] = [] """ } } diff --git a/modules/nf-core/abricate/run/tests/main.nf.test.snap b/modules/nf-core/abricate/run/tests/main.nf.test.snap index e8779c24a7d..9f598c4a3d5 100644 --- a/modules/nf-core/abricate/run/tests/main.nf.test.snap +++ b/modules/nf-core/abricate/run/tests/main.nf.test.snap @@ -1,5 +1,40 @@ { - "Should run without failures": { + "bacteroides_fragilis - genome - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,2204fb00277c287f5f3d82e28964aa03" + ], + "report": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2204fb00277c287f5f3d82e28964aa03" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-19T21:06:27.483697023" + }, + "bacteroides_fragilis - genome": { "content": [ { "0": [ @@ -28,6 +63,10 @@ ] } ], - "timestamp": "2023-10-15T10:06:00.77835847" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-19T21:06:20.036490495" } } \ No newline at end of file diff --git a/modules/nf-core/abricate/summary/environment.yml b/modules/nf-core/abricate/summary/environment.yml index 8b1e520887e..c7a7d19971f 100644 --- a/modules/nf-core/abricate/summary/environment.yml +++ b/modules/nf-core/abricate/summary/environment.yml @@ -1,7 +1,5 @@ -name: abricate_summary channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::abricate=1.0.1 diff --git a/modules/nf-core/abricate/summary/meta.yml b/modules/nf-core/abricate/summary/meta.yml index 390d0890732..71f1ac27605 100644 --- a/modules/nf-core/abricate/summary/meta.yml +++ b/modules/nf-core/abricate/summary/meta.yml @@ -17,7 +17,7 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - assembly: + - reports: type: file description: FASTA, GenBank or EMBL formatted file pattern: "*.{fa,fasta,fna,fa.gz,fasta.gz,fna.gz,gbk,gbk.gz,embl,embl.gz}" @@ -31,7 +31,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - - summary: + - report: type: file description: Tab-delimited report of aggregated results pattern: "*.{txt}" diff --git a/modules/nf-core/abricate/summary/tests/main.nf.test b/modules/nf-core/abricate/summary/tests/main.nf.test index f504f99b71f..a5423bd1f92 100644 --- a/modules/nf-core/abricate/summary/tests/main.nf.test +++ b/modules/nf-core/abricate/summary/tests/main.nf.test @@ -7,6 +7,7 @@ nextflow_process { tag "modules_nfcore" tag "abricate" tag "abricate/summary" + tag "abricate/run" test("Should run without failures") { @@ -17,10 +18,11 @@ nextflow_process { """ input[0] = Channel.fromList([ tuple([ id:'test1', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true)), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true)), tuple([ id:'test2', single_end:false ], - file(params.test_data['haemophilus_influenzae']['genome']['genome_fna_gz'], checkIfExists: true)) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/haemophilus_influenzae/genome/genome.fna.gz', checkIfExists: true)) ]) + input[1] = [] """ } } diff --git a/modules/nf-core/abritamr/run/environment.yml b/modules/nf-core/abritamr/run/environment.yml index 674740eb7a8..a7c8d047fd1 100644 --- a/modules/nf-core/abritamr/run/environment.yml +++ b/modules/nf-core/abritamr/run/environment.yml @@ -1,7 +1,5 @@ -name: abritamr_run channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::abritamr=1.0.14 diff --git a/modules/nf-core/abritamr/run/tests/main.nf.test b/modules/nf-core/abritamr/run/tests/main.nf.test index ff7716f7e70..ad0994062ac 100644 --- a/modules/nf-core/abritamr/run/tests/main.nf.test +++ b/modules/nf-core/abritamr/run/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['haemophilus_influenzae']['genome']['genome_fna_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/haemophilus_influenzae/genome/genome.fna.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/adapterremoval/environment.yml b/modules/nf-core/adapterremoval/environment.yml index 1737b14b816..0e089bfb305 100644 --- a/modules/nf-core/adapterremoval/environment.yml +++ b/modules/nf-core/adapterremoval/environment.yml @@ -1,7 +1,5 @@ -name: adapterremoval channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::adapterremoval=2.3.2 diff --git a/modules/nf-core/adapterremoval/tests/main.nf.test b/modules/nf-core/adapterremoval/tests/main.nf.test index 91c07b7ee19..5b5d4227ef0 100644 --- a/modules/nf-core/adapterremoval/tests/main.nf.test +++ b/modules/nf-core/adapterremoval/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true, collapse:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = [] """ @@ -39,8 +39,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false, collapse:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = [] """ @@ -68,8 +68,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = [] """ @@ -96,8 +96,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false, collapse:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/adapterremoval/adapterremoval_adapterlist.txt", checkIfExists: true) diff --git a/modules/nf-core/adapterremovalfixprefix/environment.yml b/modules/nf-core/adapterremovalfixprefix/environment.yml index 807fe64b52e..b682ca4baa7 100644 --- a/modules/nf-core/adapterremovalfixprefix/environment.yml +++ b/modules/nf-core/adapterremovalfixprefix/environment.yml @@ -1,7 +1,5 @@ -name: adapterremovalfixprefix channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::adapterremovalfixprefix=0.0.5 diff --git a/modules/nf-core/adapterremovalfixprefix/tests/main.nf.test b/modules/nf-core/adapterremovalfixprefix/tests/main.nf.test new file mode 100644 index 00000000000..3097c2dd4eb --- /dev/null +++ b/modules/nf-core/adapterremovalfixprefix/tests/main.nf.test @@ -0,0 +1,72 @@ +nextflow_process { + + name "Test Process ADAPTERREMOVALFIXPREFIX" + script "../main.nf" + process "ADAPTERREMOVALFIXPREFIX" + + tag "modules" + tag "modules_nfcore" + tag "adapterremoval" + tag "adapterremovalfixprefix" + + setup { + run("ADAPTERREMOVAL") { + script "../../adapterremoval/main.nf" + config "./nextflow.config" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = [] + """ + } + } + } + + test("paired-end - sarscov2 - [fastq]") { + + when { + + process { + """ + input[0] = ADAPTERREMOVAL.out.collapsed + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("paired-end - sarscov2 - [fastq] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = ADAPTERREMOVAL.out.collapsed + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/adapterremovalfixprefix/tests/main.nf.test.snap b/modules/nf-core/adapterremovalfixprefix/tests/main.nf.test.snap new file mode 100644 index 00000000000..0b8fc428cdf --- /dev/null +++ b/modules/nf-core/adapterremovalfixprefix/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "paired-end - sarscov2 - [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fq.gz:md5,369452751050a7f1e31b839702d61417" + ] + ], + "1": [ + "versions.yml:md5,76647a727690a8fbafa77a4b77cbe64c" + ], + "fixed_fastq": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fq.gz:md5,369452751050a7f1e31b839702d61417" + ] + ], + "versions": [ + "versions.yml:md5,76647a727690a8fbafa77a4b77cbe64c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-22T08:19:25.477451" + }, + "paired-end - sarscov2 - [fastq]": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fq.gz:md5,369452751050a7f1e31b839702d61417" + ] + ], + "1": [ + "versions.yml:md5,76647a727690a8fbafa77a4b77cbe64c" + ], + "fixed_fastq": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fq.gz:md5,369452751050a7f1e31b839702d61417" + ] + ], + "versions": [ + "versions.yml:md5,76647a727690a8fbafa77a4b77cbe64c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-22T07:57:53.853795" + } +} \ No newline at end of file diff --git a/modules/nf-core/adapterremovalfixprefix/tests/nextflow.config b/modules/nf-core/adapterremovalfixprefix/tests/nextflow.config new file mode 100644 index 00000000000..42fca30b408 --- /dev/null +++ b/modules/nf-core/adapterremovalfixprefix/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: ADAPTERREMOVAL { + ext.args = "--collapse" + } +} diff --git a/modules/nf-core/adapterremovalfixprefix/tests/tags.yml b/modules/nf-core/adapterremovalfixprefix/tests/tags.yml new file mode 100644 index 00000000000..fa31b97a8f6 --- /dev/null +++ b/modules/nf-core/adapterremovalfixprefix/tests/tags.yml @@ -0,0 +1,2 @@ +adapterremovalfixprefix: + - "modules/nf-core/adapterremovalfixprefix/**" diff --git a/modules/nf-core/admixture/environment.yml b/modules/nf-core/admixture/environment.yml index ba57cac3011..30cac0d6b09 100644 --- a/modules/nf-core/admixture/environment.yml +++ b/modules/nf-core/admixture/environment.yml @@ -1,7 +1,5 @@ -name: admixture channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::admixture=1.3.0 diff --git a/modules/nf-core/admixture/meta.yml b/modules/nf-core/admixture/meta.yml index 500da5572f6..06aa57ff752 100644 --- a/modules/nf-core/admixture/meta.yml +++ b/modules/nf-core/admixture/meta.yml @@ -45,11 +45,11 @@ output: type: file description: File containing software versions pattern: "versions.yml" - - Q-ancestry-fractions: + - ancestry_fractions: type: file description: Space-delimited files containing ancestry fractions. The output filenames have the number of populations (K) that was assumed for the analysis. pattern: "*.{Q}" - - P-allele-frequencies: + - allele_frequencies: type: file description: Space-delimited files containing the allele frequencies of the inferred ancestral populations. The output filenames have the number of populations (K) that was assumed for the analysis. pattern: "*.{P}" @@ -57,3 +57,4 @@ authors: - "@atrigila" maintainers: - "@atrigila" + - "@gallvp" diff --git a/modules/nf-core/admixture/tests/main.nf.test b/modules/nf-core/admixture/tests/main.nf.test index aa7053adeb4..4bc8a62b9aa 100644 --- a/modules/nf-core/admixture/tests/main.nf.test +++ b/modules/nf-core/admixture/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['genmod_annotate_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test_annotate.vcf.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/affy/justrma/environment.yml b/modules/nf-core/affy/justrma/environment.yml index b0afd895c07..6f25cb2ae1c 100644 --- a/modules/nf-core/affy/justrma/environment.yml +++ b/modules/nf-core/affy/justrma/environment.yml @@ -1,7 +1,6 @@ -name: affy_justrma channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bioconductor-affy=1.78.0 + - conda-forge::r-base=4.3.1 diff --git a/modules/nf-core/affy/justrma/main.nf b/modules/nf-core/affy/justrma/main.nf index 62c71d2453d..57510af5198 100644 --- a/modules/nf-core/affy/justrma/main.nf +++ b/modules/nf-core/affy/justrma/main.nf @@ -21,5 +21,15 @@ process AFFY_JUSTRMA { task.ext.when == null || task.ext.when script: + prefix = task.ext.prefix ?: "${meta.id}" template 'affy_justrma.R' + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}_eset.rds + touch ${prefix}_matrix.tsv + touch R_sessionInfo.log + touch versions.yml + """ } diff --git a/modules/nf-core/affy/justrma/templates/affy_justrma.R b/modules/nf-core/affy/justrma/templates/affy_justrma.R index 515c75206de..7b57dbc8f2b 100755 --- a/modules/nf-core/affy/justrma/templates/affy_justrma.R +++ b/modules/nf-core/affy/justrma/templates/affy_justrma.R @@ -271,8 +271,8 @@ if (opt\$build_annotation){ # R object for other processes to use -output_prefix <- '$task.ext.prefix' -saveRDS(eset, file = paste0(output_prefix, 'eset.rds')) +output_prefix <- '$prefix' +saveRDS(eset, file = paste0(output_prefix, '_eset.rds')) # Write matrix @@ -282,7 +282,7 @@ write.table( round_dataframe_columns(as.data.frame(exprs(eset))), check.names = FALSE ), - file = paste0(output_prefix, 'matrix.tsv'), + file = paste0(output_prefix, '_matrix.tsv'), col.names = TRUE, row.names = FALSE, sep = '\t', diff --git a/modules/nf-core/affy/justrma/tests/main.nf.test b/modules/nf-core/affy/justrma/tests/main.nf.test new file mode 100644 index 00000000000..fe77d0ae0de --- /dev/null +++ b/modules/nf-core/affy/justrma/tests/main.nf.test @@ -0,0 +1,108 @@ +nextflow_process { + + name "Test Process AFFY_JUSTRMA" + script "../main.nf" + process "AFFY_JUSTRMA" + + tag "modules" + tag "modules_nfcore" + tag "affy" + tag "affy/justrma" + tag "untar" + + setup { + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/array_expression/GSE38751_RAW.tar', checkIfExists: true) + ] + """ + } + } + } + + test("homo_sapiens genome affy_array [celfiles]") { + + when { + process { + """ + ch_samplesheet = Channel.of([ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/array_expression/GSE38751.csv', checkIfExists: true) + ] + ) + input[0] = ch_samplesheet.join(UNTAR.out.untar) + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions, + process.out.expression, + file(process.out.rds.get(0).get(1)).name, + process.out.log).match() } + ) + } + + } + + test("homo_sapiens genome affy_array [celfiles] - annotation") { + config "./nextflow.config" + when { + process { + """ + ch_samplesheet = Channel.of([ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/array_expression/GSE38751.csv', checkIfExists: true) + ] + ) + input[0] = ch_samplesheet.join(UNTAR.out.untar) + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions, + process.out.expression, + process.out.annotation, + file(process.out.rds.get(0).get(1)).name, + process.out.log).match() } + ) + } + + } + + test("homo_sapiens genome affy_array [celfiles] - stub") { + + options "-stub" + when { + process { + """ + ch_samplesheet = Channel.of([ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/array_expression/GSE38751.csv', checkIfExists: true) + ] + ) + input[0] = ch_samplesheet.join(UNTAR.out.untar) + input[1] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/affy/justrma/tests/main.nf.test.snap b/modules/nf-core/affy/justrma/tests/main.nf.test.snap new file mode 100644 index 00000000000..80f1eea00a7 --- /dev/null +++ b/modules/nf-core/affy/justrma/tests/main.nf.test.snap @@ -0,0 +1,109 @@ +{ + "homo_sapiens genome affy_array [celfiles]": { + "content": [ + [ + "versions.yml:md5,d4eccefc5230f488e9204b46da35eaa2" + ], + [ + [ + { + "id": "test" + }, + "test_matrix.tsv:md5,878dfdd16d266ba9b382a8c6f088908b" + ] + ], + "test_eset.rds", + null + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-28T19:20:51.941444008" + }, + "homo_sapiens genome affy_array [celfiles] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_eset.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_matrix.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "annotation": [ + + ], + "expression": [ + [ + { + "id": "test" + }, + "test_matrix.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "rds": [ + [ + { + "id": "test" + }, + "test_eset.rds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-02T15:41:09.362627435" + }, + "homo_sapiens genome affy_array [celfiles] - annotation": { + "content": [ + [ + "versions.yml:md5,d4eccefc5230f488e9204b46da35eaa2" + ], + [ + [ + { + "id": "test" + }, + "normalised_matrix.tsv:md5,462665542e9531f6d8993b745ce78ae4" + ] + ], + [ + [ + { + "id": "test" + }, + "hgu133a2.annotation.tsv:md5,e2ade4cff2efaed4425a468110bbcd35" + ] + ], + "normalised_eset.rds", + null + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-02T15:40:50.64120687" + } +} \ No newline at end of file diff --git a/modules/nf-core/affy/justrma/tests/nextflow.config b/modules/nf-core/affy/justrma/tests/nextflow.config new file mode 100644 index 00000000000..1268eed939a --- /dev/null +++ b/modules/nf-core/affy/justrma/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: 'AFFY_JUSTRMA' { + ext.args = '--sample_name_col name --build_annotation TRUE' + ext.prefix = 'normalised' + } +} diff --git a/modules/nf-core/affy/justrma/tests/tags.yml b/modules/nf-core/affy/justrma/tests/tags.yml new file mode 100644 index 00000000000..8d1503130e2 --- /dev/null +++ b/modules/nf-core/affy/justrma/tests/tags.yml @@ -0,0 +1,2 @@ +affy/justrma: + - "modules/nf-core/affy/justrma/**" diff --git a/modules/nf-core/agat/convertspgff2gtf/environment.yml b/modules/nf-core/agat/convertspgff2gtf/environment.yml index 67473316dfb..0410ee765ea 100644 --- a/modules/nf-core/agat/convertspgff2gtf/environment.yml +++ b/modules/nf-core/agat/convertspgff2gtf/environment.yml @@ -1,7 +1,5 @@ -name: agat_convertspgff2gtf channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::agat=1.4.0 diff --git a/modules/nf-core/agat/convertspgff2gtf/tests/main.nf.test b/modules/nf-core/agat/convertspgff2gtf/tests/main.nf.test index 9accfecc147..401f4552ace 100644 --- a/modules/nf-core/agat/convertspgff2gtf/tests/main.nf.test +++ b/modules/nf-core/agat/convertspgff2gtf/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } @@ -42,7 +42,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } diff --git a/modules/nf-core/agat/convertspgff2tsv/environment.yml b/modules/nf-core/agat/convertspgff2tsv/environment.yml index 690f50ae5be..0410ee765ea 100644 --- a/modules/nf-core/agat/convertspgff2tsv/environment.yml +++ b/modules/nf-core/agat/convertspgff2tsv/environment.yml @@ -1,7 +1,5 @@ -name: agat_convertspgff2tsv channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::agat=1.4.0 diff --git a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test index 4898a4a9bd1..6a2e8942e26 100644 --- a/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test +++ b/modules/nf-core/agat/convertspgff2tsv/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } @@ -40,7 +40,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } diff --git a/modules/nf-core/agat/convertspgxf2gxf/environment.yml b/modules/nf-core/agat/convertspgxf2gxf/environment.yml index 6ed34fab062..0410ee765ea 100644 --- a/modules/nf-core/agat/convertspgxf2gxf/environment.yml +++ b/modules/nf-core/agat/convertspgxf2gxf/environment.yml @@ -1,7 +1,5 @@ -name: agat_convertspgxf2gxf channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::agat=1.4.0 diff --git a/modules/nf-core/agat/convertspgxf2gxf/tests/main.nf.test b/modules/nf-core/agat/convertspgxf2gxf/tests/main.nf.test index db8599196c9..d8d7bc2d1fb 100644 --- a/modules/nf-core/agat/convertspgxf2gxf/tests/main.nf.test +++ b/modules/nf-core/agat/convertspgxf2gxf/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) ] """ } @@ -42,7 +42,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) ] """ } diff --git a/modules/nf-core/agat/spaddintrons/environment.yml b/modules/nf-core/agat/spaddintrons/environment.yml index b303241cc95..dabc642a1b4 100644 --- a/modules/nf-core/agat/spaddintrons/environment.yml +++ b/modules/nf-core/agat/spaddintrons/environment.yml @@ -1,7 +1,5 @@ -name: agat_spaddintrons channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::agat=1.4.0" diff --git a/modules/nf-core/agat/spaddintrons/tests/main.nf.test b/modules/nf-core/agat/spaddintrons/tests/main.nf.test index d5c5c729f86..82d41932202 100644 --- a/modules/nf-core/agat/spaddintrons/tests/main.nf.test +++ b/modules/nf-core/agat/spaddintrons/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] input[1] = [] """ @@ -41,7 +41,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] input[1] = [] """ diff --git a/modules/nf-core/agat/spfilterfeaturefromkilllist/environment.yml b/modules/nf-core/agat/spfilterfeaturefromkilllist/environment.yml new file mode 100644 index 00000000000..a6b5f2b9aa1 --- /dev/null +++ b/modules/nf-core/agat/spfilterfeaturefromkilllist/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::agat=1.4.0" diff --git a/modules/nf-core/agat/spfilterfeaturefromkilllist/main.nf b/modules/nf-core/agat/spfilterfeaturefromkilllist/main.nf new file mode 100644 index 00000000000..4918ed7f340 --- /dev/null +++ b/modules/nf-core/agat/spfilterfeaturefromkilllist/main.nf @@ -0,0 +1,53 @@ +process AGAT_SPFILTERFEATUREFROMKILLLIST { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/agat:1.4.0--pl5321hdfd78af_0': + 'biocontainers/agat:1.4.0--pl5321hdfd78af_0' }" + + input: + tuple val(meta), path(gff) + path kill_list + path config + + output: + tuple val(meta), path("*.gff"), emit: gff + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def config_param = config ? "--config $config" : '' + if( "$gff" == "${prefix}.gff" ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + agat_sp_filter_feature_from_kill_list.pl \\ + --gff $gff \\ + --kill_list $kill_list \\ + $config_param \\ + $args \\ + --output "${prefix}.gff" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + agat: \$(agat_sp_filter_feature_from_kill_list.pl -h | sed -n 's/.*(AGAT) - Version: \\(.*\\) .*/\\1/p') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if( "$gff" == "${prefix}.gff" ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + touch "${prefix}.gff" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + agat: \$(agat_sp_filter_feature_from_kill_list.pl -h | sed -n 's/.*(AGAT) - Version: \\(.*\\) .*/\\1/p') + END_VERSIONS + """ +} diff --git a/modules/nf-core/agat/spfilterfeaturefromkilllist/meta.yml b/modules/nf-core/agat/spfilterfeaturefromkilllist/meta.yml new file mode 100644 index 00000000000..d408fe7fe3b --- /dev/null +++ b/modules/nf-core/agat/spfilterfeaturefromkilllist/meta.yml @@ -0,0 +1,60 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "agat_spfilterfeaturefromkilllist" +description: | + The script aims to remove features based on a kill list. The default behaviour is to look at the features's ID. + If the feature has an ID (case insensitive) listed among the kill list it will be removed. /!\ Removing a level1 + or level2 feature will automatically remove all linked subfeatures, and removing all children of a feature will + automatically remove this feature too. +keywords: + - genomics + - gff + - remove + - feature +tools: + - "agat": + description: "Another Gff Analysis Toolkit (AGAT). Suite of tools to handle gene annotations in any GTF/GFF format." + homepage: "https://agat.readthedocs.io/en/latest/" + documentation: "https://agat.readthedocs.io/en/latest/tools/agat_sp_filter_feature_from_kill_list.html" + tool_dev_url: "https://github.com/NBISweden/AGAT" + doi: "10.5281/zenodo.3552717" + licence: ["GPL v3"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - gff: + type: file + description: Input GFF3 file that will be read + pattern: "*.{gff,gff3}" + - kill_list: + type: file + description: Kill list. One value per line. + pattern: "*.txt" + - config: + type: file + description: | + Input agat config file. By default AGAT takes as input agat_config.yaml file from the working directory if any, otherwise it takes the orignal agat_config.yaml shipped with AGAT. To get the agat_config.yaml locally type: "agat config --expose". The --config option gives you the possibility to use your own AGAT config file (located elsewhere or named differently). + pattern: "*.yaml" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - gff: + type: file + description: Output GFF file. + pattern: "*.gff" + +authors: + - "@GallVp" +maintainers: + - "@GallVp" diff --git a/modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test b/modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test new file mode 100644 index 00000000000..82a3c307413 --- /dev/null +++ b/modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test @@ -0,0 +1,104 @@ +nextflow_process { + + name "Test Process AGAT_SPFILTERFEATUREFROMKILLLIST" + script "../main.nf" + process "AGAT_SPFILTERFEATUREFROMKILLLIST" + + tag "modules" + tag "modules_nfcore" + tag "agat" + tag "agat/spfilterfeaturefromkilllist" + + test("sarscov2 - gff3") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) + ] + + def kill_list = "unknown_transcript_1" + def kill_list_file = new File('kill.list.txt') + kill_list_file.text = kill_list + + input[1] = kill_list_file.toPath() + + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - gff3 - config") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) + ] + + def kill_list = "unknown_transcript_1" + def kill_list_file = new File('kill.list.txt') + kill_list_file.text = kill_list + + input[1] = kill_list_file.toPath() + + input[2] = file(params.modules_testdata_base_path + 'generic/config/agat_config.yaml', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - gff3 - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) + ] + + def kill_list = "unknown_transcript_1" + def kill_list_file = new File('kill.list.txt') + kill_list_file.text = kill_list + + input[1] = kill_list_file.toPath() + + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test.snap b/modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test.snap new file mode 100644 index 00000000000..8322d0fd864 --- /dev/null +++ b/modules/nf-core/agat/spfilterfeaturefromkilllist/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "sarscov2 - gff3 - config": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gff:md5,df19e1b84ba6f691d20c72b397c88abf" + ] + ], + "1": [ + "versions.yml:md5,e2962240799182aee69421c746be183a" + ], + "gff": [ + [ + { + "id": "test" + }, + "test.gff:md5,df19e1b84ba6f691d20c72b397c88abf" + ] + ], + "versions": [ + "versions.yml:md5,e2962240799182aee69421c746be183a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:32:54.707393" + }, + "sarscov2 - gff3 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,e2962240799182aee69421c746be183a" + ], + "gff": [ + [ + { + "id": "test" + }, + "test.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e2962240799182aee69421c746be183a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:32:59.888053" + }, + "sarscov2 - gff3": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gff:md5,df19e1b84ba6f691d20c72b397c88abf" + ] + ], + "1": [ + "versions.yml:md5,e2962240799182aee69421c746be183a" + ], + "gff": [ + [ + { + "id": "test" + }, + "test.gff:md5,df19e1b84ba6f691d20c72b397c88abf" + ] + ], + "versions": [ + "versions.yml:md5,e2962240799182aee69421c746be183a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T15:32:47.772624" + } +} \ No newline at end of file diff --git a/modules/nf-core/agat/spmergeannotations/environment.yml b/modules/nf-core/agat/spmergeannotations/environment.yml new file mode 100644 index 00000000000..a6b5f2b9aa1 --- /dev/null +++ b/modules/nf-core/agat/spmergeannotations/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::agat=1.4.0" diff --git a/modules/nf-core/agat/spmergeannotations/main.nf b/modules/nf-core/agat/spmergeannotations/main.nf new file mode 100644 index 00000000000..e0861c08095 --- /dev/null +++ b/modules/nf-core/agat/spmergeannotations/main.nf @@ -0,0 +1,53 @@ +process AGAT_SPMERGEANNOTATIONS { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/agat:1.4.0--pl5321hdfd78af_0': + 'biocontainers/agat:1.4.0--pl5321hdfd78af_0' }" + + input: + tuple val(meta), path(gffs) + path config + + output: + tuple val(meta), path("*.gff") , emit: gff + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def config_param = config ? "--config $config" : '' + def file_names = "$gffs".split(' ') + def gff_param = file_names.collect { "--gff $it" }.join(' ') + if ( file_names.contains ( "${prefix}.gff" ) ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + agat_sp_merge_annotations.pl \\ + $gff_param \\ + $config_param \\ + $args \\ + --output ${prefix}.gff + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + agat: \$(agat_sp_merge_annotations.pl -h | sed -n 's/.*(AGAT) - Version: \\(.*\\) .*/\\1/p') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def file_names = "$gffs".split(' ') + if ( file_names.contains ( "${prefix}.gff" ) ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + touch ${prefix}.gff + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + agat: \$(agat_sp_merge_annotations.pl -h | sed -n 's/.*(AGAT) - Version: \\(.*\\) .*/\\1/p') + END_VERSIONS + """ +} diff --git a/modules/nf-core/agat/spmergeannotations/meta.yml b/modules/nf-core/agat/spmergeannotations/meta.yml new file mode 100644 index 00000000000..afa9ddd0e7d --- /dev/null +++ b/modules/nf-core/agat/spmergeannotations/meta.yml @@ -0,0 +1,54 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "agat_spmergeannotations" +description: | + This script merge different gff annotation files in one. It uses the AGAT parser that takes care of duplicated names and fixes other oddities met in those files. +keywords: + - genomics + - gff + - merge + - combine +tools: + - "agat": + description: "Another Gff Analysis Toolkit (AGAT). Suite of tools to handle gene annotations in any GTF/GFF format." + homepage: "https://agat.readthedocs.io/en/latest/" + documentation: "https://agat.readthedocs.io/en/latest/tools/agat_sp_merge_annotations.html" + tool_dev_url: "https://github.com/NBISweden/AGAT" + doi: "10.5281/zenodo.3552717" + licence: ["GPL v3"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - gffs: + type: list + description: A list of GFFs to merge + pattern: "[ *.{gff,gff3} ]" + - config: + type: file + description: | + Input agat config file. By default AGAT takes as input agat_config.yaml file from the working directory if any, + otherwise it takes the orignal agat_config.yaml shipped with AGAT. To get the agat_config.yaml + locally type: "agat config --expose". The --config option gives you the possibility to use your + own AGAT config file (located elsewhere or named differently). + pattern: "*.yaml" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - gff: + type: file + description: Output GFF file. + pattern: "*.gff" +authors: + - "@GallVp" +maintainers: + - "@GallVp" diff --git a/modules/nf-core/agat/spmergeannotations/tests/main.nf.test b/modules/nf-core/agat/spmergeannotations/tests/main.nf.test new file mode 100644 index 00000000000..3f500fa875f --- /dev/null +++ b/modules/nf-core/agat/spmergeannotations/tests/main.nf.test @@ -0,0 +1,130 @@ +nextflow_process { + + name "Test Process AGAT_SPMERGEANNOTATIONS" + script "../main.nf" + process "AGAT_SPMERGEANNOTATIONS" + + tag "modules" + tag "modules_nfcore" + tag "agat" + tag "agat/spmergeannotations" + + test("candidatus_portiera_aleyrodidarum - multi_gffs") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test1.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test2.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test3.gff', checkIfExists: true) + ] + ] + + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.gff[0][1]).text.contains('AGAT gene') }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } + + test("candidatus_portiera_aleyrodidarum - multi_gffs - stub") { + + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test1.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test2.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test3.gff', checkIfExists: true) + ] + ] + + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("candidatus_portiera_aleyrodidarum - multi_gffs - config") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test1.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test2.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test3.gff', checkIfExists: true) + ] + ] + + input[1] = file(params.modules_testdata_base_path + 'generic/config/agat_config.yaml', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.gff[0][1]).text.contains('AGAT gene') }, + { assert snapshot(process.out.versions).match("versions_config") } + ) + } + + } + + test("candidatus_portiera_aleyrodidarum - multi_gffs - stub - config") { + + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test1.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test2.gff', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/gff/test3.gff', checkIfExists: true) + ] + ] + + input[1] = file(params.modules_testdata_base_path + 'generic/config/agat_config.yaml', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/agat/spmergeannotations/tests/main.nf.test.snap b/modules/nf-core/agat/spmergeannotations/tests/main.nf.test.snap new file mode 100644 index 00000000000..5b56cd9ae42 --- /dev/null +++ b/modules/nf-core/agat/spmergeannotations/tests/main.nf.test.snap @@ -0,0 +1,92 @@ +{ + "candidatus_portiera_aleyrodidarum - multi_gffs - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,bb159018d6a64ae51339f7c886ad28d7" + ], + "gff": [ + [ + { + "id": "test" + }, + "test.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,bb159018d6a64ae51339f7c886ad28d7" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T13:23:28.495387" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,bb159018d6a64ae51339f7c886ad28d7" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T13:23:23.220341" + }, + "versions_config": { + "content": [ + [ + "versions.yml:md5,bb159018d6a64ae51339f7c886ad28d7" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T13:25:34.519378" + }, + "candidatus_portiera_aleyrodidarum - multi_gffs - stub - config": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,bb159018d6a64ae51339f7c886ad28d7" + ], + "gff": [ + [ + { + "id": "test" + }, + "test.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,bb159018d6a64ae51339f7c886ad28d7" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T13:23:43.811463" + } +} \ No newline at end of file diff --git a/modules/nf-core/agat/spmergeannotations/tests/tags.yml b/modules/nf-core/agat/spmergeannotations/tests/tags.yml new file mode 100644 index 00000000000..de92188970d --- /dev/null +++ b/modules/nf-core/agat/spmergeannotations/tests/tags.yml @@ -0,0 +1,2 @@ +agat/spmergeannotations: + - "modules/nf-core/agat/spmergeannotations/**" diff --git a/modules/nf-core/agat/spstatistics/environment.yml b/modules/nf-core/agat/spstatistics/environment.yml index c868b7b8e09..0410ee765ea 100644 --- a/modules/nf-core/agat/spstatistics/environment.yml +++ b/modules/nf-core/agat/spstatistics/environment.yml @@ -1,7 +1,5 @@ -name: agat_spstatistics channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::agat=1.4.0 diff --git a/modules/nf-core/agat/spstatistics/tests/main.nf.test b/modules/nf-core/agat/spstatistics/tests/main.nf.test index a15738a7a4a..ef867576850 100644 --- a/modules/nf-core/agat/spstatistics/tests/main.nf.test +++ b/modules/nf-core/agat/spstatistics/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } @@ -40,7 +40,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } diff --git a/modules/nf-core/agat/sqstatbasic/environment.yml b/modules/nf-core/agat/sqstatbasic/environment.yml index 58b04205eec..0410ee765ea 100644 --- a/modules/nf-core/agat/sqstatbasic/environment.yml +++ b/modules/nf-core/agat/sqstatbasic/environment.yml @@ -1,7 +1,5 @@ -name: agat_sqstatbasic channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::agat=1.4.0 diff --git a/modules/nf-core/agat/sqstatbasic/tests/main.nf.test b/modules/nf-core/agat/sqstatbasic/tests/main.nf.test index f289188d417..4803f51ed6c 100644 --- a/modules/nf-core/agat/sqstatbasic/tests/main.nf.test +++ b/modules/nf-core/agat/sqstatbasic/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } @@ -40,7 +40,7 @@ nextflow_process { """ input[0] = [ [ id: 'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } diff --git a/modules/nf-core/agrvate/environment.yml b/modules/nf-core/agrvate/environment.yml index 4e43c338523..bfdd71d2968 100644 --- a/modules/nf-core/agrvate/environment.yml +++ b/modules/nf-core/agrvate/environment.yml @@ -1,7 +1,5 @@ -name: agrvate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::agrvate=1.0.2 diff --git a/modules/nf-core/agrvate/tests/main.nf.test b/modules/nf-core/agrvate/tests/main.nf.test index 745eb1375fd..e196db66fc1 100644 --- a/modules/nf-core/agrvate/tests/main.nf.test +++ b/modules/nf-core/agrvate/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -43,7 +43,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/ale/environment.yml b/modules/nf-core/ale/environment.yml index c6e2efc2dba..8993eb2a399 100644 --- a/modules/nf-core/ale/environment.yml +++ b/modules/nf-core/ale/environment.yml @@ -1,10 +1,8 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "ale" channels: - conda-forge - bioconda - - defaults - tanghaibao dependencies: - "bioconda::ale=20180904" diff --git a/modules/nf-core/ale/tests/main.nf.test b/modules/nf-core/ale/tests/main.nf.test index 97f1ce8275f..87c5cfa652e 100644 --- a/modules/nf-core/ale/tests/main.nf.test +++ b/modules/nf-core/ale/tests/main.nf.test @@ -16,8 +16,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ] """ } @@ -40,8 +40,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) ] """ } @@ -64,8 +64,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) ] """ } @@ -88,8 +88,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) ] """ } diff --git a/modules/nf-core/allelecounter/environment.yml b/modules/nf-core/allelecounter/environment.yml index b503525445c..69179cbf949 100644 --- a/modules/nf-core/allelecounter/environment.yml +++ b/modules/nf-core/allelecounter/environment.yml @@ -1,7 +1,5 @@ -name: allelecounter channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cancerit-allelecount=4.3.0 diff --git a/modules/nf-core/allelecounter/tests/main.nf.test b/modules/nf-core/allelecounter/tests/main.nf.test index 0ef1415b4b2..7a0bf13fc50 100644 --- a/modules/nf-core/allelecounter/tests/main.nf.test +++ b/modules/nf-core/allelecounter/tests/main.nf.test @@ -15,11 +15,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) ] - input[1] = [ file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) ] // positions - input[2] = [ file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) ] //fasta + input[1] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] // positions + input[2] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] //fasta """ } } @@ -42,11 +42,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) ] - input[1] = [ file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) ] // positions - input[2] = [ file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) ] //fasta + input[1] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] // positions + input[2] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] //fasta """ } } diff --git a/modules/nf-core/ampcombi/environment.yml b/modules/nf-core/ampcombi/environment.yml index 0305a5f7097..21ec05e613e 100644 --- a/modules/nf-core/ampcombi/environment.yml +++ b/modules/nf-core/ampcombi/environment.yml @@ -1,10 +1,8 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "ampcombi" channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ampcombi=0.1.7 - python=3.11 diff --git a/modules/nf-core/ampcombi2/cluster/environment.yml b/modules/nf-core/ampcombi2/cluster/environment.yml index aa5e5fe44d1..420c955bfd2 100644 --- a/modules/nf-core/ampcombi2/cluster/environment.yml +++ b/modules/nf-core/ampcombi2/cluster/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "ampcombi2_cluster" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::ampcombi=0.2.2" diff --git a/modules/nf-core/ampcombi2/complete/environment.yml b/modules/nf-core/ampcombi2/complete/environment.yml index fa640b77119..420c955bfd2 100644 --- a/modules/nf-core/ampcombi2/complete/environment.yml +++ b/modules/nf-core/ampcombi2/complete/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "ampcombi2_complete" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::ampcombi=0.2.2" diff --git a/modules/nf-core/ampcombi2/parsetables/environment.yml b/modules/nf-core/ampcombi2/parsetables/environment.yml index 7a4b37ab702..420c955bfd2 100644 --- a/modules/nf-core/ampcombi2/parsetables/environment.yml +++ b/modules/nf-core/ampcombi2/parsetables/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "ampcombi2_parsetables" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::ampcombi=0.2.2" diff --git a/modules/nf-core/ampir/environment.yml b/modules/nf-core/ampir/environment.yml index 8cb475d101f..359e426c508 100644 --- a/modules/nf-core/ampir/environment.yml +++ b/modules/nf-core/ampir/environment.yml @@ -1,7 +1,5 @@ -name: ampir channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::r-ampir=1.1.0 diff --git a/modules/nf-core/ampir/tests/main.nf.test b/modules/nf-core/ampir/tests/main.nf.test index 35943624332..0ed40ef50df 100644 --- a/modules/nf-core/ampir/tests/main.nf.test +++ b/modules/nf-core/ampir/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['candidatus_portiera_aleyrodidarum']['genome']['proteome_fasta'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/proteome.fasta', checkIfExists: true), ] input[1] = "precursor" // model input[2] = 10 // min_length @@ -42,7 +42,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['candidatus_portiera_aleyrodidarum']['genome']['proteome_fasta'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/proteome.fasta', checkIfExists: true), ] input[1] = "precursor" // model input[2] = 10 // min_length diff --git a/modules/nf-core/amplify/predict/environment.yml b/modules/nf-core/amplify/predict/environment.yml index c980cf5e140..e1cb57035ec 100644 --- a/modules/nf-core/amplify/predict/environment.yml +++ b/modules/nf-core/amplify/predict/environment.yml @@ -1,7 +1,5 @@ -name: amplify_predict channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::amplify=2.0.0 diff --git a/modules/nf-core/amplify/predict/tests/main.nf.test b/modules/nf-core/amplify/predict/tests/main.nf.test index 43c9155c57c..835c409c5e1 100644 --- a/modules/nf-core/amplify/predict/tests/main.nf.test +++ b/modules/nf-core/amplify/predict/tests/main.nf.test @@ -20,7 +20,7 @@ nextflow_process { """ input[0] = Channel.fromList([ tuple([ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true)) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true)) ]) input[1] = "gbk" """ diff --git a/modules/nf-core/amps/environment.yml b/modules/nf-core/amps/environment.yml index 4cd15476174..d78219cbe01 100644 --- a/modules/nf-core/amps/environment.yml +++ b/modules/nf-core/amps/environment.yml @@ -1,7 +1,5 @@ -name: amps channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::hops=0.35 diff --git a/modules/nf-core/amrfinderplus/run/environment.yml b/modules/nf-core/amrfinderplus/run/environment.yml index 214f44f4957..2744ce54420 100644 --- a/modules/nf-core/amrfinderplus/run/environment.yml +++ b/modules/nf-core/amrfinderplus/run/environment.yml @@ -1,7 +1,5 @@ -name: amrfinderplus_run channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ncbi-amrfinderplus=3.12.8 diff --git a/modules/nf-core/amrfinderplus/update/environment.yml b/modules/nf-core/amrfinderplus/update/environment.yml index d08f0725ee7..2744ce54420 100644 --- a/modules/nf-core/amrfinderplus/update/environment.yml +++ b/modules/nf-core/amrfinderplus/update/environment.yml @@ -1,7 +1,5 @@ -name: amrfinderplus_update channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ncbi-amrfinderplus=3.12.8 diff --git a/modules/nf-core/angsd/contamination/environment.yml b/modules/nf-core/angsd/contamination/environment.yml index 57a57276118..f2f4e7d3d77 100644 --- a/modules/nf-core/angsd/contamination/environment.yml +++ b/modules/nf-core/angsd/contamination/environment.yml @@ -1,7 +1,5 @@ -name: angsd_contamination channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::angsd=0.940 diff --git a/modules/nf-core/angsd/contamination/main.nf b/modules/nf-core/angsd/contamination/main.nf index b33171b31df..823db07f27c 100644 --- a/modules/nf-core/angsd/contamination/main.nf +++ b/modules/nf-core/angsd/contamination/main.nf @@ -4,8 +4,8 @@ process ANGSD_CONTAMINATION { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/angsd:0.939--h468462d_0': - 'biocontainers/angsd:0.939--h468462d_0' }" + 'https://depot.galaxyproject.org/singularity/angsd:0.940--hf5e1c6e_3': + 'biocontainers/angsd:0.940--hf5e1c6e_3' }" input: tuple val(meta), path(icounts) @@ -30,6 +30,18 @@ process ANGSD_CONTAMINATION { 2> >(tee ${prefix}.txt >&2) + cat <<-END_VERSIONS > versions.yml + "${task.process}": + angsd: \$(echo \$(angsd 2>&1) | grep version | head -n 1 | sed 's/.*version: //g;s/ .*//g') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml "${task.process}": angsd: \$(echo \$(angsd 2>&1) | grep version | head -n 1 | sed 's/.*version: //g;s/ .*//g') diff --git a/modules/nf-core/angsd/contamination/meta.yml b/modules/nf-core/angsd/contamination/meta.yml index dc01c90c03e..ffe6428d644 100644 --- a/modules/nf-core/angsd/contamination/meta.yml +++ b/modules/nf-core/angsd/contamination/meta.yml @@ -22,6 +22,11 @@ input: type: file description: Internal format for dumping binary single chrs. Useful for ANGSD contamination pattern: "*.icnts.gz" + - meta2: + type: map + description: | + Groovy Map containing information related to the hapmap_file. + e.g. [ id:'test' ] - hapmap_file: type: file description: A list of variable sites to look for heterozygosity. diff --git a/modules/nf-core/angsd/contamination/tests/main.nf.test b/modules/nf-core/angsd/contamination/tests/main.nf.test new file mode 100644 index 00000000000..1b5737d012c --- /dev/null +++ b/modules/nf-core/angsd/contamination/tests/main.nf.test @@ -0,0 +1,78 @@ + +nextflow_process { + + name "Test Process ANGSD_CONTAMINATION" + script "../main.nf" + process "ANGSD_CONTAMINATION" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "angsd" + tag "angsd/contamination" + tag "angsd/docounts" + + setup { + run("ANGSD_DOCOUNTS") { + script "../../../angsd/docounts/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam.bai', checkIfExists: true), + [] + ] + + """ + } + } + } + + test("test-angsd-contamination") { + + when { + process { + """ + input[0] = ANGSD_DOCOUNTS.out.icounts + input[1] = [ [id:'test2'], file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/angsd/HapMapChrX.gz")] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.txt[0][1]).readLines()[3..7], + file(process.out.versions[0]).readLines(), + process.out.versions + ).match() + } + ) + } + } + + test("test-angsd-contamination-stub") { + options '-stub' + + when { + process { + """ + input[0] = ANGSD_DOCOUNTS.out.icounts + input[1] = [ [id:'test2'], file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/angsd/HapMapChrX.gz")] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/angsd/contamination/tests/main.nf.test.snap b/modules/nf-core/angsd/contamination/tests/main.nf.test.snap new file mode 100644 index 00000000000..585dedcb5c0 --- /dev/null +++ b/modules/nf-core/angsd/contamination/tests/main.nf.test.snap @@ -0,0 +1,60 @@ +{ + "test-angsd-contamination": { + "content": [ + [ + "Seed value of 0 (zero) will use time as seed", + "-----------------", + "[readhap] We now have: 58190 snpSites after filtering based on hapMapfile", + "[readicnts] fname:test.icnts.gz minDepth:2 maxDepth:200", + "[readicnts] Has read:1557012 sites, 1517472 sites (after depfilter) from ANGSD icnts file" + ], + [ + "\"ANGSD_CONTAMINATION\":", + " angsd: 0.940-dirty" + ], + [ + "versions.yml:md5,e496b7eb11be581adf1781883ba2abff" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-09T05:53:42.620175303" + }, + "test-angsd-contamination-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,e496b7eb11be581adf1781883ba2abff" + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e496b7eb11be581adf1781883ba2abff" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-09T05:53:56.844309422" + } +} \ No newline at end of file diff --git a/modules/nf-core/angsd/contamination/tests/nextflow.config b/modules/nf-core/angsd/contamination/tests/nextflow.config new file mode 100644 index 00000000000..6209ade19eb --- /dev/null +++ b/modules/nf-core/angsd/contamination/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: ANGSD_DOCOUNTS { + ext.args = "-iCounts 1 -doDepth -dumpCounts 2" + } +} \ No newline at end of file diff --git a/modules/nf-core/angsd/docounts/environment.yml b/modules/nf-core/angsd/docounts/environment.yml index ebaa9ed2ca6..3f1bb661cf2 100644 --- a/modules/nf-core/angsd/docounts/environment.yml +++ b/modules/nf-core/angsd/docounts/environment.yml @@ -1,7 +1,5 @@ -name: angsd_docounts channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::angsd=0.939 diff --git a/modules/nf-core/angsd/docounts/meta.yml b/modules/nf-core/angsd/docounts/meta.yml index 8381091f9c6..b1eec87da70 100644 --- a/modules/nf-core/angsd/docounts/meta.yml +++ b/modules/nf-core/angsd/docounts/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "http://www.popgen.dk/angsd/" tool_dev_url: "https://github.com/ANGSD/angsd" doi: "10.1186/s12859-014-0356-4" - licence: "['GPL v3, MIT']" + licence: ["GPL v3, MIT"] input: - meta: type: map diff --git a/modules/nf-core/angsd/docounts/tests/main.nf.test b/modules/nf-core/angsd/docounts/tests/main.nf.test new file mode 100644 index 00000000000..68993421b82 --- /dev/null +++ b/modules/nf-core/angsd/docounts/tests/main.nf.test @@ -0,0 +1,43 @@ + +nextflow_process { + + name "Test Process ANGSD_DOCOUNTS" + script "../main.nf" + process "ANGSD_DOCOUNTS" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "angsd" + tag "angsd/docounts" + + test("test-angsd-docounts") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam.bai', checkIfExists: true), + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.counts[0][1]).linesGzip[0..5], + file(process.out.icounts[0][1]).name, + path(process.out.pos[0][1]).linesGzip[0..5], + process.out.versions + ).match() } + ) + } + } + +} diff --git a/modules/nf-core/angsd/docounts/tests/main.nf.test.snap b/modules/nf-core/angsd/docounts/tests/main.nf.test.snap new file mode 100644 index 00000000000..9a282b158a2 --- /dev/null +++ b/modules/nf-core/angsd/docounts/tests/main.nf.test.snap @@ -0,0 +1,31 @@ +{ + "test-angsd-docounts": { + "content": [ + [ + "ind0TotDepth\t", + "1\t", + "1\t", + "1\t", + "1\t", + "1\t" + ], + "test.icnts.gz", + [ + "chr\tpos\ttotDepth", + "chr21\t5011214\t1", + "chr21\t5011215\t1", + "chr21\t5011216\t1", + "chr21\t5011217\t1", + "chr21\t5011218\t1" + ], + [ + "versions.yml:md5,211a931297225fefaa891d02b755e215" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T15:43:59.931683" + } +} \ No newline at end of file diff --git a/modules/nf-core/angsd/docounts/tests/nextflow.config b/modules/nf-core/angsd/docounts/tests/nextflow.config new file mode 100644 index 00000000000..71db903efbf --- /dev/null +++ b/modules/nf-core/angsd/docounts/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: ANGSD_DOCOUNTS { + ext.args = "-iCounts 1 -doDepth -dumpCounts 2" + } +} diff --git a/modules/nf-core/angsd/gl/environment.yml b/modules/nf-core/angsd/gl/environment.yml index aac5db41f82..6e7fda79f94 100644 --- a/modules/nf-core/angsd/gl/environment.yml +++ b/modules/nf-core/angsd/gl/environment.yml @@ -1,10 +1,8 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "angsd_gl" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::angsd=0.940" - "bioconda::htslib=1.17" diff --git a/modules/nf-core/angsd/gl/tests/main.nf.test b/modules/nf-core/angsd/gl/tests/main.nf.test index 412f46a53e8..3f8b0865649 100644 --- a/modules/nf-core/angsd/gl/tests/main.nf.test +++ b/modules/nf-core/angsd/gl/tests/main.nf.test @@ -18,11 +18,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ @@ -46,11 +46,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ @@ -74,11 +74,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ @@ -102,11 +102,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ @@ -132,11 +132,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ @@ -162,11 +162,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ @@ -192,11 +192,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ @@ -222,11 +222,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists: true), ] input[1] = [ [ id:'test_fa' ], - file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) ] input[2] = [ [], [] ] """ diff --git a/modules/nf-core/annotsv/annotsv/environment.yml b/modules/nf-core/annotsv/annotsv/environment.yml index e5f4a3e4aac..6b6608d440b 100644 --- a/modules/nf-core/annotsv/annotsv/environment.yml +++ b/modules/nf-core/annotsv/annotsv/environment.yml @@ -1,7 +1,5 @@ -name: annotsv_annotsv channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::annotsv=3.4.2 diff --git a/modules/nf-core/annotsv/installannotations/environment.yml b/modules/nf-core/annotsv/installannotations/environment.yml index b759f91d322..6b6608d440b 100644 --- a/modules/nf-core/annotsv/installannotations/environment.yml +++ b/modules/nf-core/annotsv/installannotations/environment.yml @@ -1,7 +1,5 @@ -name: annotsv_installannotations channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::annotsv=3.4.2 diff --git a/modules/nf-core/anota2seq/anota2seqrun/environment.yml b/modules/nf-core/anota2seq/anota2seqrun/environment.yml index 31c82193d12..a0b0b3180f8 100644 --- a/modules/nf-core/anota2seq/anota2seqrun/environment.yml +++ b/modules/nf-core/anota2seq/anota2seqrun/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "anota2seq_anota2seqrun" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bioconductor-anota2seq=1.24.0" diff --git a/modules/nf-core/antismash/antismashlite/environment.yml b/modules/nf-core/antismash/antismashlite/environment.yml index 227b52645ca..ce4491dc556 100644 --- a/modules/nf-core/antismash/antismashlite/environment.yml +++ b/modules/nf-core/antismash/antismashlite/environment.yml @@ -1,7 +1,5 @@ -name: antismash_antismashlite channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::antismash-lite=7.1.0 diff --git a/modules/nf-core/antismash/antismashlite/tests/main.nf.test b/modules/nf-core/antismash/antismashlite/tests/main.nf.test index e4793eea83c..5ee21d6ded4 100644 --- a/modules/nf-core/antismash/antismashlite/tests/main.nf.test +++ b/modules/nf-core/antismash/antismashlite/tests/main.nf.test @@ -66,7 +66,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['bacteroides_fragilis']['genome']['genome_gbff_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.gbff.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/antismash/antismashlite/tests/main.nf.test.snap b/modules/nf-core/antismash/antismashlite/tests/main.nf.test.snap index 675829cd715..618b06f965a 100644 --- a/modules/nf-core/antismash/antismashlite/tests/main.nf.test.snap +++ b/modules/nf-core/antismash/antismashlite/tests/main.nf.test.snap @@ -294,8 +294,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-09T17:06:15.671842533" + "timestamp": "2024-07-11T16:35:51.079804" } } \ No newline at end of file diff --git a/modules/nf-core/antismash/antismashlitedownloaddatabases/environment.yml b/modules/nf-core/antismash/antismashlitedownloaddatabases/environment.yml index b9323a931fd..ce4491dc556 100644 --- a/modules/nf-core/antismash/antismashlitedownloaddatabases/environment.yml +++ b/modules/nf-core/antismash/antismashlitedownloaddatabases/environment.yml @@ -1,7 +1,5 @@ -name: antismash_antismashlitedownloaddatabases channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::antismash-lite=7.1.0 diff --git a/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test b/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test index bc7b5a80553..55f5f2f50a1 100644 --- a/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test +++ b/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test @@ -10,46 +10,47 @@ nextflow_process { tag "antismash/antismashlitedownloaddatabases" tag "untar" - setup { + test("antiSMASH-lite downloaddatabases") { - run("UNTAR", alias: "UNTAR_CSS") { - script "modules/nf-core/untar/main.nf" - process { - """ - input[0] = [ - [ ], - file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/css.tar.gz', checkIfExists: true) - ] - """ + setup { + + run("UNTAR", alias: "UNTAR_CSS") { + script "modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ ], + file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/css.tar.gz', checkIfExists: true) + ] + """ + } } - } - run("UNTAR", alias: "UNTAR_DETECTION") { - script "modules/nf-core/untar/main.nf" - process { - """ - input[0] = [ - [ ], - file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/detection.tar.gz', checkIfExists: true) - ] - """ + run("UNTAR", alias: "UNTAR_DETECTION") { + script "modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ ], + file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/detection.tar.gz', checkIfExists: true) + ] + """ + } } - } - run("UNTAR", alias: "UNTAR_MODULES") { - script "modules/nf-core/untar/main.nf" - process { - """ - input[0] = [ - [ ], - file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/modules.tar.gz', checkIfExists: true) - ] - """ + run("UNTAR", alias: "UNTAR_MODULES") { + script "modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ ], + file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/modules.tar.gz', checkIfExists: true) + ] + """ + } } } - } -test("antiSMASH-lite downloaddatabases") { when { process { """ @@ -64,18 +65,56 @@ test("antiSMASH-lite downloaddatabases") { assertAll( { assert process.success }, { assert snapshot ( - file(process.out.database.get(0)).list().sort(), - process.out.versions, + file(process.out.database.get(0)).list().sort(), + process.out.versions, ).match() } ) } - } test("antiSMASH-lite downloaddatabases - stub") { options "-stub" + setup { + + run("UNTAR", alias: "UNTAR_CSS") { + script "modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ ], + file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/css.tar.gz', checkIfExists: true) + ] + """ + } + } + + run("UNTAR", alias: "UNTAR_DETECTION") { + script "modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ ], + file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/detection.tar.gz', checkIfExists: true) + ] + """ + } + } + + run("UNTAR", alias: "UNTAR_MODULES") { + script "modules/nf-core/untar/main.nf" + process { + """ + input[0] = [ + [ ], + file('https://github.com/nf-core/test-datasets/raw/59ddeb5929f89ddddaff292d67f9025812762b87/data/delete_me/antismash/modules.tar.gz', checkIfExists: true) + ] + """ + } + } + } + when { process { """ @@ -92,7 +131,5 @@ test("antiSMASH-lite downloaddatabases") { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test.snap b/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test.snap index 93d071871fa..21ee9d410f5 100644 --- a/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test.snap +++ b/modules/nf-core/antismash/antismashlitedownloaddatabases/tests/main.nf.test.snap @@ -32,9 +32,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-07T23:13:12.85814463" + "timestamp": "2024-07-12T13:41:29.456143" }, "antiSMASH-lite downloaddatabases": { "content": [ @@ -55,8 +55,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-07T23:12:29.947339678" + "timestamp": "2024-07-12T13:41:08.116244" } } \ No newline at end of file diff --git a/modules/nf-core/arcashla/extract/environment.yml b/modules/nf-core/arcashla/extract/environment.yml index b5789655ec8..f5cd15eabc1 100644 --- a/modules/nf-core/arcashla/extract/environment.yml +++ b/modules/nf-core/arcashla/extract/environment.yml @@ -1,7 +1,5 @@ -name: arcashla_extract channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::arcas-hla=0.5.0 diff --git a/modules/nf-core/arcashla/extract/meta.yml b/modules/nf-core/arcashla/extract/meta.yml index 3575e782051..6a85aad0f79 100644 --- a/modules/nf-core/arcashla/extract/meta.yml +++ b/modules/nf-core/arcashla/extract/meta.yml @@ -11,7 +11,7 @@ tools: documentation: "https://github.com/RabadanLab/arcasHLA" tool_dev_url: "https://github.com/RabadanLab/arcasHLA" doi: "10.1093/bioinformatics/btz474" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/arcashla/extract/tests/main.nf.test b/modules/nf-core/arcashla/extract/tests/main.nf.test new file mode 100644 index 00000000000..273bece876f --- /dev/null +++ b/modules/nf-core/arcashla/extract/tests/main.nf.test @@ -0,0 +1,72 @@ + +nextflow_process { + + name "Test Process ARCASHLA_EXTRACT" + script "../main.nf" + process "ARCASHLA_EXTRACT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "arcashla" + tag "arcashla/extract" + + test("test-arcashla-extract") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert file(process.out.log[0]).text.contains('Converting bam to fastq') }, + { assert snapshot( + process.out.extracted_reads_fastq[0][1].collect { file(it).name }, + process.out.intermediate_bam[0][1].collect { bam(it).getReadsMD5() }, + file(process.out.intermediate_sam[0][1]).name, + bam(process.out.intermediate_sorted_bam[0][1]).getReadsMD5(), + process.out.versions + ).match() + } + ) + } + } + + test("test-arcashla-extract-single-end") { + + when { + process { + """ + input[0] = [ + [ id:'test_single_end', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test3.single_end.markduplicates.sorted.bam', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert file(process.out.log[0]).text.contains('Converting bam to fastq') }, + { assert snapshot( + file(process.out.extracted_reads_fastq[0][1]).name, + process.out.intermediate_bam[0][1].collect { bam(it).getReadsMD5() }, + file(process.out.intermediate_sam[0][1]).name, + bam(process.out.intermediate_sorted_bam[0][1]).getReadsMD5(), + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/arcashla/extract/tests/main.nf.test.snap b/modules/nf-core/arcashla/extract/tests/main.nf.test.snap new file mode 100644 index 00000000000..775118756f8 --- /dev/null +++ b/modules/nf-core/arcashla/extract/tests/main.nf.test.snap @@ -0,0 +1,43 @@ +{ + "test-arcashla-extract-single-end": { + "content": [ + "test3.single_end.markduplicates.sorted.extracted.fq.gz", + [ + "c7f49f93d2aebb68f128b85c6b6a36c0", + "13f0c075d7bfddcf19a48669bb69ae4c" + ], + "test3.single_end.markduplicates.sorted.hla.sam", + "13f0c075d7bfddcf19a48669bb69ae4c", + [ + "versions.yml:md5,bad529c7a165615b9641e7780cc13160" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T12:36:32.699685" + }, + "test-arcashla-extract": { + "content": [ + [ + "test.paired_end.sorted.extracted.1.fq.gz", + "test.paired_end.sorted.extracted.2.fq.gz" + ], + [ + "ef014d5b0cd0903595da255cdce79662", + "ef014d5b0cd0903595da255cdce79662" + ], + "test.paired_end.sorted.hla.sam", + "ef014d5b0cd0903595da255cdce79662", + [ + "versions.yml:md5,bad529c7a165615b9641e7780cc13160" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T12:30:28.486246" + } +} \ No newline at end of file diff --git a/modules/nf-core/arcashla/extract/tests/nextflow.config b/modules/nf-core/arcashla/extract/tests/nextflow.config new file mode 100644 index 00000000000..f54ca35c7ce --- /dev/null +++ b/modules/nf-core/arcashla/extract/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: ARCASHLA_EXTRACT { + ext.args = '--unmapped --keep_files' + } +} diff --git a/modules/nf-core/argnorm/environment.yml b/modules/nf-core/argnorm/environment.yml new file mode 100644 index 00000000000..783995f288c --- /dev/null +++ b/modules/nf-core/argnorm/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::argnorm=0.5.0" diff --git a/modules/nf-core/argnorm/main.nf b/modules/nf-core/argnorm/main.nf new file mode 100644 index 00000000000..5ff5e8a5389 --- /dev/null +++ b/modules/nf-core/argnorm/main.nf @@ -0,0 +1,68 @@ +process ARGNORM { + tag "$meta.id" + label 'process_low' + // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/argnorm:0.5.0--pyhdfd78af_0': + 'biocontainers/argnorm:0.5.0--pyhdfd78af_0' }" + + input: + tuple val(meta), path(input_tsv) + val tool + val db + + output: + tuple val(meta), path("*.tsv"), emit: tsv + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '0.5.0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + def db_args = db ? "--db ${db}" : "" + if (!tool) { + error 'Tool not provided.' + } + if ((tool in ["abricate"]) && !db) { + error "$tool requires a database but not provided." + } + + """ + argnorm \\ + $tool \\ + -i $input_tsv \\ + -o $prefix \\ + $db_args \\ + $args + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + argnorm: $VERSION + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '0.5.0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + if (!tool) { + error 'Tool not provided.' + } + if ((tool in ["abricate"]) && !db) { + error "$tool requires a database but not provided." + } + + """ + touch ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + argnorm: $VERSION + END_VERSIONS + """ + +} diff --git a/modules/nf-core/argnorm/meta.yml b/modules/nf-core/argnorm/meta.yml new file mode 100644 index 00000000000..a977e86304c --- /dev/null +++ b/modules/nf-core/argnorm/meta.yml @@ -0,0 +1,60 @@ +name: "argnorm" +description: Normalize antibiotic resistance genes (ARGs) using the ARO ontology (developed by CARD). +keywords: + - amr + - antimicrobial resistance + - arg + - antimicrobial resistance genes + - genomics + - metagenomics + - normalization + - drug categorization +tools: + - "argnorm": + description: "Normalize antibiotic resistance genes (ARGs) using the ARO ontology (developed by CARD)." + homepage: "https://argnorm.readthedocs.io/en/latest/" + documentation: "https://argnorm.readthedocs.io/en/latest/" + tool_dev_url: "https://github.com/BigDataBiology/argNorm" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + + - input_tsv: + type: file + description: ARG annotation output + pattern: "*.tsv" + + - tool: + type: string + description: ARG annotation tool used + pattern: "argsoap|abricate|deeparg|resfinder|amrfinderplus" + + - db: + type: string + description: Database used for ARG annotation + pattern: "sarg|ncbi|resfinder|deeparg|megares|argannot|resfinderfg" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - tsv: + type: file + description: Normalized argNorm output + pattern: "*.tsv" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@Vedanth-Ramji" +maintainers: + - "@Vedanth-Ramji" diff --git a/modules/nf-core/argnorm/tests/argnorm_hamronized.config b/modules/nf-core/argnorm/tests/argnorm_hamronized.config new file mode 100644 index 00000000000..68748018617 --- /dev/null +++ b/modules/nf-core/argnorm/tests/argnorm_hamronized.config @@ -0,0 +1,5 @@ +process { + withName: ARGNORM { + ext.args = '--hamronized' + } +} diff --git a/modules/nf-core/argnorm/tests/argnorm_raw.config b/modules/nf-core/argnorm/tests/argnorm_raw.config new file mode 100644 index 00000000000..dffa3c486ff --- /dev/null +++ b/modules/nf-core/argnorm/tests/argnorm_raw.config @@ -0,0 +1,5 @@ +process { + withName: ARGNORM { + ext.args = '' + } +} diff --git a/modules/nf-core/argnorm/tests/main.nf.test b/modules/nf-core/argnorm/tests/main.nf.test new file mode 100644 index 00000000000..e68c2151865 --- /dev/null +++ b/modules/nf-core/argnorm/tests/main.nf.test @@ -0,0 +1,155 @@ +nextflow_process { + name "Test Process ARGNORM" + script "../main.nf" + process "ARGNORM" + + tag "modules" + tag "modules_nfcore" + tag "argnorm" + + test("argnorm - amrfinderplus_ncbi_raw - tsv") { + config './argnorm_raw.config' + + when { + process { + """ + input[0] = [ + [ id:'argnorm_raw.tsv' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/amrfinderplus/test_output.tsv", checkIfExists: true) + ] + input[1] = 'amrfinderplus' + input[2] = 'ncbi' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("argnorm - amrfinderplus_ncbi_hamronized - tsv") { + config './argnorm_hamronized.config' + + when { + process { + """ + input[0] = [ + [ id:'argnorm_hamronized.tsv' ], // meta map + file("https://raw.githubusercontent.com/BigDataBiology/argNorm/main/examples/hamronized/amrfinderplus.ncbi.orfs.tsv", checkIfExists: true) + ] + input[1] = 'amrfinderplus' + input[2] = 'ncbi' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("argnorm - missing tool") { + + when { + process { + """ + input[0] = [ + [ id:'argnorm_raw.tsv' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/amrfinderplus/test_output.tsv", checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert !process.success }, + { assert process.stdout.toString().contains("Tool not provided") } + ) + } + } + + test("argnorm - missing db") { + + when { + process { + """ + input[0] = [ + [ id:'argnorm_raw.tsv' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/amrfinderplus/test_output.tsv", checkIfExists: true) + ] + input[1] = "abricate" + input[2] = [] + """ + } + } + + then { + assertAll( + { assert !process.success }, + { assert process.stdout.toString().contains("abricate requires a database but not provided.") } + ) + } + } + + test("argnorm - amrfinderplus_ncbi_hamronized - tsv - stub") { + options "-stub" + config './argnorm_hamronized.config' + + when { + process { + """ + input[0] = [ + [ id:'argnorm_hamronized_stub.tsv' ], // meta map + file("https://raw.githubusercontent.com/BigDataBiology/argNorm/main/examples/hamronized/amrfinderplus.ncbi.orfs.tsv", checkIfExists: true) + ] + input[1] = 'amrfinderplus' + input[2] = 'ncbi' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("argnorm - amrfinderplus_ncbi - tsv - stub") { + + options "-stub" + config './argnorm_raw.config' + + when { + process { + """ + input[0] = [ + [ id:'argnorm_raw_stub.tsv' ], // meta map + file("https://raw.githubusercontent.com/BigDataBiology/argNorm/main/examples/raw/amrfinderplus.ncbi.orfs.tsv", checkIfExists: true) + ] + input[1] = 'amrfinderplus' + input[2] = 'ncbi' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/argnorm/tests/main.nf.test.snap b/modules/nf-core/argnorm/tests/main.nf.test.snap new file mode 100644 index 00000000000..4bed36ba7a9 --- /dev/null +++ b/modules/nf-core/argnorm/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "argnorm - amrfinderplus_ncbi_raw - tsv": { + "content": [ + { + "0": [ + [ + { + "id": "argnorm_raw.tsv" + }, + "argnorm_raw.tsv:md5,f870c239182592a065d9f80732b39bba" + ] + ], + "1": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ], + "tsv": [ + [ + { + "id": "argnorm_raw.tsv" + }, + "argnorm_raw.tsv:md5,f870c239182592a065d9f80732b39bba" + ] + ], + "versions": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T17:46:00.195868976" + }, + "argnorm - amrfinderplus_ncbi_hamronized - tsv": { + "content": [ + { + "0": [ + [ + { + "id": "argnorm_hamronized.tsv" + }, + "argnorm_hamronized.tsv:md5,1f9a3820f09fd6a818af372dfe5cf322" + ] + ], + "1": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ], + "tsv": [ + [ + { + "id": "argnorm_hamronized.tsv" + }, + "argnorm_hamronized.tsv:md5,1f9a3820f09fd6a818af372dfe5cf322" + ] + ], + "versions": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T17:46:31.856263885" + }, + "argnorm - amrfinderplus_ncbi_hamronized - tsv - stub": { + "content": [ + { + "0": [ + [ + { + "id": "argnorm_hamronized_stub.tsv" + }, + "argnorm_hamronized_stub.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ], + "tsv": [ + [ + { + "id": "argnorm_hamronized_stub.tsv" + }, + "argnorm_hamronized_stub.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T17:47:03.088627445" + }, + "argnorm - amrfinderplus_ncbi - tsv - stub": { + "content": [ + { + "0": [ + [ + { + "id": "argnorm_raw_stub.tsv" + }, + "argnorm_raw_stub.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ], + "tsv": [ + [ + { + "id": "argnorm_raw_stub.tsv" + }, + "argnorm_raw_stub.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e200075d98a6f59137f105efceea0426" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T17:47:34.346622776" + } +} diff --git a/modules/nf-core/argnorm/tests/tags.yml b/modules/nf-core/argnorm/tests/tags.yml new file mode 100644 index 00000000000..a2b6e8d0d8c --- /dev/null +++ b/modules/nf-core/argnorm/tests/tags.yml @@ -0,0 +1,2 @@ +argnorm: + - "modules/nf-core/argnorm/**" diff --git a/modules/nf-core/aria2/environment.yml b/modules/nf-core/aria2/environment.yml index 5dc58a07208..52d11ba96ba 100644 --- a/modules/nf-core/aria2/environment.yml +++ b/modules/nf-core/aria2/environment.yml @@ -1,7 +1,5 @@ -name: aria2 channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::aria2=1.36.0 diff --git a/modules/nf-core/ariba/getref/environment.yml b/modules/nf-core/ariba/getref/environment.yml index cc886d28876..49af201aa81 100644 --- a/modules/nf-core/ariba/getref/environment.yml +++ b/modules/nf-core/ariba/getref/environment.yml @@ -1,7 +1,5 @@ -name: ariba_getref channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ariba=2.14.6 diff --git a/modules/nf-core/ariba/getref/main.nf b/modules/nf-core/ariba/getref/main.nf index 82f8382f1c3..212259cb90c 100644 --- a/modules/nf-core/ariba/getref/main.nf +++ b/modules/nf-core/ariba/getref/main.nf @@ -8,11 +8,11 @@ process ARIBA_GETREF { 'biocontainers/ariba:2.14.6--py39h67e14b5_3' }" input: - val(db_name) + tuple val(meta), val(db_name) output: - tuple path("${db_name}.tar.gz"), emit: db - path "versions.yml" , emit: versions + tuple val(meta), path("${db_name}.tar.gz"), emit: db + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -38,4 +38,14 @@ process ARIBA_GETREF { ariba: \$(echo \$(ariba version 2>&1) | sed 's/^.*ARIBA version: //;s/ .*\$//') END_VERSIONS """ + + stub: + """ + echo "" | gzip > ${db_name}.tar.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ariba: \$(echo \$(ariba version 2>&1) | sed 's/^.*ARIBA version: //;s/ .*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/ariba/getref/meta.yml b/modules/nf-core/ariba/getref/meta.yml index 38e56e15acc..bbdae6dec99 100644 --- a/modules/nf-core/ariba/getref/meta.yml +++ b/modules/nf-core/ariba/getref/meta.yml @@ -12,8 +12,13 @@ tools: documentation: "https://sanger-pathogens.github.io/ariba/" tool_dev_url: "https://github.com/sanger-pathogens/ariba" doi: "10.1099/mgen.0.000131" - licence: "['GPL v3']" + licence: ["GPL v3"] input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] - db_name: type: string description: A database to setup up for Ariba diff --git a/modules/nf-core/ariba/getref/tests/main.nf.test b/modules/nf-core/ariba/getref/tests/main.nf.test new file mode 100644 index 00000000000..a69065e5c6a --- /dev/null +++ b/modules/nf-core/ariba/getref/tests/main.nf.test @@ -0,0 +1,56 @@ +nextflow_process { + + name "Test Process ARIBA_GETREF" + script "../main.nf" + process "ARIBA_GETREF" + + tag "modules" + tag "modules_nfcore" + tag "ariba" + tag "ariba/getref" + + test("card") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + "card" + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.db.get(0).get(1)).linesGzip[0].contains("card") } + ) + } + + } + + test("card - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + "card" + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/ariba/getref/tests/main.nf.test.snap b/modules/nf-core/ariba/getref/tests/main.nf.test.snap new file mode 100644 index 00000000000..2dd5bafc11f --- /dev/null +++ b/modules/nf-core/ariba/getref/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "card - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "card.tar.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d45133ff8e7642fa6df5eac1f853c2cd" + ], + "db": [ + [ + { + "id": "test" + }, + "card.tar.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d45133ff8e7642fa6df5eac1f853c2cd" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-24T15:26:21.289538" + } +} \ No newline at end of file diff --git a/modules/nf-core/ariba/getref/tests/tags.yml b/modules/nf-core/ariba/getref/tests/tags.yml new file mode 100644 index 00000000000..c6e6bcbfb86 --- /dev/null +++ b/modules/nf-core/ariba/getref/tests/tags.yml @@ -0,0 +1,2 @@ +ariba/getref: + - "modules/nf-core/ariba/getref/**" diff --git a/modules/nf-core/ariba/run/environment.yml b/modules/nf-core/ariba/run/environment.yml index f161a2be9b6..49af201aa81 100644 --- a/modules/nf-core/ariba/run/environment.yml +++ b/modules/nf-core/ariba/run/environment.yml @@ -1,7 +1,5 @@ -name: ariba_run channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ariba=2.14.6 diff --git a/modules/nf-core/ariba/run/main.nf b/modules/nf-core/ariba/run/main.nf index 3c00907a2d8..0b80f9b222f 100644 --- a/modules/nf-core/ariba/run/main.nf +++ b/modules/nf-core/ariba/run/main.nf @@ -9,7 +9,7 @@ process ARIBA_RUN { input: tuple val(meta), path(reads) - each path(db) + tuple val(meta), path(db) output: tuple val(meta), path("${prefix}/*"), emit: results diff --git a/modules/nf-core/ariba/run/tests/main.nf.test b/modules/nf-core/ariba/run/tests/main.nf.test index 90ea91f7743..f51abc29e0d 100644 --- a/modules/nf-core/ariba/run/tests/main.nf.test +++ b/modules/nf-core/ariba/run/tests/main.nf.test @@ -9,6 +9,7 @@ nextflow_process { tag "modules_nfcore" tag "ariba" tag "ariba/run" + tag "ariba/getref" test("sarscov2 illumina paired-end [fastq]") { @@ -17,7 +18,9 @@ nextflow_process { script "../../../ariba/getref/main.nf" process { """ - input[0] = "card" + input[0] = [ [ id:'test' ], // meta map + "card" + ] """ } } @@ -27,8 +30,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ], ] input[1] = ARIBA_GETREF.out.db """ diff --git a/modules/nf-core/arriba/arriba/environment.yml b/modules/nf-core/arriba/arriba/environment.yml index 8494c8c03d6..d0883a0d205 100644 --- a/modules/nf-core/arriba/arriba/environment.yml +++ b/modules/nf-core/arriba/arriba/environment.yml @@ -1,7 +1,5 @@ -name: arriba_arriba channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::arriba=2.4.0 diff --git a/modules/nf-core/arriba/download/environment.yml b/modules/nf-core/arriba/download/environment.yml index dc7d3bf9960..d0883a0d205 100644 --- a/modules/nf-core/arriba/download/environment.yml +++ b/modules/nf-core/arriba/download/environment.yml @@ -1,7 +1,5 @@ -name: arriba_download channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::arriba=2.4.0 diff --git a/modules/nf-core/arriba/download/main.nf b/modules/nf-core/arriba/download/main.nf index 7f11898bd2e..96a4e33628f 100644 --- a/modules/nf-core/arriba/download/main.nf +++ b/modules/nf-core/arriba/download/main.nf @@ -7,6 +7,8 @@ process ARRIBA_DOWNLOAD { 'https://depot.galaxyproject.org/singularity/arriba:2.4.0--h0033a41_2' : 'biocontainers/arriba:2.4.0--h0033a41_2' }" + input: + output: path "*" , emit: reference path "versions.yml" , emit: versions diff --git a/modules/nf-core/arriba/download/tests/main.nf.test b/modules/nf-core/arriba/download/tests/main.nf.test new file mode 100644 index 00000000000..cccc95db2c0 --- /dev/null +++ b/modules/nf-core/arriba/download/tests/main.nf.test @@ -0,0 +1,35 @@ + +nextflow_process { + + name "Test Process ARRIBA_DOWNLOAD" + script "../main.nf" + process "ARRIBA_DOWNLOAD" + + tag "modules" + tag "modules_nfcore" + tag "arriba" + tag "arriba/download" + + test("test-arriba-download") { + + when { + process { + """ + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.reference[0].collect { file(it).name }.toSorted(), + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/arriba/download/tests/main.nf.test.snap b/modules/nf-core/arriba/download/tests/main.nf.test.snap new file mode 100644 index 00000000000..eda3f706640 --- /dev/null +++ b/modules/nf-core/arriba/download/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-arriba-download": { + "content": [ + [ + "CREDITS", + "RefSeq_viral_genomes_v2.4.0.fa.gz", + "blacklist_hg19_hs37d5_GRCh37_v2.4.0.tsv.gz", + "blacklist_hg38_GRCh38_v2.4.0.tsv.gz", + "blacklist_mm10_GRCm38_v2.4.0.tsv.gz", + "blacklist_mm39_GRCm39_v2.4.0.tsv.gz", + "cytobands_hg19_hs37d5_GRCh37_v2.4.0.tsv", + "cytobands_hg38_GRCh38_v2.4.0.tsv", + "cytobands_mm10_GRCm38_v2.4.0.tsv", + "cytobands_mm39_GRCm39_v2.4.0.tsv", + "known_fusions_hg19_hs37d5_GRCh37_v2.4.0.tsv.gz", + "known_fusions_hg38_GRCh38_v2.4.0.tsv.gz", + "known_fusions_mm10_GRCm38_v2.4.0.tsv.gz", + "known_fusions_mm39_GRCm39_v2.4.0.tsv.gz", + "protein_domains_hg19_hs37d5_GRCh37_v2.4.0.gff3", + "protein_domains_hg38_GRCh38_v2.4.0.gff3", + "protein_domains_mm10_GRCm38_v2.4.0.gff3", + "protein_domains_mm39_GRCm39_v2.4.0.gff3", + "versions.yml" + ], + [ + "versions.yml:md5,98c69df5eaea5caf0b4af7b8d7af4893" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-22T17:00:38.086459" + } +} \ No newline at end of file diff --git a/modules/nf-core/art/illumina/environment.yml b/modules/nf-core/art/illumina/environment.yml index bf446862493..eedc114c662 100644 --- a/modules/nf-core/art/illumina/environment.yml +++ b/modules/nf-core/art/illumina/environment.yml @@ -1,7 +1,5 @@ -name: art_illumina channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::art=2016.06.05 diff --git a/modules/nf-core/art/illumina/main.nf b/modules/nf-core/art/illumina/main.nf index 0e6e2524ef0..501053b7366 100644 --- a/modules/nf-core/art/illumina/main.nf +++ b/modules/nf-core/art/illumina/main.nf @@ -53,9 +53,9 @@ process ART_ILLUMINA { def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = '2016.06.05' """ - touch ${prefix}.fq.gz - touch ${prefix}1.fq.gz - touch ${prefix}2.fq.gz + echo "" | gzip > ${prefix}.fq.gz + echo "" | gzip > ${prefix}1.fq.gz + echo "" | gzip > ${prefix}2.fq.gz touch ${prefix}.aln touch ${prefix}1.aln touch ${prefix}2.aln diff --git a/modules/nf-core/art/illumina/meta.yml b/modules/nf-core/art/illumina/meta.yml index 6e5c9893a7c..b20df1cde87 100644 --- a/modules/nf-core/art/illumina/meta.yml +++ b/modules/nf-core/art/illumina/meta.yml @@ -10,7 +10,7 @@ tools: description: "ART is a set of simulation tools to generate synthetic next-generation sequencing reads. ART simulates sequencing reads by mimicking real sequencing process with empirical error models or quality profiles summarized from large recalibrated sequencing data. ART can also simulate reads using user own read error model or quality profiles. " homepage: "https://www.niehs.nih.gov/research/resources/software/biostatistics/art/index.cfm" doi: "10.1093/bioinformatics/btr708" - licence: "GPL version 3 license" + licence: ["GPL version 3 license"] input: - meta: type: map @@ -56,3 +56,4 @@ authors: - "@MarieLataretu" maintainers: - "@MarieLataretu" + - "@gallvp" diff --git a/modules/nf-core/art/illumina/tests/main.nf.test b/modules/nf-core/art/illumina/tests/main.nf.test index d905140862f..f40fa18bbdc 100644 --- a/modules/nf-core/art/illumina/tests/main.nf.test +++ b/modules/nf-core/art/illumina/tests/main.nf.test @@ -13,15 +13,12 @@ nextflow_process { config "./single-end.nextflow.config" when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [id: 'test'], [ - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] ] input[1] = 'HS25' @@ -48,7 +45,7 @@ nextflow_process { def read_qc = path(process.out.fastq.get(0).get(1)).linesGzip[3] assert read_qc.equals("C1CGGGCGG=GGGJGJG=JJCJJJCJGJJJJGJJJ1JJJGJJGGJGJJGGGJJGJJJCJGGGJ(=G1GGG(CCCGGGCGCGGGCCGCCG8GGGGGGGGGGCC(CGG1GGGG1GGCGCGGCGGGCGCGGGCGGGGCGCCGGGGGCG8GGGG") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match() } ) } @@ -60,15 +57,12 @@ nextflow_process { config "./single-end.nextflow.config" when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [id: 'test'], [ - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] ] input[1] = 'HS25' @@ -92,15 +86,12 @@ nextflow_process { config "./paired-end.nextflow.config" when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [id: 'test'], [ - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] ] input[1] = 'HS25' @@ -139,7 +130,7 @@ nextflow_process { def read_qc = path(process.out.fastq.get(0).get(1).get(1)).linesGzip[3] assert read_qc.equals("1CCGGGGGGGCGGGJJJJJGJG1GJGJ=JGJJCJJJCJJJGJ1GJGJGGJJC8JGG=JGGCGCCGCGGCCCGJCGGGGCJC==CGG88CGGGCGGGCCCGGC8JJJJCGGCGGCCGGGG=CGGGGCCGGCCCGCGCCCCG8GGGG=GGGC") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out.versions).match() } ) } @@ -151,15 +142,12 @@ nextflow_process { config "./paired-end.nextflow.config" when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [id: 'test'], [ - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] ] input[1] = 'HS25' diff --git a/modules/nf-core/art/illumina/tests/main.nf.test.snap b/modules/nf-core/art/illumina/tests/main.nf.test.snap index 7b74e7a103a..d45063db4a3 100644 --- a/modules/nf-core/art/illumina/tests/main.nf.test.snap +++ b/modules/nf-core/art/illumina/tests/main.nf.test.snap @@ -8,9 +8,9 @@ "id": "test" }, [ - "test.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test1.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test2.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test1.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test2.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ] ], @@ -59,9 +59,9 @@ "id": "test" }, [ - "test.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test1.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test2.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test1.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test2.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ] ], @@ -82,15 +82,35 @@ ] } ], - "timestamp": "2023-10-17T16:30:29.982001699" + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.4" + }, + "timestamp": "2024-08-02T05:23:17.15142485" }, - "versions": { + "single-end": { "content": [ [ "versions.yml:md5,3e3b7a71ed78bd4758ad4b3029e4e5d6" ] ], - "timestamp": "2023-10-16T17:53:35.514518322" + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.4" + }, + "timestamp": "2024-08-02T05:23:05.803737443" + }, + "paired-end": { + "content": [ + [ + "versions.yml:md5,3e3b7a71ed78bd4758ad4b3029e4e5d6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.4" + }, + "timestamp": "2024-08-02T05:23:29.473627797" }, "paired-end-stub": { "content": [ @@ -101,9 +121,9 @@ "id": "test" }, [ - "test.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test1.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test2.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test1.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test2.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ] ], @@ -152,9 +172,9 @@ "id": "test" }, [ - "test.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test1.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - "test2.fq.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test1.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test2.fq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ] ], @@ -175,6 +195,10 @@ ] } ], - "timestamp": "2023-10-17T16:31:34.185977907" + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.4" + }, + "timestamp": "2024-08-02T05:23:41.67522435" } } \ No newline at end of file diff --git a/modules/nf-core/artic/guppyplex/environment.yml b/modules/nf-core/artic/guppyplex/environment.yml index 19176850c7e..cf5ae4cf5c5 100644 --- a/modules/nf-core/artic/guppyplex/environment.yml +++ b/modules/nf-core/artic/guppyplex/environment.yml @@ -1,7 +1,5 @@ -name: artic_guppyplex channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::artic=1.2.3 diff --git a/modules/nf-core/artic/minion/environment.yml b/modules/nf-core/artic/minion/environment.yml index 5123f82c1e7..cf5ae4cf5c5 100644 --- a/modules/nf-core/artic/minion/environment.yml +++ b/modules/nf-core/artic/minion/environment.yml @@ -1,7 +1,5 @@ -name: artic_minion channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::artic=1.2.3 diff --git a/modules/nf-core/artic/minion/meta.yml b/modules/nf-core/artic/minion/meta.yml index 9092edd3b16..26ff4ad8576 100644 --- a/modules/nf-core/artic/minion/meta.yml +++ b/modules/nf-core/artic/minion/meta.yml @@ -47,15 +47,15 @@ input: Medaka model file to use (if option --medaka is set) pattern: "*.hdf5" - medaka_model_string: - type: value + type: string description: | Medaka model string to use (if option --medaka is set) pattern: "*" - scheme: - type: value + type: string description: Name of the primer scheme - scheme_version: - type: value + type: string description: Version of the primer scheme output: - meta: diff --git a/modules/nf-core/ascat/environment.yml b/modules/nf-core/ascat/environment.yml index 52935f09782..63d87708d6a 100644 --- a/modules/nf-core/ascat/environment.yml +++ b/modules/nf-core/ascat/environment.yml @@ -1,8 +1,6 @@ -name: ascat channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ascat=3.1.1 - bioconda::cancerit-allelecount=4.3.0 diff --git a/modules/nf-core/ashlar/environment.yml b/modules/nf-core/ashlar/environment.yml index 75ddeb4ddb1..8b3e771ac01 100644 --- a/modules/nf-core/ashlar/environment.yml +++ b/modules/nf-core/ashlar/environment.yml @@ -1,7 +1,5 @@ -name: ashlar channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::ashlar=1.17.0 + - bioconda::ashlar=1.18.0 diff --git a/modules/nf-core/ashlar/main.nf b/modules/nf-core/ashlar/main.nf index 7e49d89b46a..2ddc710feb5 100644 --- a/modules/nf-core/ashlar/main.nf +++ b/modules/nf-core/ashlar/main.nf @@ -4,13 +4,13 @@ process ASHLAR { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ashlar:1.17.0--pyh5e36f6f_0' : - 'biocontainers/ashlar:1.17.0--pyh5e36f6f_0' }" + 'https://depot.galaxyproject.org/singularity/ashlar:1.18.0--pyhdfd78af_0' : + 'biocontainers/ashlar:1.18.0--pyhdfd78af_0' }" input: - tuple val(meta), path(images) - path(opt_dfp) - path(opt_ffp) + tuple val(meta), path(images, stageAs: 'image*/*') + path(opt_dfp, stageAs: 'dfp*/*') + path(opt_ffp, stageAs: 'ffp*/*') output: tuple val(meta), path("*.ome.tif"), emit: tif diff --git a/modules/nf-core/assemblyscan/environment.yml b/modules/nf-core/assemblyscan/environment.yml index 34a02bc7934..3751ff08a2c 100644 --- a/modules/nf-core/assemblyscan/environment.yml +++ b/modules/nf-core/assemblyscan/environment.yml @@ -1,7 +1,5 @@ -name: assemblyscan channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::assembly-scan=0.4.1 diff --git a/modules/nf-core/assemblyscan/meta.yml b/modules/nf-core/assemblyscan/meta.yml index 9ff7e3f185c..4cf187798aa 100644 --- a/modules/nf-core/assemblyscan/meta.yml +++ b/modules/nf-core/assemblyscan/meta.yml @@ -3,6 +3,8 @@ description: Assembly summary statistics in JSON format keywords: - assembly - statistics + - summary + - json tools: - assemblyscan: description: Assembly summary statistics in JSON format diff --git a/modules/nf-core/assemblyscan/tests/main.nf.test b/modules/nf-core/assemblyscan/tests/main.nf.test index 7e5a7bbf960..7ca44449372 100644 --- a/modules/nf-core/assemblyscan/tests/main.nf.test +++ b/modules/nf-core/assemblyscan/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/ataqv/ataqv/environment.yml b/modules/nf-core/ataqv/ataqv/environment.yml index a91f6d9bc6e..8ad29081b19 100644 --- a/modules/nf-core/ataqv/ataqv/environment.yml +++ b/modules/nf-core/ataqv/ataqv/environment.yml @@ -1,7 +1,5 @@ -name: ataqv_ataqv channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ataqv=1.3.1 diff --git a/modules/nf-core/ataqv/mkarv/environment.yml b/modules/nf-core/ataqv/mkarv/environment.yml index 28ff2f69d54..8ad29081b19 100644 --- a/modules/nf-core/ataqv/mkarv/environment.yml +++ b/modules/nf-core/ataqv/mkarv/environment.yml @@ -1,7 +1,5 @@ -name: ataqv_mkarv channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ataqv=1.3.1 diff --git a/modules/nf-core/ataqv/mkarv/meta.yml b/modules/nf-core/ataqv/mkarv/meta.yml index aecbb13d162..be4ff3ed519 100644 --- a/modules/nf-core/ataqv/mkarv/meta.yml +++ b/modules/nf-core/ataqv/mkarv/meta.yml @@ -12,7 +12,7 @@ tools: homepage: "https://github.com/ParkerLab/ataqv/blob/master/README.rst" documentation: "https://github.com/ParkerLab/ataqv/blob/master/README.rst" tool_dev_url: "https://github.com/ParkerLab/ataqv" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - json: type: file diff --git a/modules/nf-core/atlas/call/environment.yml b/modules/nf-core/atlas/call/environment.yml index c872fe05434..51ea2964b5b 100644 --- a/modules/nf-core/atlas/call/environment.yml +++ b/modules/nf-core/atlas/call/environment.yml @@ -1,7 +1,5 @@ -name: atlas_call channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::atlas=0.9.9 diff --git a/modules/nf-core/atlas/call/meta.yml b/modules/nf-core/atlas/call/meta.yml index 9b1142bdd94..a07bc6a7dd7 100644 --- a/modules/nf-core/atlas/call/meta.yml +++ b/modules/nf-core/atlas/call/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://bitbucket.org/wegmannlab/atlas/wiki/Home" tool_dev_url: "https://bitbucket.org/wegmannlab/atlas" doi: "10.1101/105346" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map @@ -48,7 +48,7 @@ input: description: Optional tab separated text file containing 1-based list of known alleles. See atlas call documentation. pattern: "*.{txt.tsv}" - method: - type: character + type: string description: Which variant calling algorithm to use. Some may require additional parameters supplied via ext.args. Check atlas documentation. pattern: "MLE|Bayesian|allelePresence|randomBase|majorityBase" output: @@ -61,7 +61,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - - bam: + - vcf: type: file description: VCF file with variant calls pattern: "*.vcf.gz" diff --git a/modules/nf-core/atlas/call/tests/main.nf.test b/modules/nf-core/atlas/call/tests/main.nf.test new file mode 100644 index 00000000000..dbd40640873 --- /dev/null +++ b/modules/nf-core/atlas/call/tests/main.nf.test @@ -0,0 +1,46 @@ + +nextflow_process { + + name "Test Process ATLAS_CALL" + script "../main.nf" + process "ATLAS_CALL" + + tag "modules" + tag "modules_nfcore" + tag "atlas" + tag "atlas/call" + + test("test-atlas-call") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [], + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = [] + input[4] = 'randomBase' + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf[0][1]).vcf.summary, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/atlas/call/tests/main.nf.test.snap b/modules/nf-core/atlas/call/tests/main.nf.test.snap new file mode 100644 index 00000000000..c5a406b2227 --- /dev/null +++ b/modules/nf-core/atlas/call/tests/main.nf.test.snap @@ -0,0 +1,15 @@ +{ + "test-atlas-call": { + "content": [ + "VcfFile [chromosomes=[MT192765.1], sampleCount=1, variantCount=12674, phased=true, phasedAutodetect=true]", + [ + "versions.yml:md5,abad4c906071792f8a5270fdb143fc4e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T15:48:22.930389" + } +} \ No newline at end of file diff --git a/modules/nf-core/atlas/pmd/environment.yml b/modules/nf-core/atlas/pmd/environment.yml index 24ba39f5835..51ea2964b5b 100644 --- a/modules/nf-core/atlas/pmd/environment.yml +++ b/modules/nf-core/atlas/pmd/environment.yml @@ -1,7 +1,5 @@ -name: atlas_pmd channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::atlas=0.9.9 diff --git a/modules/nf-core/atlas/pmd/meta.yml b/modules/nf-core/atlas/pmd/meta.yml index 7b11d718e48..ed2ec3691ba 100644 --- a/modules/nf-core/atlas/pmd/meta.yml +++ b/modules/nf-core/atlas/pmd/meta.yml @@ -11,7 +11,7 @@ tools: documentation: "https://bitbucket.org/wegmannlab/atlas/wiki/Home" tool_dev_url: "https://bitbucket.org/wegmannlab/atlas" doi: "10.1101/105346" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/atlas/pmd/tests/main.nf.test b/modules/nf-core/atlas/pmd/tests/main.nf.test new file mode 100644 index 00000000000..fc804e7b170 --- /dev/null +++ b/modules/nf-core/atlas/pmd/tests/main.nf.test @@ -0,0 +1,46 @@ + +nextflow_process { + + name "Test Process ATLAS_PMD" + script "../main.nf" + process "ATLAS_PMD" + + tag "modules" + tag "modules_nfcore" + tag "atlas" + tag "atlas/pmd" + + test("test-atlas-pmd") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.empiric[0][1]).readLines()[0], + file(process.out.exponential[0][1]).readLines()[0][0..13], + file(process.out.counts[0][1]).readLines()[0], + file(process.out.table[0][1]).readLines()[0], + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/atlas/pmd/tests/main.nf.test.snap b/modules/nf-core/atlas/pmd/tests/main.nf.test.snap new file mode 100644 index 00000000000..59f90a820f7 --- /dev/null +++ b/modules/nf-core/atlas/pmd/tests/main.nf.test.snap @@ -0,0 +1,18 @@ +{ + "test-atlas-pmd": { + "content": [ + "1\tCT\tEmpiric[0.000831,0.000000,0.001339,0.001350,0.001437,0.000000,0.002210,0.001314,0.001466,0.000000,0.001395,0.001403,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.001362,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000794,0.000000,0.000000,0.000000,0.001297,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000]", + "1\tExponential[", + "1\tforward\tA->A\t2050\t2033\t2081\t2078\t2138\t2119\t2038\t2007\t2035\t2113\t2049\t2048\t1974\t2012\t2066\t2093\t2110\t1971\t1976\t1906\t1968\t1951\t1917\t1912\t1955\t1956\t1933\t1872\t1922\t1933\t1974\t1840\t1963\t1897\t1870\t1823\t1923\t1908\t1902\t1883\t1973\t1899\t1908\t1912\t1972\t1913\t1922\t1959\t1995\t2039", + "1\tforward\tA->A\t0.998539\t0.997547\t0.997603\t1\t0.998133\t0.998586\t0.99902\t0.998507\t0.998038\t0.999527\t0.997566\t0.997565\t0.998988\t0.998016\t0.99855\t0.999522\t0.996223\t0.99848\t0.999494\t0.998952\t0.999492\t0.997444\t0.998958\t0.997912\t0.997958\t0.997959\t0.997935\t0.998933\t0.996888\t0.999483\t0.998988\t0.999457\t0.998474\t0.998947\t0.998398\t0.998357\t0.997924\t0.999476\t0.999475\t1\t0.998987\t0.998423\t0.999476\t1\t1\t0.998956\t0.998442\t0.997454\t0.9975\t0.99951", + [ + "versions.yml:md5,abec49256c52cb677fa0dad3473ed5a6" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T16:01:09.837624" + } +} \ No newline at end of file diff --git a/modules/nf-core/atlas/recal/environment.yml b/modules/nf-core/atlas/recal/environment.yml index 19265746010..51ea2964b5b 100644 --- a/modules/nf-core/atlas/recal/environment.yml +++ b/modules/nf-core/atlas/recal/environment.yml @@ -1,7 +1,5 @@ -name: atlas_recal channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::atlas=0.9.9 diff --git a/modules/nf-core/atlas/recal/meta.yml b/modules/nf-core/atlas/recal/meta.yml index 886e93cb4e6..47b9c9afe6d 100644 --- a/modules/nf-core/atlas/recal/meta.yml +++ b/modules/nf-core/atlas/recal/meta.yml @@ -1,15 +1,16 @@ name: "atlas_recal" -description: gives an estimation of the sequencing bias based on known invariant sites +description: Gives an estimation of the sequencing bias based on known invariant sites keywords: - sequencing_bias - ATLAS + - bias tools: - "atlas": description: "ATLAS, a suite of methods to accurately genotype and estimate genetic diversity" homepage: "https://bitbucket.org/wegmannlab/atlas/wiki/Home" documentation: "https://bitbucket.org/wegmannlab/atlas/wiki/Home" doi: "10.1101/105346" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/atlas/recal/tests/main.nf.test b/modules/nf-core/atlas/recal/tests/main.nf.test new file mode 100644 index 00000000000..e03c6208b36 --- /dev/null +++ b/modules/nf-core/atlas/recal/tests/main.nf.test @@ -0,0 +1,44 @@ + +nextflow_process { + + name "Test Process ATLAS_RECAL" + script "../main.nf" + process "ATLAS_RECAL" + + tag "modules" + tag "modules_nfcore" + tag "atlas" + tag "atlas/recal" + + test("test-atlas-recal") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [], + [] + ] + input[1] = [] + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.recal_patterns[0][1]).readLines()[0], + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/atlas/recal/tests/main.nf.test.snap b/modules/nf-core/atlas/recal/tests/main.nf.test.snap new file mode 100644 index 00000000000..a780f7c9b17 --- /dev/null +++ b/modules/nf-core/atlas/recal/tests/main.nf.test.snap @@ -0,0 +1,15 @@ +{ + "test-atlas-recal": { + "content": [ + "readGroup\tmate\tmodel\tquality\tposition\tcontext", + [ + "versions.yml:md5,69864cf23ffc5b0559af20e0675c4290" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T15:57:16.06295" + } +} \ No newline at end of file diff --git a/modules/nf-core/atlas/splitmerge/environment.yml b/modules/nf-core/atlas/splitmerge/environment.yml index 5c43cec2672..51ea2964b5b 100644 --- a/modules/nf-core/atlas/splitmerge/environment.yml +++ b/modules/nf-core/atlas/splitmerge/environment.yml @@ -1,7 +1,5 @@ -name: atlas_splitmerge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::atlas=0.9.9 diff --git a/modules/nf-core/atlas/splitmerge/main.nf b/modules/nf-core/atlas/splitmerge/main.nf index 1a4725cf1ec..222b55af7eb 100644 --- a/modules/nf-core/atlas/splitmerge/main.nf +++ b/modules/nf-core/atlas/splitmerge/main.nf @@ -11,7 +11,8 @@ process ATLAS_SPLITMERGE { tuple val(meta), path(bam), path(bai), path(read_group_settings), path(blacklist) output: - tuple val(meta), path("*_mergedReads.bam"), path("*.txt.gz"), emit: data + tuple val(meta), path("*_mergedReads.bam") , emit: bam + tuple val(meta), path("*.txt.gz") , emit: txt path "versions.yml", emit: versions when: diff --git a/modules/nf-core/atlas/splitmerge/meta.yml b/modules/nf-core/atlas/splitmerge/meta.yml index fc6289c78da..24621b1901b 100644 --- a/modules/nf-core/atlas/splitmerge/meta.yml +++ b/modules/nf-core/atlas/splitmerge/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://bitbucket.org/wegmannlab/atlas/wiki/Home" tool_dev_url: "https://bitbucket.org/wegmannlab/atlas" doi: "10.1101/105346" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map @@ -27,7 +27,7 @@ input: type: file description: The BAI file for the input BAM file pattern: "*.bai" - - read_group_setting: + - read_group_settings: type: file description: | TXT file containing the split and merge settings for @@ -55,7 +55,7 @@ output: type: file description: A BAM file with suffix_mergedReads.bam pattern: "*_mergedReads.bam" - - filelist: + - txt: type: file description: A file listing all reads that were filtered out in the merging process with suffix_ignoredReads.txt.gz pattern: "*.txt.gz" diff --git a/modules/nf-core/atlas/splitmerge/tests/main.nf.test b/modules/nf-core/atlas/splitmerge/tests/main.nf.test new file mode 100644 index 00000000000..9d7d1884b97 --- /dev/null +++ b/modules/nf-core/atlas/splitmerge/tests/main.nf.test @@ -0,0 +1,43 @@ + +nextflow_process { + + name "Test Process ATLAS_SPLITMERGE" + script "../main.nf" + process "ATLAS_SPLITMERGE" + + tag "modules" + tag "modules_nfcore" + tag "atlas" + tag "atlas/splitmerge" + + test("test-atlas-splitmerge") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/read_group_settings.txt', checkIfExists: true), + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.txt[0][1]).linesGzip[3..7], + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/atlas/splitmerge/tests/main.nf.test.snap b/modules/nf-core/atlas/splitmerge/tests/main.nf.test.snap new file mode 100644 index 00000000000..dfb38da0af1 --- /dev/null +++ b/modules/nf-core/atlas/splitmerge/tests/main.nf.test.snap @@ -0,0 +1,22 @@ +{ + "test-atlas-splitmerge": { + "content": [ + [ + "Read testN:1, rev : not a proper pair (orphan)", + "Read testN:99, rev : longer than insert size (TLEN)", + "Read testN:99, rev : not a proper pair (orphan)", + "Read testN:830, rev : longer than insert size (TLEN)", + "Read testN:830, fwd : longer than insert size (TLEN)" + ], + "66f5f17da47cc4dced99bd17d739b536", + [ + "versions.yml:md5,208f6ef7923cec00ddbcd5825f84a4fa" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T15:33:41.150912" + } +} \ No newline at end of file diff --git a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml index 3a613e61008..9c0280fc49e 100644 --- a/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml +++ b/modules/nf-core/atlasgeneannotationmanipulation/gtf2featureannotation/environment.yml @@ -1,7 +1,5 @@ -name: atlasgeneannotationmanipulation_gtf2featureannotation channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::atlas-gene-annotation-manipulation=1.1.1 diff --git a/modules/nf-core/authentict/deam2cont/environment.yml b/modules/nf-core/authentict/deam2cont/environment.yml index 90cf797e6ee..73d01c656e5 100644 --- a/modules/nf-core/authentict/deam2cont/environment.yml +++ b/modules/nf-core/authentict/deam2cont/environment.yml @@ -1,7 +1,5 @@ -name: authentict_deam2cont channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::authentict=1.0.1 diff --git a/modules/nf-core/authentict/deam2cont/meta.yml b/modules/nf-core/authentict/deam2cont/meta.yml index 097f6079aa4..0c05fbc4633 100644 --- a/modules/nf-core/authentict/deam2cont/meta.yml +++ b/modules/nf-core/authentict/deam2cont/meta.yml @@ -14,7 +14,7 @@ tools: documentation: "https://github.com/StephanePeyregne/AuthentiCT" tool_dev_url: "https://github.com/StephanePeyregne/AuthentiCT" doi: "10.1186/s13059-020-02123-y" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/backsub/tests/main.nf.test b/modules/nf-core/backsub/tests/main.nf.test index 15355209e55..7b79d9f576d 100644 --- a/modules/nf-core/backsub/tests/main.nf.test +++ b/modules/nf-core/backsub/tests/main.nf.test @@ -16,11 +16,11 @@ nextflow_process { // define inputs of the process here. Example: input[0] = [ [ id:'test' ], - file(params.test_data['imaging']['background_subtraction']['image'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/background_subtraction/cycif_tonsil_registered.ome.tif', checkIfExists: true) ] input[1] = [ [ id:'test' ], - file(params.test_data['imaging']['background_subtraction']['markers'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/background_subtraction/markers.csv', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bacphlip/environment.yml b/modules/nf-core/bacphlip/environment.yml index 6bc1631b7ec..bfd7a480b82 100644 --- a/modules/nf-core/bacphlip/environment.yml +++ b/modules/nf-core/bacphlip/environment.yml @@ -1,9 +1,6 @@ -name: bacphlip - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bacphlip=0.9.6 diff --git a/modules/nf-core/bacphlip/tests/main.nf.test b/modules/nf-core/bacphlip/tests/main.nf.test index e3fddd7d884..4c3f1b8b7b5 100644 --- a/modules/nf-core/bacphlip/tests/main.nf.test +++ b/modules/nf-core/bacphlip/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['candidatus_portiera_aleyrodidarum']['genome']['genome_fasta'], checkIfExists: true) // genome.fasta + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/genome.fasta', checkIfExists: true) // genome.fasta ] """ } diff --git a/modules/nf-core/bakta/bakta/environment.yml b/modules/nf-core/bakta/bakta/environment.yml index efb92265ae0..b3c302f09be 100644 --- a/modules/nf-core/bakta/bakta/environment.yml +++ b/modules/nf-core/bakta/bakta/environment.yml @@ -1,7 +1,5 @@ -name: bakta_bakta channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bakta=1.9.3 diff --git a/modules/nf-core/bakta/bakta/tests/main.nf.test b/modules/nf-core/bakta/bakta/tests/main.nf.test index bdceb16ef82..3c1f8f82824 100644 --- a/modules/nf-core/bakta/bakta/tests/main.nf.test +++ b/modules/nf-core/bakta/bakta/tests/main.nf.test @@ -28,7 +28,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) ] input[1] = BAKTA_BAKTADBDOWNLOAD.out.db input[2] = [] diff --git a/modules/nf-core/bakta/baktadbdownload/environment.yml b/modules/nf-core/bakta/baktadbdownload/environment.yml index f6a53ff7f8a..b3c302f09be 100644 --- a/modules/nf-core/bakta/baktadbdownload/environment.yml +++ b/modules/nf-core/bakta/baktadbdownload/environment.yml @@ -1,7 +1,5 @@ -name: bakta_baktadbdownload channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bakta=1.9.3 diff --git a/modules/nf-core/bam2fastx/bam2fastq/environment.yml b/modules/nf-core/bam2fastx/bam2fastq/environment.yml index 2a73c2c9b86..563a0c17b36 100644 --- a/modules/nf-core/bam2fastx/bam2fastq/environment.yml +++ b/modules/nf-core/bam2fastx/bam2fastq/environment.yml @@ -1,7 +1,5 @@ -name: bam2fastx_bam2fastq channels: - conda-forge - bioconda - - defaults dependencies: - bam2fastx=1.3.1 diff --git a/modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test b/modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test new file mode 100644 index 00000000000..0d4f80ae699 --- /dev/null +++ b/modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test @@ -0,0 +1,37 @@ + +nextflow_process { + + name "Test Process BAM2FASTX_BAM2FASTQ" + script "../main.nf" + process "BAM2FASTX_BAM2FASTQ" + + tag "modules" + tag "modules_nfcore" + tag "bam2fastx" + tag "bam2fastx/bam2fastq" + + test("test-bam2fastx-bam2fastq") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/alz.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/pacbio/bam/alz.bam.pbi', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test.snap b/modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test.snap new file mode 100644 index 00000000000..342241ef940 --- /dev/null +++ b/modules/nf-core/bam2fastx/bam2fastq/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-bam2fastx-bam2fastq": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fastq.gz:md5,8abf16176fd1625998ee28590e1039b1" + ] + ], + "1": [ + "versions.yml:md5,1b954947255d9b2ad16d2c523258cceb" + ], + "fastq": [ + [ + { + "id": "test" + }, + "test.fastq.gz:md5,8abf16176fd1625998ee28590e1039b1" + ] + ], + "versions": [ + "versions.yml:md5,1b954947255d9b2ad16d2c523258cceb" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T06:30:10.25178642" + } +} \ No newline at end of file diff --git a/modules/nf-core/bamaligncleaner/environment.yml b/modules/nf-core/bamaligncleaner/environment.yml index 963cbf0f2ee..8b861d9ea88 100644 --- a/modules/nf-core/bamaligncleaner/environment.yml +++ b/modules/nf-core/bamaligncleaner/environment.yml @@ -1,7 +1,5 @@ -name: bamaligncleaner channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bamaligncleaner=0.2.2 diff --git a/modules/nf-core/bamclipper/environment.yml b/modules/nf-core/bamclipper/environment.yml index deeb118a14f..1d24949aa0f 100644 --- a/modules/nf-core/bamclipper/environment.yml +++ b/modules/nf-core/bamclipper/environment.yml @@ -1,8 +1,6 @@ -name: "bamclipper" channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bamclipper=1.0.0 - bioconda::samtools=1.12 diff --git a/modules/nf-core/bamcmp/environment.yml b/modules/nf-core/bamcmp/environment.yml index e7b1dbb060f..351c12ab93b 100644 --- a/modules/nf-core/bamcmp/environment.yml +++ b/modules/nf-core/bamcmp/environment.yml @@ -1,7 +1,5 @@ -name: bamcmp channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bamcmp=2.2 diff --git a/modules/nf-core/bamstats/generalstats/environment.yml b/modules/nf-core/bamstats/generalstats/environment.yml index 71d07d16ef1..4591b2cc5c5 100644 --- a/modules/nf-core/bamstats/generalstats/environment.yml +++ b/modules/nf-core/bamstats/generalstats/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "bamstats_generalstats" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bamstats=0.3.5" diff --git a/modules/nf-core/bamstats/generalstats/main.nf b/modules/nf-core/bamstats/generalstats/main.nf index 4bae58d6ba1..2459aeb200e 100644 --- a/modules/nf-core/bamstats/generalstats/main.nf +++ b/modules/nf-core/bamstats/generalstats/main.nf @@ -48,4 +48,3 @@ process BAMSTATS_GENERALSTATS { END_VERSIONS """ } - diff --git a/modules/nf-core/bamstats/generalstats/tests/main.nf.test b/modules/nf-core/bamstats/generalstats/tests/main.nf.test index 8a5a18b1104..d243f1a77ee 100644 --- a/modules/nf-core/bamstats/generalstats/tests/main.nf.test +++ b/modules/nf-core/bamstats/generalstats/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) ] """ } @@ -41,7 +41,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bamtofastq10x/environment.yml b/modules/nf-core/bamtofastq10x/environment.yml index d612f512e6f..cce34f4b9bd 100644 --- a/modules/nf-core/bamtofastq10x/environment.yml +++ b/modules/nf-core/bamtofastq10x/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "bamtofastq10x" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::10x_bamtofastq=1.4.1" diff --git a/modules/nf-core/bamtools/convert/environment.yml b/modules/nf-core/bamtools/convert/environment.yml index 1407c34a8c6..5fd41c95be3 100644 --- a/modules/nf-core/bamtools/convert/environment.yml +++ b/modules/nf-core/bamtools/convert/environment.yml @@ -1,7 +1,5 @@ -name: bamtools_convert channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bamtools=2.5.2 diff --git a/modules/nf-core/bamtools/split/environment.yml b/modules/nf-core/bamtools/split/environment.yml index 995d25ee86a..5fd41c95be3 100644 --- a/modules/nf-core/bamtools/split/environment.yml +++ b/modules/nf-core/bamtools/split/environment.yml @@ -1,7 +1,5 @@ -name: bamtools_split channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bamtools=2.5.2 diff --git a/modules/nf-core/bamtools/stats/environment.yml b/modules/nf-core/bamtools/stats/environment.yml index a32c319b55a..5fd41c95be3 100644 --- a/modules/nf-core/bamtools/stats/environment.yml +++ b/modules/nf-core/bamtools/stats/environment.yml @@ -1,7 +1,5 @@ -name: bamtools_stats channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bamtools=2.5.2 diff --git a/modules/nf-core/bamtools/stats/tests/main.nf.test b/modules/nf-core/bamtools/stats/tests/main.nf.test new file mode 100644 index 00000000000..478a6f0e84d --- /dev/null +++ b/modules/nf-core/bamtools/stats/tests/main.nf.test @@ -0,0 +1,35 @@ + +nextflow_process { + + name "Test Process BAMTOOLS_STATS" + script "../main.nf" + process "BAMTOOLS_STATS" + + tag "modules" + tag "modules_nfcore" + tag "bamtools" + tag "bamtools/stats" + + test("test-bamtools-stats") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bamtools/stats/tests/main.nf.test.snap b/modules/nf-core/bamtools/stats/tests/main.nf.test.snap new file mode 100644 index 00000000000..c12ce29e5fb --- /dev/null +++ b/modules/nf-core/bamtools/stats/tests/main.nf.test.snap @@ -0,0 +1,37 @@ +{ + "test-bamtools-stats": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.stats:md5,b7c3f01682673a652d664a2889b15b66" + ] + ], + "1": [ + "versions.yml:md5,cdecc135c35467721cc72a58b542323b" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.stats:md5,b7c3f01682673a652d664a2889b15b66" + ] + ], + "versions": [ + "versions.yml:md5,cdecc135c35467721cc72a58b542323b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T15:23:51.167984" + } +} \ No newline at end of file diff --git a/modules/nf-core/bamutil/trimbam/environment.yml b/modules/nf-core/bamutil/trimbam/environment.yml index d9b10c2a446..d9ac63d520f 100644 --- a/modules/nf-core/bamutil/trimbam/environment.yml +++ b/modules/nf-core/bamutil/trimbam/environment.yml @@ -1,7 +1,5 @@ -name: bamutil_trimbam channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bamutil=1.0.15 diff --git a/modules/nf-core/bamutil/trimbam/tests/main.nf.test b/modules/nf-core/bamutil/trimbam/tests/main.nf.test new file mode 100644 index 00000000000..6ce0bbdd2aa --- /dev/null +++ b/modules/nf-core/bamutil/trimbam/tests/main.nf.test @@ -0,0 +1,41 @@ + +nextflow_process { + + name "Test Process BAMUTIL_TRIMBAM" + script "../main.nf" + process "BAMUTIL_TRIMBAM" + + tag "modules" + tag "modules_nfcore" + tag "bamutil" + tag "bamutil/trimbam" + + test("test-bamutil-trimbam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true), + 2, + 2 + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bamutil/trimbam/tests/main.nf.test.snap b/modules/nf-core/bamutil/trimbam/tests/main.nf.test.snap new file mode 100644 index 00000000000..bebeabd6f8f --- /dev/null +++ b/modules/nf-core/bamutil/trimbam/tests/main.nf.test.snap @@ -0,0 +1,15 @@ +{ + "test-bamutil-trimbam": { + "content": [ + "483cb3b74b338dcc04ea6ae53e86e179", + [ + "versions.yml:md5,db7889ac58ea4eeb68ceb652de159cc4" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T15:21:23.796158" + } +} \ No newline at end of file diff --git a/modules/nf-core/bandage/image/environment.yml b/modules/nf-core/bandage/image/environment.yml index 61558105e51..018e544b96b 100644 --- a/modules/nf-core/bandage/image/environment.yml +++ b/modules/nf-core/bandage/image/environment.yml @@ -1,7 +1,5 @@ -name: bandage_image channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bandage=0.8.1 diff --git a/modules/nf-core/bandage/image/tests/main.nf.test b/modules/nf-core/bandage/image/tests/main.nf.test new file mode 100644 index 00000000000..160281f9b83 --- /dev/null +++ b/modules/nf-core/bandage/image/tests/main.nf.test @@ -0,0 +1,40 @@ + +nextflow_process { + + name "Test Process BANDAGE_IMAGE" + script "../main.nf" + process "BANDAGE_IMAGE" + + tag "modules" + tag "modules_nfcore" + tag "bandage" + tag "bandage/image" + + test("test-bandage-image") { + + when { + process { + """ + input[0] = [ + [ id:'B-3106' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gfa/assembly.gfa', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.png[0][1]).name, + file(process.out.svg[0][1]).readLines()[3..7], + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bandage/image/tests/main.nf.test.snap b/modules/nf-core/bandage/image/tests/main.nf.test.snap new file mode 100644 index 00000000000..1f260eca921 --- /dev/null +++ b/modules/nf-core/bandage/image/tests/main.nf.test.snap @@ -0,0 +1,22 @@ +{ + "test-bandage-image": { + "content": [ + "B-3106.png", + [ + " xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.2\" baseProfile=\"tiny\">", + "Qt SVG Document", + "Generated with Qt", + "", + "" + ], + [ + "versions.yml:md5,443fd5f11eb36f013a1863e66d0eea21" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T15:18:46.613049" + } +} \ No newline at end of file diff --git a/modules/nf-core/barrnap/environment.yml b/modules/nf-core/barrnap/environment.yml index 28436cf1390..3a920f2e3f2 100644 --- a/modules/nf-core/barrnap/environment.yml +++ b/modules/nf-core/barrnap/environment.yml @@ -1,7 +1,5 @@ -name: barrnap channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::barrnap=0.9 diff --git a/modules/nf-core/barrnap/main.nf b/modules/nf-core/barrnap/main.nf index cd1143c9476..b99573d75f0 100644 --- a/modules/nf-core/barrnap/main.nf +++ b/modules/nf-core/barrnap/main.nf @@ -32,7 +32,7 @@ process BARRNAP { --threads $task.cpus \\ --kingdom $db \\ $input \\ - > rrna_${db}.gff + > ${prefix}_${db}.gff cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -44,9 +44,9 @@ process BARRNAP { stub: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - + db = dbname ? "${dbname}" : 'bac' """ - touch ${prefix}.gff + touch ${prefix}_${db}.gff cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/barrnap/meta.yml b/modules/nf-core/barrnap/meta.yml index 3aaf407abb1..a683e712383 100644 --- a/modules/nf-core/barrnap/meta.yml +++ b/modules/nf-core/barrnap/meta.yml @@ -12,7 +12,7 @@ tools: homepage: "https://github.com/tseemann/barrnap" documentation: "https://github.com/tseemann/barrnap" tool_dev_url: "https://github.com/tseemann/barrnap" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map @@ -23,6 +23,9 @@ input: type: file description: fastq or fasta file nucleotides (it can be amino acids as well) pattern: "*.{fna,fasta,faa,fastq}" + - dbname: + type: string + description: database to use(bacteria, archaea, eukaryota, metazoan mitochondria) output: - meta: type: map diff --git a/modules/nf-core/barrnap/tests/main.nf.test b/modules/nf-core/barrnap/tests/main.nf.test new file mode 100644 index 00000000000..b2d62163209 --- /dev/null +++ b/modules/nf-core/barrnap/tests/main.nf.test @@ -0,0 +1,57 @@ +nextflow_process { + + name "Test Process BARRNAP" + script "../main.nf" + process "BARRNAP" + tag "modules" + tag "modules_nfcore" + tag "barrnap" + + test("barrnap") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true), + "bac" + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("barrnap - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true), + "bac" + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} + + diff --git a/modules/nf-core/barrnap/tests/main.nf.test.snap b/modules/nf-core/barrnap/tests/main.nf.test.snap new file mode 100644 index 00000000000..0964a0da270 --- /dev/null +++ b/modules/nf-core/barrnap/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "barrnap - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_bac.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,447eafa60f76f6b84d1c41a2f5c2f76b" + ], + "gff": [ + [ + { + "id": "test", + "single_end": false + }, + "test_bac.gff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,447eafa60f76f6b84d1c41a2f5c2f76b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.1" + }, + "timestamp": "2024-07-10T11:25:35.085998" + }, + "barrnap": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_bac.gff:md5,df19e1b84ba6f691d20c72b397c88abf" + ] + ], + "1": [ + "versions.yml:md5,447eafa60f76f6b84d1c41a2f5c2f76b" + ], + "gff": [ + [ + { + "id": "test", + "single_end": false + }, + "test_bac.gff:md5,df19e1b84ba6f691d20c72b397c88abf" + ] + ], + "versions": [ + "versions.yml:md5,447eafa60f76f6b84d1c41a2f5c2f76b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.1" + }, + "timestamp": "2024-07-10T11:25:28.621027" + } +} \ No newline at end of file diff --git a/modules/nf-core/barrnap/tests/tags.yml b/modules/nf-core/barrnap/tests/tags.yml new file mode 100644 index 00000000000..5b951105515 --- /dev/null +++ b/modules/nf-core/barrnap/tests/tags.yml @@ -0,0 +1,2 @@ +barrnap: + - "modules/nf-core/barrnap/**" diff --git a/modules/nf-core/basicpy/environment.yml b/modules/nf-core/basicpy/environment.yml index 48bb0990a05..3cebeff05bf 100644 --- a/modules/nf-core/basicpy/environment.yml +++ b/modules/nf-core/basicpy/environment.yml @@ -1,5 +1,3 @@ -name: basicpy channels: - conda-forge - bioconda - - defaults diff --git a/modules/nf-core/basicpy/meta.yml b/modules/nf-core/basicpy/meta.yml index 446762008d3..61e03566697 100644 --- a/modules/nf-core/basicpy/meta.yml +++ b/modules/nf-core/basicpy/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://basicpy.readthedocs.io/en/latest/index.html" tool_dev_url: "https://github.com/peng-lab/BaSiCPy" doi: 10.1038/ncomms14836 - licence: "MIT License" + license: ["MIT License"] input: - meta: type: map diff --git a/modules/nf-core/bbmap/align/environment.yml b/modules/nf-core/bbmap/align/environment.yml index 96c4c32cbce..7ff25c7a51b 100644 --- a/modules/nf-core/bbmap/align/environment.yml +++ b/modules/nf-core/bbmap/align/environment.yml @@ -1,8 +1,6 @@ -name: bbmap_align channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.01 - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/bbmap/bbduk/environment.yml b/modules/nf-core/bbmap/bbduk/environment.yml index 2ae2e0bc88c..cbe6f2a0c75 100644 --- a/modules/nf-core/bbmap/bbduk/environment.yml +++ b/modules/nf-core/bbmap/bbduk/environment.yml @@ -1,7 +1,5 @@ -name: bbmap_bbduk channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.06 diff --git a/modules/nf-core/bbmap/bbduk/tests/main.nf.test b/modules/nf-core/bbmap/bbduk/tests/main.nf.test index ae7e4ec4e74..0f3e8187052 100644 --- a/modules/nf-core/bbmap/bbduk/tests/main.nf.test +++ b/modules/nf-core/bbmap/bbduk/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ] input[1] = [] """ @@ -42,8 +42,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = [] """ @@ -68,10 +68,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ] input[1] = [ - file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) ] """ } @@ -95,11 +95,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = [ - file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) ] """ } @@ -125,7 +125,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ] input[1] = [] """ @@ -150,8 +150,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = [] """ diff --git a/modules/nf-core/bbmap/bbmerge/environment.yml b/modules/nf-core/bbmap/bbmerge/environment.yml index be435a82950..963ad517dbd 100644 --- a/modules/nf-core/bbmap/bbmerge/environment.yml +++ b/modules/nf-core/bbmap/bbmerge/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "bbmap_bbmerge" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bbmap=39.06" diff --git a/modules/nf-core/bbmap/bbnorm/environment.yml b/modules/nf-core/bbmap/bbnorm/environment.yml index 8b97ffdad59..fa8209c0b54 100644 --- a/modules/nf-core/bbmap/bbnorm/environment.yml +++ b/modules/nf-core/bbmap/bbnorm/environment.yml @@ -1,8 +1,6 @@ -name: bbmap_bbnorm channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.01 - pigz=2.6 diff --git a/modules/nf-core/bbmap/bbnorm/meta.yml b/modules/nf-core/bbmap/bbnorm/meta.yml index 6c8426f88f1..052c5b534d6 100644 --- a/modules/nf-core/bbmap/bbnorm/meta.yml +++ b/modules/nf-core/bbmap/bbnorm/meta.yml @@ -10,7 +10,7 @@ tools: homepage: "https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/" documentation: "https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/" tool_dev_url: "https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbnorm-guide/" - licence: "BBMap - Bushnell B. - sourceforge.net/projects/bbmap/" + licence: ["BBMap - Bushnell B. - sourceforge.net/projects/bbmap/"] input: - meta: type: map diff --git a/modules/nf-core/bbmap/bbnorm/tests/main.nf.test b/modules/nf-core/bbmap/bbnorm/tests/main.nf.test new file mode 100644 index 00000000000..fc17dc1c8fa --- /dev/null +++ b/modules/nf-core/bbmap/bbnorm/tests/main.nf.test @@ -0,0 +1,128 @@ + +nextflow_process { + + name "Test Process BBMAP_BBNORM" + script "../main.nf" + process "BBMAP_BBNORM" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bbmap" + tag "bbmap/bbnorm" + + test("test-bbmap-bbnorm-se") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.fastq[0][1]).linesGzip, + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-bbmap-bbnorm-pe") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.fastq[0][1].collect { path(it).linesGzip[0..1] }, + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-bbmap-bbnorm-interleaved") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.fastq[0][1]).linesGzip[3..7], + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-bbmap-bbnorm-multiple-input") { + + when { + process { + """ + input[0] = [ + [id:'test', single_end:true ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.fastq[0][1]).linesGzip[3..7], + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bbmap/bbnorm/tests/main.nf.test.snap b/modules/nf-core/bbmap/bbnorm/tests/main.nf.test.snap new file mode 100644 index 00000000000..1d7b2438abd --- /dev/null +++ b/modules/nf-core/bbmap/bbnorm/tests/main.nf.test.snap @@ -0,0 +1,81 @@ +{ + "test-bbmap-bbnorm-interleaved": { + "content": [ + [ + "A/AA//EEAEA/E/AEEEE6EE/EEEA/6AEEEEEEEEE6EEEAEAEE//A/EEEEEE//E/E/A//E/E/< + other_refs += "echo '' | gzip > ${prefix}_${name}.fastq.gz" + } + """ + if [ ! -d bbsplit ]; then + mkdir bbsplit + fi + + if ! (${only_build_index}); then + echo '' | gzip > ${prefix}_primary.fastq.gz + ${other_refs} + touch ${prefix}.stats.txt + fi + + touch ${prefix}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") + END_VERSIONS + """ } diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test index 8fb130abbee..1f260d5f6de 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test @@ -8,6 +8,60 @@ nextflow_process { tag "bbmap" tag "bbmap/bbsplit" + test("sarscov2_se_fastq_fasta_chr22_fasta - index") { + + when { + process { + """ + input[0] = [[:], []] + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path("${process.out.index[0]}").exists() }, + { assert path(process.out.log[0][1]).text.contains("No index available") }, + { assert snapshot(process.out.versions).match() } + ) + } + } + + test("sarscov2_se_fastq_fasta_chr22_fasta - index - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [[:], []] + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("sarscov2_se_fastq_fasta_chr22_fasta") { setup { @@ -16,7 +70,7 @@ nextflow_process { script "../main.nf" process { """ - input[0] = [[:],[]] + input[0] = [[:], []] input[1] = [] input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) input[3] = Channel.of([ @@ -30,9 +84,6 @@ nextflow_process { } when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -82,9 +133,60 @@ nextflow_process { assertAll( { assert process.success }, { assert path(process.out.log[0][1]).text.contains("If you wish to regenerate the index") }, - { assert snapshot(filteredFiles).match("bbsplit_index_filtered_files")}, { assert filesExist : "One or more files to exclude do not exist" }, - { assert snapshot(process.out.versions).match("versions")} + { assert snapshot( + filteredFiles, + process.out.versions + ).match()} + ) + } + } + + test("sarscov2_se_fastq_fasta_chr22_fasta - stub") { + + options "-stub" + + setup { + + run("BBMAP_BBSPLIT", alias: "BBMAP_BBSPLIT_INDEX") { + script "../main.nf" + process { + """ + input[0] = [[:], []] + input[1] = [] + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = true + """ + } + } + } + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ]) + input[1] = BBMAP_BBSPLIT_INDEX.out.index + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[3] = Channel.of([ + [ 'human' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr22/sequence/chr22_23800000-23980000.fa', checkIfExists: true) + ]) + input[4] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap index 51b3bee1f60..0d648d7d6e3 100644 --- a/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap +++ b/modules/nf-core/bbmap/bbsplit/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "bbsplit_index_filtered_files": { + "sarscov2_se_fastq_fasta_chr22_fasta": { "content": [ [ "chr1.chrom.gz:md5,8fec4c63ec642613ad10adf4cc2e6ade", @@ -7,15 +7,18 @@ "chr1_index_k13_c13_b1.block2.gz:md5,2556b45206835a0ff7078d683b5fd6e2", "merged_ref_9222711925172838098.fa.gz:md5,983cef447fb28394b88a5b49b3579f0c", "namelist.txt:md5,45e7a4cdc7a11a39ada56844ca3a1e30" + ], + [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T17:15:59.705013452" + "timestamp": "2024-07-05T11:41:32.116928" }, - "versions": { + "sarscov2_se_fastq_fasta_chr22_fasta - index": { "content": [ [ "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" @@ -23,8 +26,174 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:41:06.072212" + }, + "sarscov2_se_fastq_fasta_chr22_fasta - index - stub": { + "content": [ + { + "0": [ + [ + + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + + }, + "null.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ], + "all_fastq": [ + + ], + "index": [ + [ + + ] + ], + "log": [ + [ + { + + }, + "null.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "primary_fastq": [ + + ], + "stats": [ + + ], + "versions": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:45:21.48352" + }, + "sarscov2_se_fastq_fasta_chr22_fasta - stub": { + "content": [ + { + "0": [ + [ + + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ], + "all_fastq": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_human.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "index": [ + [ + + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "primary_fastq": [ + [ + { + "id": "test", + "single_end": true + }, + "test_primary.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "stats": [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cb7f0e697ab2537f8ced951bfade90d4" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" }, - "timestamp": "2024-02-01T17:11:22.441753642" + "timestamp": "2024-07-05T11:51:38.805111" } -} +} \ No newline at end of file diff --git a/modules/nf-core/bbmap/clumpify/environment.yml b/modules/nf-core/bbmap/clumpify/environment.yml index bef6899e7b2..dfd8936e11f 100644 --- a/modules/nf-core/bbmap/clumpify/environment.yml +++ b/modules/nf-core/bbmap/clumpify/environment.yml @@ -1,7 +1,5 @@ -name: bbmap_clumpify channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.01 diff --git a/modules/nf-core/bbmap/clumpify/tests/main.nf.test b/modules/nf-core/bbmap/clumpify/tests/main.nf.test new file mode 100644 index 00000000000..f43b8767964 --- /dev/null +++ b/modules/nf-core/bbmap/clumpify/tests/main.nf.test @@ -0,0 +1,72 @@ + +nextflow_process { + + name "Test Process BBMAP_CLUMPIFY" + script "../main.nf" + process "BBMAP_CLUMPIFY" + + tag "modules" + tag "modules_nfcore" + tag "bbmap" + tag "bbmap/clumpify" + + test("test-bbmap-clumpify-single-end") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.reads, + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-bbmap-clumpify-paired-end") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.reads, + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bbmap/clumpify/tests/main.nf.test.snap b/modules/nf-core/bbmap/clumpify/tests/main.nf.test.snap new file mode 100644 index 00000000000..d2fa37f18c5 --- /dev/null +++ b/modules/nf-core/bbmap/clumpify/tests/main.nf.test.snap @@ -0,0 +1,49 @@ +{ + "test-bbmap-clumpify-paired-end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.clumped.fastq.gz:md5,27e51643262c1ef3905c4be184c3814c", + "test_2.clumped.fastq.gz:md5,c70ab7bbd44d6b6fadd6a1a79ef1648f" + ] + ] + ], + "test.clumpify.log", + [ + "versions.yml:md5,ec30171b7944e601f3fd733bb5408bf6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T06:43:39.816170993" + }, + "test-bbmap-clumpify-single-end": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.clumped.fastq.gz:md5,27e51643262c1ef3905c4be184c3814c" + ] + ], + "test.clumpify.log", + [ + "versions.yml:md5,ec30171b7944e601f3fd733bb5408bf6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T06:43:28.923674245" + } +} \ No newline at end of file diff --git a/modules/nf-core/bbmap/filterbyname/environment.yml b/modules/nf-core/bbmap/filterbyname/environment.yml index 6f01bc24be1..dfd8936e11f 100644 --- a/modules/nf-core/bbmap/filterbyname/environment.yml +++ b/modules/nf-core/bbmap/filterbyname/environment.yml @@ -1,7 +1,5 @@ -name: bbmap_filterbyname channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.01 diff --git a/modules/nf-core/bbmap/filterbyname/tests/main.nf.test b/modules/nf-core/bbmap/filterbyname/tests/main.nf.test index 60526d579e0..17c7ea5f825 100644 --- a/modules/nf-core/bbmap/filterbyname/tests/main.nf.test +++ b/modules/nf-core/bbmap/filterbyname/tests/main.nf.test @@ -16,8 +16,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] input[1] = "" input[2] = "fastq.bz2" @@ -44,8 +44,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] input[1] = "" input[2] = "fastq.bz2" @@ -70,7 +70,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = "" input[2] = "fasta" @@ -95,7 +95,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = "" input[2] = "fasta" @@ -120,7 +120,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = "ERR5069949.2151832,ERR5069949.576388,ERR5069949.501486" input[2] = "fasta" @@ -145,7 +145,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = "ERR5069949.2151832,ERR5069949.576388,ERR5069949.501486" input[2] = "fastq.gz" @@ -170,8 +170,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] input[1] = "ERR5069949.2151832,ERR5069949.576388,ERR5069949.501486" input[2] = "fastq.gz" @@ -196,8 +196,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] input[1] = "ERR5069949.2151832,ERR5069949.576388,ERR5069949.501486" input[2] = "fastq.gz" diff --git a/modules/nf-core/bbmap/index/environment.yml b/modules/nf-core/bbmap/index/environment.yml index 515f8d214df..dfd8936e11f 100644 --- a/modules/nf-core/bbmap/index/environment.yml +++ b/modules/nf-core/bbmap/index/environment.yml @@ -1,7 +1,5 @@ -name: bbmap_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.01 diff --git a/modules/nf-core/bbmap/index/meta.yml b/modules/nf-core/bbmap/index/meta.yml index 7e1cbc9f81d..c2dd342f562 100644 --- a/modules/nf-core/bbmap/index/meta.yml +++ b/modules/nf-core/bbmap/index/meta.yml @@ -12,7 +12,7 @@ tools: licence: ["UC-LBL license (see package)"] input: - fasta: - type: fasta + type: file description: fasta formatted file with nucleotide sequences pattern: "*.{fna,fa,fasta}" output: diff --git a/modules/nf-core/bbmap/index/tests/main.nf.test b/modules/nf-core/bbmap/index/tests/main.nf.test new file mode 100644 index 00000000000..7fe4cedeff1 --- /dev/null +++ b/modules/nf-core/bbmap/index/tests/main.nf.test @@ -0,0 +1,53 @@ +import groovy.io.FileType + +nextflow_process { + + name "Test Process BBMAP_INDEX" + script "../main.nf" + process "BBMAP_INDEX" + + tag "modules" + tag "modules_nfcore" + tag "bbmap" + tag "bbmap/index" + + test("test-bbmap-index") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { + def all_files = [] + + file(process.out.index[0]).eachFileRecurse (FileType.FILES) { file -> + all_files << file + } + + def all_file_names = all_files.collect { it.name }.toSorted() + + def stable_file_names = [ + 'chr1_index_k13_c15_b1.block' + ] + + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_file_names, + stable_files, + process.out.versions[0] + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bbmap/index/tests/main.nf.test.snap b/modules/nf-core/bbmap/index/tests/main.nf.test.snap new file mode 100644 index 00000000000..9e691dd41ec --- /dev/null +++ b/modules/nf-core/bbmap/index/tests/main.nf.test.snap @@ -0,0 +1,23 @@ +{ + "test-bbmap-index": { + "content": [ + [ + "chr1.chrom.gz", + "chr1_index_k13_c15_b1.block", + "chr1_index_k13_c15_b1.block2.gz", + "info.txt", + "scaffolds.txt.gz", + "summary.txt" + ], + [ + "chr1_index_k13_c15_b1.block:md5,9f0d9a7413c1d2c16cc24555b2381163" + ], + "versions.yml:md5,00db75f2ebfcae6002a29c49a476dda1" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:41:14.388643" + } +} \ No newline at end of file diff --git a/modules/nf-core/bbmap/pileup/environment.yml b/modules/nf-core/bbmap/pileup/environment.yml index 63767f5f0a8..7ff25c7a51b 100644 --- a/modules/nf-core/bbmap/pileup/environment.yml +++ b/modules/nf-core/bbmap/pileup/environment.yml @@ -1,8 +1,6 @@ -name: bbmap_pileup channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.01 - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/bbmap/pileup/tests/main.nf.test b/modules/nf-core/bbmap/pileup/tests/main.nf.test new file mode 100644 index 00000000000..583f407f770 --- /dev/null +++ b/modules/nf-core/bbmap/pileup/tests/main.nf.test @@ -0,0 +1,35 @@ + +nextflow_process { + + name "Test Process BBMAP_PILEUP" + script "../main.nf" + process "BBMAP_PILEUP" + + tag "modules" + tag "modules_nfcore" + tag "bbmap" + tag "bbmap/pileup" + + test("test-bbmap-pileup") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bbmap/pileup/tests/main.nf.test.snap b/modules/nf-core/bbmap/pileup/tests/main.nf.test.snap new file mode 100644 index 00000000000..f5e7e720d02 --- /dev/null +++ b/modules/nf-core/bbmap/pileup/tests/main.nf.test.snap @@ -0,0 +1,55 @@ +{ + "test-bbmap-pileup": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.coverage.stats.txt:md5,c3fc9d0681589b69e3301ca3cb27b7a4" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.coverage.hist.txt:md5,96915920ef42ddc9483457dd4585a088" + ] + ], + "2": [ + "versions.yml:md5,e293e3ed6387ce89f3443050f36fb079" + ], + "covstats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.coverage.stats.txt:md5,c3fc9d0681589b69e3301ca3cb27b7a4" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": false + }, + "test.coverage.hist.txt:md5,96915920ef42ddc9483457dd4585a088" + ] + ], + "versions": [ + "versions.yml:md5,e293e3ed6387ce89f3443050f36fb079" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:33:48.464105" + } +} \ No newline at end of file diff --git a/modules/nf-core/bbmap/sendsketch/environment.yml b/modules/nf-core/bbmap/sendsketch/environment.yml index 55f54f5c60e..dfd8936e11f 100644 --- a/modules/nf-core/bbmap/sendsketch/environment.yml +++ b/modules/nf-core/bbmap/sendsketch/environment.yml @@ -1,7 +1,5 @@ -name: bbmap_sendsketch channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bbmap=39.01 diff --git a/modules/nf-core/bbmap/sendsketch/meta.yml b/modules/nf-core/bbmap/sendsketch/meta.yml index 38a5fb3fe6a..76f3e9472ba 100644 --- a/modules/nf-core/bbmap/sendsketch/meta.yml +++ b/modules/nf-core/bbmap/sendsketch/meta.yml @@ -12,7 +12,7 @@ tools: description: "BBMap is a short read aligner, as well as various other bioinformatic tools." homepage: "https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/" documentation: "https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/" - licence: "['UC-LBL license (see package)']" + licence: ["UC-LBL license (see package)"] input: - meta: type: map @@ -34,7 +34,7 @@ output: description: File containing software versions pattern: "versions.yml" - hits: - type: txt + type: file description: .txt file containing hits from a query seuqnce to various reference sequences output pattern: "*.{txt}" authors: diff --git a/modules/nf-core/bbmap/sendsketch/tests/main.nf.test b/modules/nf-core/bbmap/sendsketch/tests/main.nf.test new file mode 100644 index 00000000000..744feadfcb1 --- /dev/null +++ b/modules/nf-core/bbmap/sendsketch/tests/main.nf.test @@ -0,0 +1,70 @@ + +nextflow_process { + + name "Test Process BBMAP_SENDSKETCH" + script "../main.nf" + process "BBMAP_SENDSKETCH" + + tag "modules" + tag "modules_nfcore" + tag "bbmap" + tag "bbmap/sendsketch" + + test("test-bbmap-sendsketch-single") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.hits[0][1]).readLines()[3..7], + process.out.versions + ).match() + } + ) + } + } + + test("test-bbmap-sendsketch-paired") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.hits[0][1]).readLines()[3..7], + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bbmap/sendsketch/tests/main.nf.test.snap b/modules/nf-core/bbmap/sendsketch/tests/main.nf.test.snap new file mode 100644 index 00000000000..c516ae720ac --- /dev/null +++ b/modules/nf-core/bbmap/sendsketch/tests/main.nf.test.snap @@ -0,0 +1,40 @@ +{ + "test-bbmap-sendsketch-paired": { + "content": [ + [ + "0.52%\t0.14%\t82.66%\t.\t26.68%\t1.03%\t60\t10\t9534\t30656K\t46\tChlorocebus aethiops", + "0.46%\t0.12%\t82.30%\t.\t26.38%\t1.10%\t53\t7\t33548\t30986K\t46\tColobus guereza", + "9.02%\t0.03%\t91.56%\t.\t0.34%\t1.88%\t48\t8\t9606\t2387M\t26130\tHomo sapiens", + "0.30%\t0.08%\t80.90%\t.\t27.42%\t1.23%\t35\t8\t9523\t29749K\t44\tPlecturocebus moloch", + "6.70%\t0.02%\t90.53%\t.\t0.34%\t4.10%\t36\t0\t9595\t2355M\t5730\tGorilla gorilla gorilla" + ], + [ + "versions.yml:md5,694697087b868316aa450d1bc3775373" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:29:22.985067" + }, + "test-bbmap-sendsketch-single": { + "content": [ + [ + "0.66%\t0.53%\t83.30%\t.\t80.66%\t0.56%\t20\t17\t9593\t47555\t9\tGorilla gorilla", + "0.14%\t0.07%\t78.52%\t.\t48.11%\t1.09%\t4\t4\t27679\t78571\t4\tSaimiri boliviensis", + "7.69%\t0.01%\t90.45%\t.\t0.12%\t3.85%\t4\t1\t9534\t30656K\t46\tChlorocebus aethiops", + "0.17%\t0.04%\t79.27%\t.\t23.69%\t1.26%\t3\t1\t67082\t158942\t1\tBeAn 58058 virus", + "5.56%\t0.01%\t89.72%\t.\t0.12%\t5.56%\t3\t0\t9523\t29749K\t44\tPlecturocebus moloch" + ], + [ + "versions.yml:md5,694697087b868316aa450d1bc3775373" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:29:03.529673" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/annotate/environment.yml b/modules/nf-core/bcftools/annotate/environment.yml index 3d4e337992f..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/annotate/environment.yml +++ b/modules/nf-core/bcftools/annotate/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_annotate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/annotate/main.nf b/modules/nf-core/bcftools/annotate/main.nf index f73111bb789..c3b8b19652c 100644 --- a/modules/nf-core/bcftools/annotate/main.nf +++ b/modules/nf-core/bcftools/annotate/main.nf @@ -8,9 +8,7 @@ process BCFTOOLS_ANNOTATE { 'biocontainers/bcftools:1.20--h8b25389_0' }" input: - tuple val(meta), path(input), path(index) - path(annotations) - path(annotations_index) + tuple val(meta), path(input), path(index), path(annotations), path(annotations_index) path(header_lines) output: diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test b/modules/nf-core/bcftools/annotate/tests/main.nf.test index 8cd87abc5b8..3a5c493314f 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test @@ -9,20 +9,21 @@ nextflow_process { tag "bcftools" tag "bcftools/annotate" - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_output") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output") { config "./vcf.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -39,20 +40,21 @@ nextflow_process { } - test("sarscov2 - [vcf, []] annotation, annotation_tbi, [] - vcf_output") { + test("sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output") { config "./vcf.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - []] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -68,20 +70,21 @@ nextflow_process { } } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index") { config "./vcf_gz_index.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -101,20 +104,21 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_csi") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi") { config "./vcf_gz_index_csi.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -134,20 +138,21 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_tbi") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi") { config "./vcf_gz_index_tbi.config" when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -166,20 +171,21 @@ nextflow_process { } } - test("sarscov2 - [vcf, []], annotation, annotation_tbi, header - bcf_output") { + test("sarscov2 - [vcf, [], annotation, annotation_tbi], header - bcf_output") { config "./bcf.config" when { process { """ - input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - []]) - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = Channel.of( + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = Channel.of( '##INFO=', '##INFO=' ).collectFile(name:"headers.vcf", newLine:true) @@ -199,7 +205,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub") { config "./vcf.config" options "-stub" @@ -207,13 +213,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -227,7 +234,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub") { config "./vcf_gz_index.config" options "-stub" @@ -235,13 +242,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -256,7 +264,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_csi - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub") { config "./vcf_gz_index_csi.config" options "-stub" @@ -264,13 +272,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } @@ -285,7 +294,7 @@ nextflow_process { } - test("sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_tbi - stub") { + test("sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub") { config "./vcf_gz_index_tbi.config" options "-stub" @@ -293,13 +302,14 @@ nextflow_process { when { process { """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true)] - - input[1] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true) - input[3] = [] + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] """ } } diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap index 8fd8d11dccf..bac2224a3b5 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap @@ -1,38 +1,5 @@ { - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_tbi": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi" - ] - ], - [ - - ], - [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-12T16:39:23.802873" - }, - "sarscov2 - [vcf, []] annotation, annotation_tbi, [] - vcf_output": { + "bcf": { "content": [ [ [ @@ -40,7 +7,7 @@ "id": "test", "single_end": false }, - "test_vcf.vcf.gz" + "test_ann.bcf" ] ], [ @@ -51,9 +18,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:38:57.039285" + "timestamp": "2024-06-12T16:39:33.331888" }, - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index_csi": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index": { "content": [ [ [ @@ -84,9 +51,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:15.152697" + "timestamp": "2024-08-15T10:07:59.658031137" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi - stub": { "content": [ { "0": [ @@ -102,13 +69,25 @@ ], "2": [ - + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "3": [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ], "csi": [ - + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "tbi": [ @@ -131,9 +110,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:41.994785" + "timestamp": "2024-08-15T10:09:05.096883418" }, - "bcf": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_csi": { "content": [ [ [ @@ -141,7 +120,19 @@ "id": "test", "single_end": false }, - "test_ann.bcf" + "test_vcf.vcf.gz" + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" ] ], [ @@ -152,9 +143,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:33.331888" + "timestamp": "2024-08-15T10:08:10.581301219" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_tbi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - stub": { "content": [ { "0": [ @@ -167,13 +158,7 @@ ] ], "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "2": [ @@ -185,13 +170,7 @@ ], "tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "vcf": [ [ @@ -211,9 +190,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:40:13.835994" + "timestamp": "2024-08-15T10:08:43.975017625" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_output": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi": { "content": [ [ [ @@ -223,6 +202,18 @@ }, "test_vcf.vcf.gz" ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi" + ] + ], + [ + ], [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" @@ -232,9 +223,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:38:48.368629" + "timestamp": "2024-08-15T10:08:21.354059092" }, - "sarscov2 - [vcf, tbi], annotation, annotation_tbi, [] - vcf_gz_index": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_output": { "content": [ [ [ @@ -246,15 +237,24 @@ ] ], [ - - ], + "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-08-15T10:07:37.788393317" + }, + "sarscov2 - [vcf, [], annotation, annotation_tbi], [] - vcf_output": { + "content": [ [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi" + "test_vcf.vcf.gz" ] ], [ @@ -265,9 +265,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:05.608108" + "timestamp": "2024-08-15T10:07:48.500746325" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index_tbi - stub": { "content": [ { "0": [ @@ -280,31 +280,31 @@ ] ], "1": [ - - ], - "2": [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "2": [ + ], "3": [ "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" ], "csi": [ + + ], + "tbi": [ [ { "id": "test", "single_end": false }, - "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "tbi": [ - ], "vcf": [ [ @@ -324,9 +324,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:39:54.842082" + "timestamp": "2024-08-15T10:09:16.094918834" }, - "sarscov2 - [vcf, tbi] annotation, annotation_tbi, [] - vcf_gz_index_csi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [] - vcf_gz_index - stub": { "content": [ { "0": [ @@ -383,6 +383,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-12T16:40:04.074052" + "timestamp": "2024-08-15T10:08:54.366358502" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/call/environment.yml b/modules/nf-core/bcftools/call/environment.yml index 84c4cef4e1c..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/call/environment.yml +++ b/modules/nf-core/bcftools/call/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_call channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/call/tests/main.nf.test b/modules/nf-core/bcftools/call/tests/main.nf.test index fa766424d56..31c86efc046 100644 --- a/modules/nf-core/bcftools/call/tests/main.nf.test +++ b/modules/nf-core/bcftools/call/tests/main.nf.test @@ -19,8 +19,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -50,8 +50,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -84,8 +84,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -118,8 +118,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -152,11 +152,11 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['illumina']['test3_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_targets_tsv_gz'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.targets.tsv.gz', checkIfExists: true) input[3] = [] """ } @@ -184,8 +184,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -216,8 +216,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -246,8 +246,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -276,8 +276,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] diff --git a/modules/nf-core/bcftools/concat/environment.yml b/modules/nf-core/bcftools/concat/environment.yml index 6544e949c85..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/concat/environment.yml +++ b/modules/nf-core/bcftools/concat/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_concat channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/concat/tests/main.nf.test b/modules/nf-core/bcftools/concat/tests/main.nf.test index b42d065e6bb..cea386e3bd3 100644 --- a/modules/nf-core/bcftools/concat/tests/main.nf.test +++ b/modules/nf-core/bcftools/concat/tests/main.nf.test @@ -20,12 +20,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ @@ -51,12 +51,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ @@ -88,12 +88,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ @@ -125,12 +125,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ @@ -163,8 +163,8 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [] ] @@ -192,12 +192,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ @@ -224,12 +224,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ @@ -257,12 +257,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ @@ -290,12 +290,12 @@ nextflow_process { input[0] = [ [ id:'test3' ], // meta map [ - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) ], [ - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true) ] ] """ diff --git a/modules/nf-core/bcftools/consensus/environment.yml b/modules/nf-core/bcftools/consensus/environment.yml index def3fc14ab9..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/consensus/environment.yml +++ b/modules/nf-core/bcftools/consensus/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_consensus channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/consensus/main.nf b/modules/nf-core/bcftools/consensus/main.nf index 646e208b1b5..0e693e1dfa2 100644 --- a/modules/nf-core/bcftools/consensus/main.nf +++ b/modules/nf-core/bcftools/consensus/main.nf @@ -8,7 +8,7 @@ process BCFTOOLS_CONSENSUS { 'biocontainers/bcftools:1.20--h8b25389_0' }" input: - tuple val(meta), path(vcf), path(tbi), path(fasta) + tuple val(meta), path(vcf), path(tbi), path(fasta), path(mask) output: tuple val(meta), path('*.fa'), emit: fasta @@ -20,12 +20,14 @@ process BCFTOOLS_CONSENSUS { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def masking = mask ? "-m $mask" : "" """ cat $fasta \\ | bcftools \\ consensus \\ $vcf \\ $args \\ + $masking \\ > ${prefix}.fa cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/bcftools/consensus/meta.yml b/modules/nf-core/bcftools/consensus/meta.yml index 3b43c808812..5fd8567171f 100644 --- a/modules/nf-core/bcftools/consensus/meta.yml +++ b/modules/nf-core/bcftools/consensus/meta.yml @@ -30,6 +30,10 @@ input: type: file description: FASTA reference file pattern: "*.{fasta,fa}" + - mask: + type: file + description: BED file used for masking + pattern: "*.{bed}" output: - meta: type: map diff --git a/modules/nf-core/bcftools/consensus/tests/main.nf.test b/modules/nf-core/bcftools/consensus/tests/main.nf.test new file mode 100644 index 00000000000..567c78bc65c --- /dev/null +++ b/modules/nf-core/bcftools/consensus/tests/main.nf.test @@ -0,0 +1,90 @@ +nextflow_process { + + name "Test Process BCFTOOLS_CONSENSUS" + script "../main.nf" + process "BCFTOOLS_CONSENSUS" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/consensus" + + test("bcftools - test") { + + tag "bcftools_consensus" + + when { + process{ + """ + input[0] = [ + [ id:'test'], + file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcftools - test - no mask") { + + tag "bcftools_consensus" + + when { + process{ + """ + input[0] = [ + [ id:'test'], + file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("bcftools - stub - test") { + + tag "stub" + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true), + file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match()} + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/consensus/tests/main.nf.test.snap b/modules/nf-core/bcftools/consensus/tests/main.nf.test.snap new file mode 100644 index 00000000000..7244bbea08a --- /dev/null +++ b/modules/nf-core/bcftools/consensus/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "bcftools - stub - test": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fa:md5,313f4a657187fdaf293c4ed69d98c112" + ] + ], + "1": [ + "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + ], + "fasta": [ + [ + { + "id": "test" + }, + "test.fa:md5,313f4a657187fdaf293c4ed69d98c112" + ] + ], + "versions": [ + "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.1" + }, + "timestamp": "2024-08-20T13:56:14.553364445" + }, + "bcftools - test": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fa:md5,313f4a657187fdaf293c4ed69d98c112" + ] + ], + "1": [ + "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + ], + "fasta": [ + [ + { + "id": "test" + }, + "test.fa:md5,313f4a657187fdaf293c4ed69d98c112" + ] + ], + "versions": [ + "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.1" + }, + "timestamp": "2024-08-20T13:56:00.789333465" + }, + "bcftools - test - no mask": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fa:md5,e57d3e4d113f989bc069c5fd61627091" + ] + ], + "1": [ + "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + ], + "fasta": [ + [ + { + "id": "test" + }, + "test.fa:md5,e57d3e4d113f989bc069c5fd61627091" + ] + ], + "versions": [ + "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.04.1" + }, + "timestamp": "2024-08-20T13:56:07.531646148" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/convert/environment.yml b/modules/nf-core/bcftools/convert/environment.yml index 3d85cb2c335..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/convert/environment.yml +++ b/modules/nf-core/bcftools/convert/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_convert channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/csq/environment.yml b/modules/nf-core/bcftools/csq/environment.yml new file mode 100644 index 00000000000..20fc663a5e3 --- /dev/null +++ b/modules/nf-core/bcftools/csq/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::bcftools=1.20" diff --git a/modules/nf-core/bcftools/csq/main.nf b/modules/nf-core/bcftools/csq/main.nf new file mode 100644 index 00000000000..38a348cda8a --- /dev/null +++ b/modules/nf-core/bcftools/csq/main.nf @@ -0,0 +1,81 @@ + +process BCFTOOLS_CSQ { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_1': + 'biocontainers/bcftools:1.20--h8b25389_1' }" + + + input: + tuple val(meta), path(vcf) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + tuple val(meta4), path(gff3) + + output: + tuple val(meta), path("*.${extension}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + extension = getVcfExtension(args); + + if ("$vcf" == "${prefix}.${extension}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ + bcftools csq \\ + --output ${prefix}.${extension} \\ + --threads ${task.cpus} \\ + --fasta-ref ${fasta} \\ + --gff-annot ${gff3} \\ + $args \\ + $vcf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + extension = getVcfExtension(args); + + def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + + if ("$vcf" == "${prefix}.${extension}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ + ${create_cmd} ${prefix}.${extension} + ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ +} +// Custom Functions +String getVcfExtension(String args) { + return args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : + args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf"; +} diff --git a/modules/nf-core/bcftools/csq/meta.yml b/modules/nf-core/bcftools/csq/meta.yml new file mode 100644 index 00000000000..a45d007c300 --- /dev/null +++ b/modules/nf-core/bcftools/csq/meta.yml @@ -0,0 +1,81 @@ +name: bcftools_csq +description: bcftools Haplotype-aware consequence caller +keywords: + - annotation + - gff + - gff3 + - protein + - functional + - vcf + - bcf + - bcftools +tools: + - reheader: + description: | + Haplotype-aware consequence caller + homepage: http://samtools.github.io/bcftools/bcftools.html + documentation: http://samtools.github.io/bcftools/bcftools.html#csq + doi: 10.1093/gigascience/giab008 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF/BCF file + pattern: "*.{vcf.gz,vcf,bcf}" + - meta2: + type: map + description: | + Groovy Map containing fasta information + - fasta: + type: file + description: Fasta reference + pattern: "*.{fasta,fa}" + - meta3: + type: map + description: | + Groovy Map containing fai information + - fai: + type: file + description: Fasta index + pattern: "*.{fai}" + - meta4: + type: map + description: | + Groovy Map containing gff3 information + - gff3: + type: file + description: GFF3 file + pattern: "*.{gff,gff.gz,gff3,gff3.gz}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF with annotation, bgzipped per default + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - tbi: + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - csi: + type: file + description: Default VCF file index + pattern: "*.csi" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@lindenb" + +maintainers: + - "@lindenb" diff --git a/modules/nf-core/bcftools/csq/tests/main.nf.test b/modules/nf-core/bcftools/csq/tests/main.nf.test new file mode 100644 index 00000000000..7eafc6caa69 --- /dev/null +++ b/modules/nf-core/bcftools/csq/tests/main.nf.test @@ -0,0 +1,51 @@ +nextflow_process { + + name "Test Process BCFTOOLS_CSQ" + script "../main.nf" + process "BCFTOOLS_CSQ" + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/csq" + + test("homo_sapiens") { + + config "./vcf.config" + when { + + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz', checkIfExists: true) + ] + input[1] = [ + [ : ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ : ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [ : ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gff3', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.versions + ).match() + } + ) + } + + } + +} diff --git a/modules/nf-core/bcftools/csq/tests/main.nf.test.snap b/modules/nf-core/bcftools/csq/tests/main.nf.test.snap new file mode 100644 index 00000000000..8997e0dec82 --- /dev/null +++ b/modules/nf-core/bcftools/csq/tests/main.nf.test.snap @@ -0,0 +1,15 @@ +{ + "homo_sapiens": { + "content": [ + "807319f441f639c33708781757da53ee", + [ + "versions.yml:md5,13a1a38a47f60c47fd15a32552492bbf" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T16:02:00.380988135" + } +} diff --git a/modules/nf-core/bcftools/csq/tests/tags.yml b/modules/nf-core/bcftools/csq/tests/tags.yml new file mode 100644 index 00000000000..5584914b9a0 --- /dev/null +++ b/modules/nf-core/bcftools/csq/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/csq: + - "modules/nf-core/bcftools/csq/**" diff --git a/modules/nf-core/bcftools/csq/tests/vcf.config b/modules/nf-core/bcftools/csq/tests/vcf.config new file mode 100644 index 00000000000..08f772b15ae --- /dev/null +++ b/modules/nf-core/bcftools/csq/tests/vcf.config @@ -0,0 +1,4 @@ +process { + ext.args = { "--local-csq --ncsq 20 --unify-chr-names 1 -Ov " } + ext.prefix = "tested" +} diff --git a/modules/nf-core/bcftools/filter/environment.yml b/modules/nf-core/bcftools/filter/environment.yml index 854de139c24..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/filter/environment.yml +++ b/modules/nf-core/bcftools/filter/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_filter channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/index/environment.yml b/modules/nf-core/bcftools/index/environment.yml index ea752646fc9..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/index/environment.yml +++ b/modules/nf-core/bcftools/index/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/isec/environment.yml b/modules/nf-core/bcftools/isec/environment.yml index 01bdcff9703..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/isec/environment.yml +++ b/modules/nf-core/bcftools/isec/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_isec channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/isec/main.nf b/modules/nf-core/bcftools/isec/main.nf index 01d0195845b..80d18721b72 100644 --- a/modules/nf-core/bcftools/isec/main.nf +++ b/modules/nf-core/bcftools/isec/main.nf @@ -11,8 +11,8 @@ process BCFTOOLS_ISEC { tuple val(meta), path(vcfs), path(tbis) output: - tuple val(meta), path("${prefix}"), emit: results - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}", type: "dir"), emit: results + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -24,7 +24,25 @@ process BCFTOOLS_ISEC { bcftools isec \\ $args \\ -p $prefix \\ - *.vcf.gz + ${vcfs} + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir ${prefix} + touch ${prefix}/README.txt + touch ${prefix}/sites.txt + echo "" | gzip > ${prefix}/0000.vcf.gz + touch ${prefix}/0000.vcf.gz.tbi + echo "" | gzip > ${prefix}/0001.vcf.gz + touch ${prefix}/0001.vcf.gz.tbi + cat <<-END_VERSIONS > versions.yml "${task.process}": bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') diff --git a/modules/nf-core/bcftools/isec/meta.yml b/modules/nf-core/bcftools/isec/meta.yml index 94f4256afbb..7da88e19b7b 100644 --- a/modules/nf-core/bcftools/isec/meta.yml +++ b/modules/nf-core/bcftools/isec/meta.yml @@ -6,6 +6,7 @@ keywords: - union - complement - VCF + - BCF tools: - isec: description: | @@ -23,12 +24,12 @@ input: - vcfs: type: list description: | - List containing 2 or more vcf files - e.g. [ 'file1.vcf', 'file2.vcf' ] + List containing 2 or more vcf/bcf files. These must be compressed and have an associated index. + e.g. [ 'file1.vcf.gz', 'file2.vcf' ] - tbis: type: list description: | - List containing the tbi index files corresponding to the vcfs input files + List containing the tbi index files corresponding to the vcf/bcf input files e.g. [ 'file1.vcf.tbi', 'file2.vcf.tbi' ] output: - meta: diff --git a/modules/nf-core/bcftools/isec/tests/main.nf.test b/modules/nf-core/bcftools/isec/tests/main.nf.test index cc3e6c6f037..ca8fc6e32eb 100644 --- a/modules/nf-core/bcftools/isec/tests/main.nf.test +++ b/modules/nf-core/bcftools/isec/tests/main.nf.test @@ -11,7 +11,7 @@ nextflow_process { config "./nextflow.config" - test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]]") { + test("sarscov2 - [[vcf1.gz, vcf2.gz], [tbi1, tbi2]]") { when { process { @@ -19,23 +19,61 @@ nextflow_process { input[0] = [ [ id:'test' ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true)], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ], [ - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true)] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] ] """ } } then { + def results_dir = new File(process.out.results[0][1]) + def results_list = [] + results_dir.eachFileRecurse { file -> results_list << file.getName() } assertAll( { assert process.success }, { assert snapshot( - process.out.results.collect { it.collect { it instanceof Map ? it : file(it).name } }, - process.out.versions - ).match() } + process.out.versions, + results_list.sort(), + path("${process.out.results[0][1]}").list().findAll { + it.getFileName().toString() != "0000.vcf.gz.tbi" && it.getFileName().toString() != "0001.vcf.gz.tbi" + } + ).match() + } + ) + } + + } + + test("sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/bcftools/isec/tests/main.nf.test.snap b/modules/nf-core/bcftools/isec/tests/main.nf.test.snap index 3e6afdd9686..817ca2dc9ab 100644 --- a/modules/nf-core/bcftools/isec/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/isec/tests/main.nf.test.snap @@ -1,22 +1,75 @@ { - "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]]": { + "sarscov2 - [[vcf1.gz, vcf2.gz], [tbi1, tbi2]]": { "content": [ [ - [ - { - "id": "test" - }, - "test" - ] + "versions.yml:md5,c5b5a1204cf56fec79d17e1913eaca27" ], [ - "versions.yml:md5,c5b5a1204cf56fec79d17e1913eaca27" + "0000.vcf.gz", + "0000.vcf.gz.tbi", + "0001.vcf.gz", + "0001.vcf.gz.tbi", + "README.txt", + "sites.txt" + ], + [ + "0000.vcf.gz:md5,8e722884ffb75155212a3fc053918766", + "0001.vcf.gz:md5,b39a72f91458b94b346dd73690207649", + "README.txt:md5,10fc33b66522645600d44afbd41fb792", + "sites.txt:md5,1cea3fbde7f6d3c97f3d39036f9690df" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:43:55.820868944" + "timestamp": "2024-07-03T16:32:18.167072863" + }, + "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "0000.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "0000.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e", + "0001.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "0001.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e", + "README.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sites.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,c5b5a1204cf56fec79d17e1913eaca27" + ], + "results": [ + [ + { + "id": "test" + }, + [ + "0000.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "0000.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e", + "0001.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "0001.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e", + "README.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sites.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,c5b5a1204cf56fec79d17e1913eaca27" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-03T09:45:52.881120953" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/merge/environment.yml b/modules/nf-core/bcftools/merge/environment.yml index 51f1fb751b8..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/merge/environment.yml +++ b/modules/nf-core/bcftools/merge/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/merge/main.nf b/modules/nf-core/bcftools/merge/main.nf index 41dc1a0d5b4..facb14ea131 100644 --- a/modules/nf-core/bcftools/merge/main.nf +++ b/modules/nf-core/bcftools/merge/main.nf @@ -11,19 +11,21 @@ process BCFTOOLS_MERGE { tuple val(meta), path(vcfs), path(tbis) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) - path(bed) + tuple val(meta4), path(bed) output: - tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: merged_variants + tuple val(meta), path("*.{bcf,vcf}{,.gz}"), emit: vcf + tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input = (vcfs.collect().size() > 1) ? vcfs.sort{ it.name } : vcfs def regions = bed ? "--regions-file $bed" : "" def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : @@ -37,7 +39,7 @@ process BCFTOOLS_MERGE { $regions \\ --threads $task.cpus \\ --output ${prefix}.${extension} \\ - $vcfs + $input cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -53,8 +55,16 @@ process BCFTOOLS_MERGE { args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" + def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + """ - touch ${prefix}.${extension} + ${create_cmd} ${prefix}.${extension} + ${create_index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bcftools/merge/meta.yml b/modules/nf-core/bcftools/merge/meta.yml index 87707140192..2caf644e3a3 100644 --- a/modules/nf-core/bcftools/merge/meta.yml +++ b/modules/nf-core/bcftools/merge/meta.yml @@ -46,6 +46,11 @@ input: type: file description: "(Optional) The fasta reference file index (only necessary for the `--gvcf FILE` parameter)" pattern: "*.fai" + - meta4: + type: map + description: | + Groovy Map containing bed information + e.g. [ id:'genome' ] - bed: type: file description: "(Optional) The bed regions to merge on" @@ -56,22 +61,14 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - vcf_gz: - type: file - description: VCF merged output file (bgzipped) => when `--output-type z` is used - pattern: "*.vcf.gz" - vcf: type: file - description: VCF merged output file => when `--output-type v` is used - pattern: "*.vcf" - - bcf_gz: - type: file - description: BCF merged output file (bgzipped) => when `--output-type b` is used - pattern: "*.bcf.gz" - - bcf: + description: merged output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - index: type: file - description: BCF merged output file => when `--output-type u` is used - pattern: "*.bcf" + description: index of merged output + pattern: "*.{csi,tbi}" - versions: type: file description: File containing software versions diff --git a/modules/nf-core/bcftools/merge/tests/bcf.config b/modules/nf-core/bcftools/merge/tests/bcf.config new file mode 100644 index 00000000000..4467d07d96a --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/bcf.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type u --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/bcf_gz.config b/modules/nf-core/bcftools/merge/tests/bcf_gz.config new file mode 100644 index 00000000000..280de8db094 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/bcf_gz.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type b --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/main.nf.test b/modules/nf-core/bcftools/merge/tests/main.nf.test new file mode 100644 index 00000000000..3995fc1a91b --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/main.nf.test @@ -0,0 +1,853 @@ +nextflow_process { + + name "Test Process BCFTOOLS_MERGE" + script "../main.nf" + process "BCFTOOLS_MERGE" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/merge" + + test("sarscov2 - [vcf, tbi], [], [], []") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf output") { + + config "./vcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).md5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output") { + + config "./vcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf output") { + + config "./bcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf") }, + { assert snapshot( + file(process.out.vcf.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output") { + + config "./bcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf.gz") }, + { assert snapshot( + file(process.out.vcf.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index") { + + config "./vcf_gz_index.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(process.out.index.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index") { + + config "./vcf_gz_index_csi.config" + + when { + + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(process.out.index.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index") { + + config "./vcf_gz_index_tbi.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("tbi") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + file(process.out.index.get(0).get(1)).name, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], bed") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).md5, + process.out.versions, + ).match() } + ) + } + + } + + test("homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output") { + + config "./nextflow.gvcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ] + input[2] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + ] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - one sample") { + + config "./nextflow.config" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot( + path(process.out.vcf.get(0).get(1)).md5, + process.out.versions, + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf output - stub") { + + options "-stub" + config "./vcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - stub") { + + options "-stub" + config "./vcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf output - stub") { + + options "-stub" + config "./bcf.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output - stub") { + + options "-stub" + config "./bcf_gz.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("bcf.gz") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index - stub") { + + options "-stub" + config "./vcf_gz_index.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index - stub") { + + options "-stub" + config "./vcf_gz_index_csi.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("csi") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index - stub") { + + options "-stub" + config "./vcf_gz_index_tbi.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert process.out.index.get(0).get(1).endsWith("tbi") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], bed - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output - stub") { + + options "-stub" + config "./nextflow.gvcf.config" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test2.genome.vcf.gz.tbi', checkIfExists: true), + ] + ] + input[1] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + ] + input[2] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + ] + input[3] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf.gz") }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - one sample - stub") { + + options "-stub" + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ] + ] + input[1] = [[],[]] + input[2] = [[],[]] + input[3] = [[],[]] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.vcf.get(0).get(1).endsWith("vcf") }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/bcftools/merge/tests/main.nf.test.snap b/modules/nf-core/bcftools/merge/tests/main.nf.test.snap new file mode 100644 index 00000000000..b3b62556313 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/main.nf.test.snap @@ -0,0 +1,607 @@ +{ + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + "test.vcf.gz.tbi", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T12:34:16.977726522" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:34.532910365" + }, + "sarscov2 - [vcf, tbi], [], [], bed": { + "content": [ + "febdcfb851dcfc83d8248520830aef10", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:29:48.630057872" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:59.983157569" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf output": { + "content": [ + "57bb84274f336465d0a0946b532093b0", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:29:05.528412678" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.bcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:58:46.619657457" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:18:12.848227353" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:23:15.794389239" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + "test.vcf.gz.csi", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:57:16.850641473" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:56:27.949031071" + }, + "sarscov2 - [vcf, tbi], [], [], bed - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:18:19.273064822" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf output": { + "content": [ + "test.bcf", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:56:38.567500859" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.bcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:47.356328326" + }, + "sarscov2 - [vcf, tbi], [], [], [] - one sample - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T15:13:18.708495878" + }, + "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:56:45.706125286" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + "test.vcf.gz.csi", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T12:33:43.639646108" + }, + "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output": { + "content": [ + "645b7f7f9131bfe350a9ec3cf82c17fe", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:55:44.299812124" + }, + "sarscov2 - [vcf, tbi], [], [], [] - one sample": { + "content": [ + "2a374cf02f0c32cf607646167e7f153b", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T15:37:38.491844702" + }, + "sarscov2 - [vcf, tbi], [], [], [] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:17:28.188178904" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ], + "index": [ + [ + { + "id": "test" + }, + "test.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T13:18:06.430943593" + }, + "sarscov2 - [vcf, tbi], [], [], []": { + "content": [ + "e0de448dc8e712956a03ce68d79a0b3a", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T12:31:03.893007442" + }, + "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output": { + "content": [ + "test.bcf.gz", + [ + "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-05T11:56:56.416361069" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/merge/tests/nextflow.config b/modules/nf-core/bcftools/merge/tests/nextflow.config new file mode 100644 index 00000000000..c3f0b715995 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: BCFTOOLS_MERGE { + ext.args = '--force-samples --force-single --no-version' + } +} diff --git a/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config b/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config new file mode 100644 index 00000000000..8c457b716db --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/nextflow.gvcf.config @@ -0,0 +1,5 @@ +process { + withName: BCFTOOLS_MERGE { + ext.args = { "--force-samples --no-version --output-type z --gvcf $fasta" } + } +} diff --git a/modules/nf-core/bcftools/merge/tests/tags.yml b/modules/nf-core/bcftools/merge/tests/tags.yml new file mode 100644 index 00000000000..1464d0c1c30 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/merge: + - "modules/nf-core/bcftools/merge/**" diff --git a/modules/nf-core/bcftools/merge/tests/vcf.config b/modules/nf-core/bcftools/merge/tests/vcf.config new file mode 100644 index 00000000000..759222e58ca --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type v --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz.config b/modules/nf-core/bcftools/merge/tests/vcf_gz.config new file mode 100644 index 00000000000..8b6ad8b4fdc --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz.config @@ -0,0 +1,3 @@ +process { + ext.args = '--output-type z --no-version' +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config new file mode 100644 index 00000000000..9f1e9b1d8f2 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz_index.config @@ -0,0 +1,3 @@ +process { + ext.args = "--output-type z --write-index --no-version" +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config new file mode 100644 index 00000000000..8308ee1aed4 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_csi.config @@ -0,0 +1,3 @@ +process { + ext.args = "--output-type z --write-index=csi --no-version" +} diff --git a/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config new file mode 100644 index 00000000000..9be4075bc17 --- /dev/null +++ b/modules/nf-core/bcftools/merge/tests/vcf_gz_index_tbi.config @@ -0,0 +1,3 @@ +process { + ext.args = "--output-type z --write-index=tbi --no-version" +} diff --git a/modules/nf-core/bcftools/mpileup/environment.yml b/modules/nf-core/bcftools/mpileup/environment.yml index 7e479383ba7..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/mpileup/environment.yml +++ b/modules/nf-core/bcftools/mpileup/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_mpileup channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/mpileup/tests/main.nf.test b/modules/nf-core/bcftools/mpileup/tests/main.nf.test index dc35c542666..665a349fc8a 100644 --- a/modules/nf-core/bcftools/mpileup/tests/main.nf.test +++ b/modules/nf-core/bcftools/mpileup/tests/main.nf.test @@ -18,12 +18,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), [] ] input[1] = [ [ id:'sarscov2' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = false """ @@ -51,12 +51,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), [] ] input[1] = [ [ id:'sarscov2' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = false """ @@ -82,12 +82,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), [] ] input[1] = [ [ id:'sarscov2' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = true """ @@ -116,12 +116,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), [] ] input[1] = [ [ id:'sarscov2' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = true """ @@ -148,12 +148,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] input[1] = [ [ id:'sarscov2' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = false """ @@ -181,12 +181,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] input[1] = [ [ id:'sarscov2' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[2] = false """ diff --git a/modules/nf-core/bcftools/norm/environment.yml b/modules/nf-core/bcftools/norm/environment.yml index 0c7dfa8f6c2..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/norm/environment.yml +++ b/modules/nf-core/bcftools/norm/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_norm channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/norm/main.nf b/modules/nf-core/bcftools/norm/main.nf index 976582670bd..bd7a2501278 100644 --- a/modules/nf-core/bcftools/norm/main.nf +++ b/modules/nf-core/bcftools/norm/main.nf @@ -32,7 +32,7 @@ process BCFTOOLS_NORM { """ bcftools norm \\ --fasta-ref ${fasta} \\ - --output ${prefix}.${extension}\\ + --output ${prefix}.${extension} \\ $args \\ --threads $task.cpus \\ ${vcf} diff --git a/modules/nf-core/bcftools/pluginimputeinfo/environment.yml b/modules/nf-core/bcftools/pluginimputeinfo/environment.yml new file mode 100644 index 00000000000..bfd03513359 --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::bcftools=1.20" diff --git a/modules/nf-core/bcftools/pluginimputeinfo/main.nf b/modules/nf-core/bcftools/pluginimputeinfo/main.nf new file mode 100644 index 00000000000..395c60ada5f --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/main.nf @@ -0,0 +1,76 @@ +process BCFTOOLS_PLUGINIMPUTEINFO { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_1': + 'biocontainers/bcftools:1.20--h8b25389_1' }" + + input: + tuple val(meta), path(vcf), path(index) + path(regions) + path(targets) + + output: + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def regions_file = regions ? "--regions-file ${regions}" : "" + def targets_file = targets ? "--targets-file ${targets}" : "" + def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : + args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf" + """ + bcftools plugin impute-info \\ + --output ${prefix}.${extension} \\ + ${regions_file} \\ + ${targets_file} \\ + $args \\ + --threads $task.cpus \\ + ${vcf} \\ + -- \\ + $args2 + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : + args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf" + def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + + """ + ${create_cmd} ${prefix}.${extension} + ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/bcftools/pluginimputeinfo/meta.yml b/modules/nf-core/bcftools/pluginimputeinfo/meta.yml new file mode 100644 index 00000000000..d944dae7817 --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/meta.yml @@ -0,0 +1,81 @@ +--- +name: "bcftools_pluginimputeinfo" +description: Adds imputation information metrics to the INFO field based on selected FORMAT tags. Only the IMPUTE2 INFO metric from FORMAT/GP tags is currently available. +keywords: + - impute-info + - bcftools + - imputation + - metrics + - tags + - vcf +tools: + - "bcftools": + description: "BCFtools is a set of utilities that manipulate variant calls in the Variant Call Format (VCF) and its binary counterpart BCF. All commands work transparently with both VCFs and BCFs, both uncompressed and BGZF-compressed. Most commands accept VCF, bgzipped VCF and BCF with filetype detected automatically even when streaming from a pipe. Indexed VCF and BCF will work in all situations. Un-indexed VCF and BCF and streams will work in most, but not all situations." + homepage: "https://samtools.github.io/bcftools/howtos/index.html" + documentation: "https://samtools.github.io/bcftools/bcftools.html" + tool_dev_url: "https://github.com/samtools/bcftools" + doi: "10.1093/bioinformatics/btp352" + licence: ["MIT"] + args_id: "$args" + - "bcftools plugin impute-info": + description: "Bcftools plugins are tools that can be used with bcftools to manipulate variant calls in Variant Call Format (VCF) and BCF. The impute-info plugin adds imputation information metrics to the INFO field based on selected FORMAT tags. Only the IMPUTE2 INFO metric from FORMAT/GP tags is currently available" + homepage: "https://samtools.github.io/bcftools/howtos/plugins.html" + documentation: "https://samtools.github.io/bcftools/bcftools.html#plugin" + tool_dev_url: "https://github.com/samtools/bcftools" + doi: "10.1093/bioinformatics/btp352" + licence: ["MIT"] + args_id: "$args2" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be inspected. + e.g. 'file.vcf' + - index: + type: file + description: | + The tab index for the VCF file to be inspected. + e.g. 'file.tbi' + - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + e.g. 'file.vcf' + - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + e.g. 'file.vcf' +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF output file containing added INFO/INFO field + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - csi: + type: file + description: Default VCF file index + pattern: "*.csi" + - tbi: + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@eweizy" +maintainers: + - "@eweizy" diff --git a/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test b/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test new file mode 100644 index 00000000000..b150b12c7cb --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test @@ -0,0 +1,406 @@ +nextflow_process { + + name "Test Process BCFTOOLS_PLUGINIMPUTEINFO" + script "../main.nf" + process "BCFTOOLS_PLUGINIMPUTEINFO" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/pluginimputeinfo" + tag "bcftools/plugintag2tag" + + test("sarscov2 - [vcf, tbi], [], []") { + + config "./nextflow.config" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.versions + ).match() } + ) + } + + } + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index") { + + config "./vcf_gz_index.config" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi") { + + config "./vcf_gz_index_csi.config" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi") { + + config "./vcf_gz_index_tbi.config" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.tbi[0][1].endsWith(".tbi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], vcf, tsv, []") { + + config "./nextflow.config" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - stub") { + + config "./nextflow.config" + options "-stub" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.vcf[0][1]).name, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub") { + + config "./vcf_gz_index.config" + options "-stub" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi - stub") { + + config "./vcf_gz_index_csi.config" + options "-stub" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub") { + + config "./vcf_gz_index_tbi.config" + options "-stub" + + setup { + run("BCFTOOLS_PLUGINTAG2TAG") { + script "../../plugintag2tag/main.nf" + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + } + + when { + process { + """ + input[0] = BCFTOOLS_PLUGINTAG2TAG.out.vcf.join(BCFTOOLS_PLUGINTAG2TAG.out.tbi) + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.tbi[0][1].endsWith(".tbi") } + ) + } + + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap b/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap new file mode 100644 index 00000000000..8e3b4e95389 --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap @@ -0,0 +1,333 @@ +{ + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ], + "csi": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:42:24.860002123" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,d5f57785c1e1496196ee62b72fbd3852" + ] + ], + [ + + ], + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.tbi" + ] + ], + [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:41:28.801236995" + }, + "sarscov2 - [vcf, tbi], [], []": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf:md5,d5f57785c1e1496196ee62b72fbd3852" + ] + ], + [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:25:19.761202429" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ], + "csi": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:42:05.180443538" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ], + "csi": [ + + ], + "tbi": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:42:49.144650301" + }, + "sarscov2 - [vcf, tbi], vcf, tsv, []": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf:md5,d5f57785c1e1496196ee62b72fbd3852" + ] + ], + [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:41:40.973896543" + }, + "sarscov2 - [vcf, tbi], [], [], [] - stub": { + "content": [ + "out_vcf.vcf", + [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:41:53.257327022" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,d5f57785c1e1496196ee62b72fbd3852" + ] + ], + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi" + ] + ], + [ + + ], + [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:41:05.386430406" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,d5f57785c1e1496196ee62b72fbd3852" + ] + ], + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi" + ] + ], + [ + + ], + [ + "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-10T21:41:17.063459898" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/pluginimputeinfo/tests/nextflow.config b/modules/nf-core/bcftools/pluginimputeinfo/tests/nextflow.config new file mode 100644 index 00000000000..d34b30c66a0 --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/tests/nextflow.config @@ -0,0 +1,13 @@ +process { + + withName: BCFTOOLS_PLUGINTAG2TAG { + ext.prefix = { "${meta.id}_gp" } + ext.args = "--output-type z --write-index=tbi --no-version" + ext.args2 = "--PL-to-GP" + } + + withName: BCFTOOLS_PLUGINIMPUTEINFO { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--no-version --output-type v" + } +} diff --git a/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index.config b/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index.config new file mode 100644 index 00000000000..07289b0c9dc --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index.config @@ -0,0 +1,13 @@ +process { + + withName: BCFTOOLS_PLUGINTAG2TAG { + ext.prefix = { "${meta.id}_gp" } + ext.args = "--output-type z --write-index=tbi --no-version" + ext.args2 = "--PL-to-GP" + } + + withName: BCFTOOLS_PLUGINIMPUTEINFO { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--output-type z --write-index --no-version" + } +} diff --git a/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_csi.config new file mode 100644 index 00000000000..f2e37081d5a --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_csi.config @@ -0,0 +1,13 @@ +process { + + withName: BCFTOOLS_PLUGINTAG2TAG { + ext.prefix = { "${meta.id}_gp" } + ext.args = "--output-type z --write-index=tbi --no-version" + ext.args2 = "--PL-to-GP" + } + + withName: BCFTOOLS_PLUGINIMPUTEINFO { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--output-type z --write-index=csi --no-version" + } +} diff --git a/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_tbi.config new file mode 100644 index 00000000000..39e29ac35cd --- /dev/null +++ b/modules/nf-core/bcftools/pluginimputeinfo/tests/vcf_gz_index_tbi.config @@ -0,0 +1,13 @@ +process { + + withName: BCFTOOLS_PLUGINTAG2TAG { + ext.prefix = { "${meta.id}_gp" } + ext.args = "--output-type z --write-index=tbi --no-version" + ext.args2 = "--PL-to-GP" + } + + withName: BCFTOOLS_PLUGINIMPUTEINFO { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--output-type z --write-index=tbi --no-version" + } +} diff --git a/modules/nf-core/bcftools/pluginscatter/environment.yml b/modules/nf-core/bcftools/pluginscatter/environment.yml index 51bce4d31de..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/pluginscatter/environment.yml +++ b/modules/nf-core/bcftools/pluginscatter/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_pluginscatter channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/pluginsplit/environment.yml b/modules/nf-core/bcftools/pluginsplit/environment.yml index 1f7bb1ff370..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/pluginsplit/environment.yml +++ b/modules/nf-core/bcftools/pluginsplit/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_pluginsplit channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/pluginsplit/main.nf b/modules/nf-core/bcftools/pluginsplit/main.nf index 83de8f966d5..082802be709 100644 --- a/modules/nf-core/bcftools/pluginsplit/main.nf +++ b/modules/nf-core/bcftools/pluginsplit/main.nf @@ -15,8 +15,10 @@ process BCFTOOLS_PLUGINSPLIT { path(targets) output: - tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}") , emit: vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -32,6 +34,7 @@ process BCFTOOLS_PLUGINSPLIT { """ bcftools plugin split \\ + ${args} \\ ${vcf} \\ ${samples_arg} \\ ${groups_arg} \\ @@ -56,12 +59,17 @@ process BCFTOOLS_PLUGINSPLIT { args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : "vcf" - + def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" def determination_file = samples ?: targets + def create_cmd = extension.matches("vcf|bcf") ? "touch " : "echo '' | gzip > " + def create_files = "cut -f 3 ${determination_file} | sed -e 's/\$/.${extension}/' > files.txt; while IFS= read -r filename; do ${create_cmd} \"\$filename\"; done < files.txt" + def create_index = index.matches("csi|tbi") ? "cut -f 3 ${determination_file} | sed -e 's/\$/.${extension}.${index}/' > indices.txt; touch \$( files.txt - - touch \$( versions.yml "${task.process}": diff --git a/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test b/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test new file mode 100644 index 00000000000..e3160851893 --- /dev/null +++ b/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test @@ -0,0 +1,192 @@ +nextflow_process { + + name "Test Process BCFTOOLS_PLUGINSPLIT" + script "../main.nf" + process "BCFTOOLS_PLUGINSPLIT" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/pluginsplit" + + test("homo_sapiens - [ vcf, tbi ], samples, [], [], []") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = Channel.of("normal\t-\tnormal", "tumour\t-\ttumour") + .collectFile(name:"samples.txt", newLine:true) + input[2] = [] + input[3] = [] + input[4] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [ vcf, tbi ], [], groups, regions, targets") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = Channel.of("normal\t-\tnormal", "tumour\t-\ttumour") + .collectFile(name:"samples.txt", newLine:true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + input[4] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.match).match() } + + ) + } + + } + + test("homo_sapiens - [ vcf, tbi ], [], groups, regions, targets - tbi") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = Channel.of("normal\t-\tnormal", "tumour\t-\ttumour") + .collectFile(name:"samples.txt", newLine:true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + input[4] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.tbi.get(0).get(1).find { file(it).name.matches("normal.vcf.gz.tbi|tumor.vcf.gz.tbi") }, + ) } + ) + } + + } + + test("homo_sapiens - [ vcf, tbi ], samples, [], [], [] -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = Channel.of("normal\t-\tnormal", "tumour\t-\ttumour") + .collectFile(name:"samples.txt", newLine:true) + input[2] = [] + input[3] = [] + input[4] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [ vcf, tbi ], [], groups, regions, targets -stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = Channel.of("normal\t-\tnormal", "tumour\t-\ttumour") + .collectFile(name:"samples.txt", newLine:true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + input[4] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo_sapiens - [ vcf, tbi ], [], groups, regions, targets - tbi -stub") { + + config "./nextflow.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/paired_mutect2_calls/test_test2_paired_mutect2_calls.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = Channel.of("normal\t-\tnormal", "tumour\t-\ttumour") + .collectFile(name:"samples.txt", newLine:true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + input[4] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap b/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap new file mode 100644 index 00000000000..66c3c1dda5e --- /dev/null +++ b/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap @@ -0,0 +1,240 @@ +{ + "homo_sapiens - [ vcf, tbi ], samples, [], [], [] -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "normal.vcf:md5,d41d8cd98f00b204e9800998ecf8427e", + "tumour.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "normal.vcf:md5,d41d8cd98f00b204e9800998ecf8427e", + "tumour.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-09T15:56:42.307673651" + }, + "homo_sapiens - [ vcf, tbi ], [], groups, regions, targets": { + "content": null, + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-09T15:56:21.498991402" + }, + "homo_sapiens - [ vcf, tbi ], [], groups, regions, targets - tbi -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "15000.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "40001.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "15000.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e", + "40001.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ], + "csi": [ + + ], + "tbi": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "15000.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e", + "40001.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "15000.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "40001.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-09T15:57:04.483688966" + }, + "homo_sapiens - [ vcf, tbi ], samples, [], [], []": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "normal.vcf:md5,69cfc4bf92bf3e2847081a2026a4d3bb", + "tumour.vcf:md5,08fa5c8d5561c2a8d7c300cb0eea1042" + ] + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "normal.vcf:md5,69cfc4bf92bf3e2847081a2026a4d3bb", + "tumour.vcf:md5,08fa5c8d5561c2a8d7c300cb0eea1042" + ] + ] + ], + "versions": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-09T15:56:10.033818589" + }, + "homo_sapiens - [ vcf, tbi ], [], groups, regions, targets -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "15000.vcf:md5,d41d8cd98f00b204e9800998ecf8427e", + "40001.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ], + "csi": [ + + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "15000.vcf:md5,d41d8cd98f00b204e9800998ecf8427e", + "40001.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-09T15:56:53.641165787" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/pluginsplit/tests/nextflow.config b/modules/nf-core/bcftools/pluginsplit/tests/nextflow.config new file mode 100644 index 00000000000..9b9a4783a57 --- /dev/null +++ b/modules/nf-core/bcftools/pluginsplit/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'BCFTOOLS_PLUGINSPLIT' { + ext.args = '--write-index=tbi --output-type z' + } +} diff --git a/modules/nf-core/bcftools/pluginsplit/tests/tags.yml b/modules/nf-core/bcftools/pluginsplit/tests/tags.yml new file mode 100644 index 00000000000..2f29ef18ac8 --- /dev/null +++ b/modules/nf-core/bcftools/pluginsplit/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/pluginsplit: + - "modules/nf-core/bcftools/pluginsplit/**" diff --git a/modules/nf-core/bcftools/plugintag2tag/environment.yml b/modules/nf-core/bcftools/plugintag2tag/environment.yml new file mode 100644 index 00000000000..5c00b116ad9 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/plugintag2tag/main.nf b/modules/nf-core/bcftools/plugintag2tag/main.nf new file mode 100644 index 00000000000..69f756d6e03 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/main.nf @@ -0,0 +1,76 @@ +process BCFTOOLS_PLUGINTAG2TAG { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': + 'biocontainers/bcftools:1.20--h8b25389_0' }" + + input: + tuple val(meta), path(vcf), path(index) + path(regions) + path(targets) + + output: + tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.tbi") , emit: tbi, optional: true + tuple val(meta), path("*.csi") , emit: csi, optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def regions_file = regions ? "--regions-file ${regions}" : "" + def targets_file = targets ? "--targets-file ${targets}" : "" + def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : + args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf" + """ + bcftools plugin tag2tag \\ + --output ${prefix}.${extension} \\ + ${regions_file} \\ + ${targets_file} \\ + $args \\ + --threads $task.cpus \\ + ${vcf} \\ + -- \\ + $args2 + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--output-type b") || args.contains("-Ob") ? "bcf.gz" : + args.contains("--output-type u") || args.contains("-Ou") ? "bcf" : + args.contains("--output-type z") || args.contains("-Oz") ? "vcf.gz" : + args.contains("--output-type v") || args.contains("-Ov") ? "vcf" : + "vcf" + def index = args.contains("--write-index=tbi") || args.contains("-W=tbi") ? "tbi" : + args.contains("--write-index=csi") || args.contains("-W=csi") ? "csi" : + args.contains("--write-index") || args.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + + """ + ${create_cmd} ${prefix}.${extension} + ${create_index} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bcftools: \$(bcftools --version 2>&1 | head -n1 | sed 's/^.*bcftools //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/bcftools/plugintag2tag/meta.yml b/modules/nf-core/bcftools/plugintag2tag/meta.yml new file mode 100644 index 00000000000..5cbc772ce59 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/meta.yml @@ -0,0 +1,68 @@ +--- +name: "bcftools_plugintag2tag" +description: Converts between similar tags, such as GL,PL,GP or QR,QA,QS or localized alleles, eg LPL,LAD. +keywords: + - tag2tag + - bcftools + - VCF +tools: + - view: + description: | + Converts between similar tags, such as GL,PL,GP or QR,QA,QS or localized alleles, eg LPL,LAD. + homepage: http://samtools.github.io/bcftools/bcftools.html + documentation: https://samtools.github.io/bcftools/howtos/plugin.tag2tag.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: | + The vcf file to be inspected. + e.g. 'file.vcf' + - index: + type: file + description: | + The tab index for the VCF file to be inspected. + e.g. 'file.tbi' + - regions: + type: file + description: | + Optionally, restrict the operation to regions listed in this file. + e.g. 'file.vcf' + - targets: + type: file + description: | + Optionally, restrict the operation to regions listed in this file (doesn't rely upon index files) + e.g. 'file.vcf' +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: VCF normalized output file + pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - csi: + type: file + description: Default VCF file index + pattern: "*.csi" + - tbi: + type: file + description: Alternative VCF file index + pattern: "*.tbi" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@eweizy" +maintainers: + - "@eweizy" diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test b/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test new file mode 100644 index 00000000000..b9fdc6252c7 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test @@ -0,0 +1,290 @@ +nextflow_process { + + name "Test Process BCFTOOLS_PLUGINTAG2TAG" + script "../main.nf" + process "BCFTOOLS_PLUGINTAG2TAG" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/plugintag2tag" + + test("sarscov2 - [vcf, tbi], [], []") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index") { + + config "./vcf_gz_index.config" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi") { + + config "./vcf_gz_index_csi.config" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi") { + + config "./vcf_gz_index_tbi.config" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.csi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.tbi.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.tbi[0][1].endsWith(".tbi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], vcf, tsv, []") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.targets.tsv.gz', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - stub") { + + config "./nextflow.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.vcf[0][1]).name, + process.out.versions + ).match() } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub") { + + config "./vcf_gz_index.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi - stub") { + + config "./vcf_gz_index_csi.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.csi[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub") { + + config "./vcf_gz_index_tbi.config" + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'out', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.tbi[0][1].endsWith(".tbi") } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap b/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap new file mode 100644 index 00000000000..651601fb2b0 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap @@ -0,0 +1,346 @@ +{ + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ], + "csi": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:44:33.996543" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,403ce4228b75bb30073f99dec5836bd7" + ] + ], + [ + + ], + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.tbi" + ] + ], + [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:42:43.348779" + }, + "sarscov2 - [vcf, tbi], [], []": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out.vcf:md5,403ce4228b75bb30073f99dec5836bd7" + ] + ], + [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:48:35.163391" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub": { + "content": [ + { + "0": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ], + "csi": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + + ], + "vcf": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:44:06.056403" + }, + "sarscov2 - [vcf, tbi], [], [] - stub": { + "content": [ + "out.vcf", + [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:45:59.170948" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ], + "csi": [ + + ], + "tbi": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:45:00.60121" + }, + "sarscov2 - [vcf, tbi], vcf, tsv, []": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out.vcf:md5,2ec2e4c454eaa40f8e7aa54bf8c8b15f" + ] + ], + [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:43:10.164895" + }, + "sarscov2 - [vcf, tbi], [], [], [] - stub": { + "content": [ + "out.vcf", + [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:43:37.881451" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,403ce4228b75bb30073f99dec5836bd7" + ] + ], + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi" + ] + ], + [ + + ], + [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:41:46.905606" + }, + "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi": { + "content": [ + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz:md5,403ce4228b75bb30073f99dec5836bd7" + ] + ], + [ + [ + { + "id": "out", + "single_end": false + }, + "out_vcf.vcf.gz.csi" + ] + ], + [ + + ], + [ + "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T15:42:15.499991" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/nextflow.config b/modules/nf-core/bcftools/plugintag2tag/tests/nextflow.config new file mode 100644 index 00000000000..6f80a373ec5 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/tests/nextflow.config @@ -0,0 +1,4 @@ +process { + ext.args = '--no-version --output-type v' + ext.args2 = '--PL-to-GP' +} diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/tags.yml b/modules/nf-core/bcftools/plugintag2tag/tests/tags.yml new file mode 100644 index 00000000000..460cf907ed7 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/tests/tags.yml @@ -0,0 +1,2 @@ +bcftools/plugintag2tag: + - "modules/nf-core/bcftools/plugintag2tag/**" diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index.config b/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index.config new file mode 100644 index 00000000000..83a020363c1 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index.config @@ -0,0 +1,5 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--output-type z --write-index --no-version" + ext.args2 = '--PL-to-GP' +} diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_csi.config new file mode 100644 index 00000000000..27e7baf3f18 --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_csi.config @@ -0,0 +1,5 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--output-type z --write-index=csi --no-version" + ext.args2 = '--PL-to-GP' +} diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_tbi.config new file mode 100644 index 00000000000..e845d63175f --- /dev/null +++ b/modules/nf-core/bcftools/plugintag2tag/tests/vcf_gz_index_tbi.config @@ -0,0 +1,5 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args = "--output-type z --write-index=tbi --no-version" + ext.args2 = '--PL-to-GP' +} diff --git a/modules/nf-core/bcftools/query/environment.yml b/modules/nf-core/bcftools/query/environment.yml index d8c4f4e4860..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/query/environment.yml +++ b/modules/nf-core/bcftools/query/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_query channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/query/tests/main.nf.test b/modules/nf-core/bcftools/query/tests/main.nf.test index e9ea5a9d71b..39e67b35ad3 100644 --- a/modules/nf-core/bcftools/query/tests/main.nf.test +++ b/modules/nf-core/bcftools/query/tests/main.nf.test @@ -18,8 +18,8 @@ nextflow_process { """ input[0] = [ [ id:'out' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -47,11 +47,11 @@ nextflow_process { """ input[0] = [ [ id:'out' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['illumina']['test3_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_targets_tsv_gz'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.targets.tsv.gz', checkIfExists: true) input[3] = [] """ } @@ -76,8 +76,8 @@ nextflow_process { """ input[0] = [ [ id:'out' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] diff --git a/modules/nf-core/bcftools/reheader/environment.yml b/modules/nf-core/bcftools/reheader/environment.yml index 48fd72c91c4..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/reheader/environment.yml +++ b/modules/nf-core/bcftools/reheader/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_reheader channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/reheader/main.nf b/modules/nf-core/bcftools/reheader/main.nf index aa58fa75db5..9cf6d0d38be 100644 --- a/modules/nf-core/bcftools/reheader/main.nf +++ b/modules/nf-core/bcftools/reheader/main.nf @@ -13,6 +13,7 @@ process BCFTOOLS_REHEADER { output: tuple val(meta), path("*.{vcf,vcf.gz,bcf,bcf.gz}"), emit: vcf + tuple val(meta), path("*.{csi,tbi}") , emit: index, optional: true path "versions.yml" , emit: versions when: @@ -59,8 +60,16 @@ process BCFTOOLS_REHEADER { args2.contains("--output-type z") || args2.contains("-Oz") ? "vcf.gz" : args2.contains("--output-type v") || args2.contains("-Ov") ? "vcf" : "vcf" + def index = args2.contains("--write-index=tbi") || args2.contains("-W=tbi") ? "tbi" : + args2.contains("--write-index=csi") || args2.contains("-W=csi") ? "csi" : + args2.contains("--write-index") || args2.contains("-W") ? "csi" : + "" + def create_cmd = extension.endsWith(".gz") ? "echo '' | gzip >" : "touch" + def create_index = extension.endsWith(".gz") && index.matches("csi|tbi") ? "touch ${prefix}.${extension}.${index}" : "" + """ - touch ${prefix}.${extension} + ${create_cmd} ${prefix}.${extension} + ${create_index} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bcftools/reheader/meta.yml b/modules/nf-core/bcftools/reheader/meta.yml index 690d4eade02..d903cc0f136 100644 --- a/modules/nf-core/bcftools/reheader/meta.yml +++ b/modules/nf-core/bcftools/reheader/meta.yml @@ -53,6 +53,10 @@ output: type: file description: VCF with updated header, bgzipped per default pattern: "*.{vcf,vcf.gz,bcf,bcf.gz}" + - index: + type: file + description: Index of VCF with updated header + pattern: "*.{csi,tbi}" authors: - "@bjohnnyd" - "@jemten" diff --git a/modules/nf-core/bcftools/reheader/tests/main.nf.test b/modules/nf-core/bcftools/reheader/tests/main.nf.test index f3200cb394b..96c1b7b0ee8 100644 --- a/modules/nf-core/bcftools/reheader/tests/main.nf.test +++ b/modules/nf-core/bcftools/reheader/tests/main.nf.test @@ -17,13 +17,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -47,13 +47,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -68,6 +68,111 @@ nextflow_process { } + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - index") { + + config "./vcf_gz_index.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index") { + + config "./vcf_gz_index_csi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".csi") } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index") { + + config "./vcf_gz_index_tbi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf, + process.out.index.collect { it.collect { it instanceof Map ? it : file(it).name } }, + process.out.versions + ).match() }, + { assert process.out.index[0][1].endsWith(".tbi") } + ) + } + + } + test("sarscov2 - [vcf, [], []], fai - bcf output") { config "./bcf.config" @@ -77,13 +182,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -107,11 +212,11 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map [] ] @@ -137,15 +242,15 @@ nextflow_process { """ ch_no_samples = Channel.of([ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [] ]) ch_samples = Channel.of(["samples.txt", "new_name"]) .collectFile(newLine:true) input[0] = ch_no_samples.combine(ch_samples) - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -170,13 +275,13 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), [], [] ] - input[1] = [ + input[1] = [ [ id:'genome' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -193,5 +298,97 @@ nextflow_process { } } + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - index -stub") { + + options "-stub" + config "./vcf_gz_index.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index -stub") { + + options "-stub" + config "./vcf_gz_index_csi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index -stub") { + + options "-stub" + config "./vcf_gz_index_tbi.config" + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + [], + [] + ] + input[1] = [ + [ id:'genome' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } } diff --git a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap index 3629393b9fb..87a3654a547 100644 --- a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap @@ -1,4 +1,140 @@ { + "sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:09:05.955833763" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:52:41.444952182" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:53:04.314827944" + }, "sarscov2 - [vcf, [], []], fai - vcf output": { "content": [ { @@ -12,7 +148,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -32,7 +174,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:52:56.985565049" + "timestamp": "2024-09-03T09:50:41.983008108" }, "sarscov2 - [vcf, [], []], fai - bcf output": { "content": [ @@ -47,7 +189,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -67,7 +215,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:29.509254578" + "timestamp": "2024-09-03T09:51:43.072513252" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output": { "content": [ @@ -82,7 +230,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -102,7 +256,90 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:11.468640381" + "timestamp": "2024-09-03T09:50:53.055630152" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:08:37.999924355" + }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T09:52:52.512269206" }, "sarscov2 - [vcf, [], []], fai - stub": { "content": [ @@ -117,6 +354,36 @@ }, "timestamp": "2024-05-31T15:16:36.337112514" }, + "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,8e722884ffb75155212a3fc053918766" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.csi" + ] + ], + [ + "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-09-03T10:08:55.434831174" + }, "sarscov2 - [vcf, [], samples], fai": { "content": [ { @@ -130,7 +397,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -150,7 +423,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:54:04.84196388" + "timestamp": "2024-09-03T09:52:12.216002665" }, "sarscov2 - [vcf, header, []], []": { "content": [ @@ -165,7 +438,13 @@ ] ], "1": [ + + ], + "2": [ "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + ], + "index": [ + ], "vcf": [ [ @@ -185,6 +464,6 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-03T11:53:44.311122728" + "timestamp": "2024-09-03T09:51:54.062386022" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config new file mode 100644 index 00000000000..1e050ec740a --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index.config @@ -0,0 +1,4 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index --no-version" +} diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config new file mode 100644 index 00000000000..536e4b4235d --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_csi.config @@ -0,0 +1,4 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index=csi --no-version" +} diff --git a/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config new file mode 100644 index 00000000000..91a80db7742 --- /dev/null +++ b/modules/nf-core/bcftools/reheader/tests/vcf_gz_index_tbi.config @@ -0,0 +1,5 @@ +process { + ext.prefix = { "${meta.id}_vcf" } + ext.args2 = "--output-type z --write-index=tbi --no-version" + +} diff --git a/modules/nf-core/bcftools/roh/environment.yml b/modules/nf-core/bcftools/roh/environment.yml index 76187d1217e..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/roh/environment.yml +++ b/modules/nf-core/bcftools/roh/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_roh channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/roh/tests/main.nf.test b/modules/nf-core/bcftools/roh/tests/main.nf.test new file mode 100644 index 00000000000..bb73b80c024 --- /dev/null +++ b/modules/nf-core/bcftools/roh/tests/main.nf.test @@ -0,0 +1,67 @@ + +nextflow_process { + + name "Test Process BCFTOOLS_ROH" + script "../main.nf" + process "BCFTOOLS_ROH" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/roh" + + test("test-bcftools-roh") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [[],[]] + input[2] = [] + input[3] = [] + input[4] = [] + input[5] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-bcftools-roh-stub") { + options '-stub' + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) + ] + input[1] = [[],[]] + input[2] = [] + input[3] = [] + input[4] = [] + input[5] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bcftools/roh/tests/main.nf.test.snap b/modules/nf-core/bcftools/roh/tests/main.nf.test.snap new file mode 100644 index 00000000000..3b008a01e98 --- /dev/null +++ b/modules/nf-core/bcftools/roh/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "test-bcftools-roh": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.roh:md5,853de778be3030754be40e11be0aa557" + ] + ], + "1": [ + "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + ], + "roh": [ + [ + { + "id": "test" + }, + "test.roh:md5,853de778be3030754be40e11be0aa557" + ] + ], + "versions": [ + "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:19:06.961553" + }, + "test-bcftools-roh-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.roh:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + ], + "roh": [ + [ + { + "id": "test" + }, + "test.roh:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:19:11.161719" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/sort/environment.yml b/modules/nf-core/bcftools/sort/environment.yml index 2295ecfd178..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/sort/environment.yml +++ b/modules/nf-core/bcftools/sort/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_sort channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/sort/tests/main.nf.test b/modules/nf-core/bcftools/sort/tests/main.nf.test index 1207a7390a5..b9bdd76a09f 100644 --- a/modules/nf-core/bcftools/sort/tests/main.nf.test +++ b/modules/nf-core/bcftools/sort/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } @@ -39,7 +39,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } @@ -69,7 +69,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } @@ -99,7 +99,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } @@ -127,7 +127,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } @@ -152,7 +152,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } @@ -178,7 +178,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } @@ -204,7 +204,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bcftools/split/environment.yml b/modules/nf-core/bcftools/split/environment.yml index 8aefb505c0a..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/split/environment.yml +++ b/modules/nf-core/bcftools/split/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_split channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/split/tests/main.nf.test b/modules/nf-core/bcftools/split/tests/main.nf.test new file mode 100644 index 00000000000..00328b2004c --- /dev/null +++ b/modules/nf-core/bcftools/split/tests/main.nf.test @@ -0,0 +1,40 @@ + +nextflow_process { + + name "Test Process BCFTOOLS_SPLIT" + script "../main.nf" + process "BCFTOOLS_SPLIT" + + tag "modules" + tag "modules_nfcore" + tag "bcftools" + tag "bcftools/split" + + test("test-bcftools-split") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz.tbi', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.split_vcf[0][1]).vcf.variantsMD5, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/bcftools/split/tests/main.nf.test.snap b/modules/nf-core/bcftools/split/tests/main.nf.test.snap new file mode 100644 index 00000000000..c1a3c98578c --- /dev/null +++ b/modules/nf-core/bcftools/split/tests/main.nf.test.snap @@ -0,0 +1,15 @@ +{ + "test-bcftools-split": { + "content": [ + "ecf3973f634b7baa1c13e60bfb77a174", + [ + "versions.yml:md5,a1c58d82f1e5c0fed394bfb865f57fd9" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:16:45.077115" + } +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/stats/environment.yml b/modules/nf-core/bcftools/stats/environment.yml index 128fe204227..93357b41ead 100644 --- a/modules/nf-core/bcftools/stats/environment.yml +++ b/modules/nf-core/bcftools/stats/environment.yml @@ -1,8 +1,6 @@ -name: bcftools_stats channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 - bioconda::htslib=1.20 diff --git a/modules/nf-core/bcftools/view/environment.yml b/modules/nf-core/bcftools/view/environment.yml index 4b2a21dfaaa..5c00b116ad9 100644 --- a/modules/nf-core/bcftools/view/environment.yml +++ b/modules/nf-core/bcftools/view/environment.yml @@ -1,7 +1,5 @@ -name: bcftools_view channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bcftools=1.20 diff --git a/modules/nf-core/bcftools/view/tests/main.nf.test b/modules/nf-core/bcftools/view/tests/main.nf.test index 14a7283d434..1e60c50d5a3 100644 --- a/modules/nf-core/bcftools/view/tests/main.nf.test +++ b/modules/nf-core/bcftools/view/tests/main.nf.test @@ -18,8 +18,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -49,8 +49,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -83,8 +83,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -117,8 +117,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -151,11 +151,11 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['illumina']['test3_vcf_gz'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['illumina']['test2_vcf_targets_tsv_gz'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test3.vcf.gz', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.targets.tsv.gz', checkIfExists: true) input[3] = [] """ } @@ -183,8 +183,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -215,8 +215,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -245,8 +245,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] @@ -275,8 +275,8 @@ nextflow_process { """ input[0] = [ [ id:'out', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true) ] input[1] = [] input[2] = [] diff --git a/modules/nf-core/bcl2fastq/environment.yml b/modules/nf-core/bcl2fastq/environment.yml deleted file mode 100644 index 17e01d9422b..00000000000 --- a/modules/nf-core/bcl2fastq/environment.yml +++ /dev/null @@ -1,5 +0,0 @@ -name: bcl2fastq -channels: - - conda-forge - - bioconda - - defaults diff --git a/modules/nf-core/bcl2fastq/main.nf b/modules/nf-core/bcl2fastq/main.nf index ee1490e1e72..2759a36448e 100644 --- a/modules/nf-core/bcl2fastq/main.nf +++ b/modules/nf-core/bcl2fastq/main.nf @@ -8,12 +8,12 @@ process BCL2FASTQ { tuple val(meta), path(samplesheet), path(run_dir) output: - tuple val(meta), path("**_S[1-9]*_R?_00?.fastq.gz") , emit: fastq - tuple val(meta), path("**_S[1-9]*_I?_00?.fastq.gz") , optional:true, emit: fastq_idx - tuple val(meta), path("**Undetermined_S0*_R?_00?.fastq.gz") , optional:true, emit: undetermined - tuple val(meta), path("**Undetermined_S0*_I?_00?.fastq.gz") , optional:true, emit: undetermined_idx - tuple val(meta), path("Reports") , emit: reports - tuple val(meta), path("Stats") , emit: stats + tuple val(meta), path("output/**_S[1-9]*_R?_00?.fastq.gz") , emit: fastq + tuple val(meta), path("output/**_S[1-9]*_I?_00?.fastq.gz") , optional:true, emit: fastq_idx + tuple val(meta), path("output/**Undetermined_S0*_R?_00?.fastq.gz") , optional:true, emit: undetermined + tuple val(meta), path("output/**Undetermined_S0*_I?_00?.fastq.gz") , optional:true, emit: undetermined_idx + tuple val(meta), path("output/Reports") , emit: reports + tuple val(meta), path("output/Stats") , emit: stats tuple val(meta), path("InterOp/*.bin") , emit: interop path("versions.yml") , emit: versions @@ -58,7 +58,7 @@ process BCL2FASTQ { bcl2fastq \\ $args \\ - --output-dir . \\ + --output-dir output \\ --runfolder-dir ${input_dir} \\ --sample-sheet ${samplesheet} \\ --processing-threads ${task.cpus} diff --git a/modules/nf-core/bcl2fastq/meta.yml b/modules/nf-core/bcl2fastq/meta.yml index 34d7762fae0..a8c8efd85f7 100644 --- a/modules/nf-core/bcl2fastq/meta.yml +++ b/modules/nf-core/bcl2fastq/meta.yml @@ -9,7 +9,7 @@ tools: description: "Demultiplex Illumina BCL files" homepage: "https://support.illumina.com/sequencing/sequencing_software/bcl2fastq-conversion-software" documentation: "https://support.illumina.com/content/dam/illumina-support/documents/documentation/software_documentation/bcl2fastq/bcl2fastq2-v2-20-software-guide-15051736-03.pdf" - licence: "ILLUMINA" + licence: ["ILLUMINA"] input: - meta: type: map diff --git a/modules/nf-core/bcl2fastq/tests/main.nf.test b/modules/nf-core/bcl2fastq/tests/main.nf.test index ca03b972893..d0e0b9a5245 100644 --- a/modules/nf-core/bcl2fastq/tests/main.nf.test +++ b/modules/nf-core/bcl2fastq/tests/main.nf.test @@ -15,8 +15,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', lane:1 ], - file(params.test_data['homo_sapiens']['illumina']['test_flowcell_samplesheet'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_flowcell'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bcl/flowcell_samplesheet.csv', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bcl/flowcell.tar.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bcl2fastq/tests/main.nf.test.snap b/modules/nf-core/bcl2fastq/tests/main.nf.test.snap index 7f3e217e3e7..8addecc2259 100644 --- a/modules/nf-core/bcl2fastq/tests/main.nf.test.snap +++ b/modules/nf-core/bcl2fastq/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "id": "test", "lane": 1 }, - "Sample1_S1_L001_R1_001.fastq.gz:md5,e92fce7b86c6447b053d72c5cb4be89c" + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b" ] ], "1": [ @@ -111,7 +111,7 @@ "id": "test", "lane": 1 }, - "Sample1_S1_L001_R1_001.fastq.gz:md5,e92fce7b86c6447b053d72c5cb4be89c" + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b" ] ], "fastq_idx": [ @@ -210,6 +210,10 @@ ] } ], - "timestamp": "2023-10-25T11:06:04.763448" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-05T12:46:23.595844132" } } \ No newline at end of file diff --git a/modules/nf-core/bclconvert/Dockerfile b/modules/nf-core/bclconvert/Dockerfile index 2124c7942dc..a165493c85b 100644 --- a/modules/nf-core/bclconvert/Dockerfile +++ b/modules/nf-core/bclconvert/Dockerfile @@ -3,7 +3,7 @@ # Push to nfcore/bclconvert: FROM debian:bullseye-slim -ARG BCLCONVERT_VERSION="4.2.7" +ARG BCLCONVERT_VERSION="4.3.6" LABEL org.opencontainers.image.authors="Matthias De Smet " LABEL org.opencontainers.image.description="Docker image containing bcl-convert" LABEL org.opencontainers.image.version="$BCLCONVERT_VERSION" @@ -25,9 +25,7 @@ RUN apt-get update \ # Link hostname cmd to fix hardcoded path RUN ln -s /bin/hostname /usr/bin/hostname # Install bcl-convert -ADD --checksum=sha256:ea508d763dc27d30d1a34f6a38d8da31ea67797d7b4971e8c10677bc48539565 \ - https://s3.amazonaws.com/webdata.illumina.com/downloads/software/bcl-convert/bcl-convert-${BCLCONVERT_VERSION}-2.el7.x86_64.rpm \ - bcl-convert.rpm +ADD bcl-convert-4.3.6-2.el8.x86_64.rpm bcl-convert.rpm SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN rpm2cpio bcl-convert.rpm | cpio -idmv \ && rm bcl-convert.rpm diff --git a/modules/nf-core/bclconvert/README.md b/modules/nf-core/bclconvert/README.md index 54679d0f33a..63197d166eb 100644 --- a/modules/nf-core/bclconvert/README.md +++ b/modules/nf-core/bclconvert/README.md @@ -2,8 +2,8 @@ bcl-convert is a commercial tool from Illumina. The container provided for the bcl-convert nf-core module is not provided nor supported by Illumina. Updating the bcl-convert versions in the container and pushing the update to Dockerhub needs to be done manually. -1. Navigate to the appropriate download page. - [BCL Convert](https://support.illumina.com/sequencing/sequencing_software/bcl-convert/downloads.html): find the latest version of bcl-convert -2. Update the `BCL_VERSION` in the `Dockerfile` (You might have to update the link in the `ADD` statement) +1. Navigate to the appropriate download page. - [BCL Convert](https://support.illumina.com/sequencing/sequencing_software/bcl-convert/downloads.html): find and download the latest version of bcl-convert RPM package. +2. Update the `BCL_VERSION` in the `Dockerfile` 3. Create and test the container: ```bash diff --git a/modules/nf-core/bclconvert/main.nf b/modules/nf-core/bclconvert/main.nf index 8e6886dfc6f..6d272fac315 100644 --- a/modules/nf-core/bclconvert/main.nf +++ b/modules/nf-core/bclconvert/main.nf @@ -2,18 +2,18 @@ process BCLCONVERT { tag {"$meta.lane" ? "$meta.id"+"."+"$meta.lane" : "$meta.id" } label 'process_high' - container "nf-core/bclconvert:4.2.7" + container "nf-core/bclconvert:4.3.6" input: tuple val(meta), path(samplesheet), path(run_dir) output: - tuple val(meta), path("**_S[1-9]*_R?_00?.fastq.gz") , emit: fastq - tuple val(meta), path("**_S[1-9]*_I?_00?.fastq.gz") , optional:true, emit: fastq_idx - tuple val(meta), path("**Undetermined_S0*_R?_00?.fastq.gz") , optional:true, emit: undetermined - tuple val(meta), path("**Undetermined_S0*_I?_00?.fastq.gz") , optional:true, emit: undetermined_idx - tuple val(meta), path("Reports") , emit: reports - tuple val(meta), path("Logs") , emit: logs + tuple val(meta), path("output/**_S[1-9]*_R?_00?.fastq.gz") , emit: fastq + tuple val(meta), path("output/**_S[1-9]*_I?_00?.fastq.gz") , optional:true, emit: fastq_idx + tuple val(meta), path("output/**Undetermined_S0*_R?_00?.fastq.gz") , optional:true, emit: undetermined + tuple val(meta), path("output/**Undetermined_S0*_I?_00?.fastq.gz") , optional:true, emit: undetermined_idx + tuple val(meta), path("output/Reports") , emit: reports + tuple val(meta), path("output/Logs") , emit: logs tuple val(meta), path("**/InterOp/*.bin", includeInputs: true), emit: interop path("versions.yml") , emit: versions @@ -58,7 +58,7 @@ process BCLCONVERT { bcl-convert \\ $args \\ - --output-directory . \\ + --output-directory output \\ --bcl-input-directory ${input_dir} \\ --sample-sheet ${samplesheet} diff --git a/modules/nf-core/bclconvert/tests/main.nf.test b/modules/nf-core/bclconvert/tests/main.nf.test index 2779457c1d2..a4308fa3f52 100644 --- a/modules/nf-core/bclconvert/tests/main.nf.test +++ b/modules/nf-core/bclconvert/tests/main.nf.test @@ -15,8 +15,8 @@ nextflow_process { """ input[0] = [ [ id: 'test', lane:1 ], - file(params.test_data['homo_sapiens']['illumina']['test_flowcell_samplesheet'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_flowcell'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bcl/flowcell_samplesheet.csv', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bcl/flowcell.tar.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bclconvert/tests/main.nf.test.snap b/modules/nf-core/bclconvert/tests/main.nf.test.snap index 8b9d506c450..6703ed5e59e 100644 --- a/modules/nf-core/bclconvert/tests/main.nf.test.snap +++ b/modules/nf-core/bclconvert/tests/main.nf.test.snap @@ -19,12 +19,12 @@ "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", "SampleSheet.csv:md5,dc0dffd39541dd6cc5b4801d768a8d2b", "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", - "fastq_list.csv:md5,05bc84f51840f5754cfb8381b36f2cb0" + "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9" ] ] ], [ - "versions.yml:md5,375aa95eef22ad3b0cc39b325d7ac9e0" + "versions.yml:md5,3742a25082bc9f0ff8dca303c5c8cb8b" ], [ [ @@ -50,6 +50,10 @@ "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c" ] ], - "timestamp": "2024-01-31T13:06:35.609496414" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-05T12:42:21.804307512" } } \ No newline at end of file diff --git a/modules/nf-core/beagle5/beagle/environment.yml b/modules/nf-core/beagle5/beagle/environment.yml index 872f78c404b..55ed1d1bda3 100644 --- a/modules/nf-core/beagle5/beagle/environment.yml +++ b/modules/nf-core/beagle5/beagle/environment.yml @@ -1,7 +1,5 @@ -name: beagle5_beagle channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::beagle=5.2_21Apr21.304 diff --git a/modules/nf-core/beagle5/beagle/meta.yml b/modules/nf-core/beagle5/beagle/meta.yml index 03b50869270..51b9c6b6997 100644 --- a/modules/nf-core/beagle5/beagle/meta.yml +++ b/modules/nf-core/beagle5/beagle/meta.yml @@ -3,13 +3,14 @@ description: Beagle v5.2 is a software package for phasing genotypes and for imp keywords: - phasing - imputation + - genotype tools: - "beagle5": description: "Beagle is a software package for phasing genotypes and for imputing ungenotyped markers." homepage: "https://faculty.washington.edu/browning/beagle/b5_2.html" documentation: "https://faculty.washington.edu/browning/beagle/beagle_5.2_13Oct21.pdf" doi: "10.1016/j.ajhg.2021.08.005; doi:10.1016/j.ajhg.2018.07.015" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/beagle5/beagle/tests/main.nf.test b/modules/nf-core/beagle5/beagle/tests/main.nf.test new file mode 100644 index 00000000000..2763708e273 --- /dev/null +++ b/modules/nf-core/beagle5/beagle/tests/main.nf.test @@ -0,0 +1,106 @@ + +nextflow_process { + + name "Test Process BEAGLE5_BEAGLE" + script "../main.nf" + process "BEAGLE5_BEAGLE" + + tag "modules" + tag "modules_nfcore" + tag "beagle5" + tag "beagle5/beagle" + + test("test-beagle5-beagle") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/beagle/target.22Jul22.46e.vcf.gz", checkIfExists: true) + ] + input[1] = [] + input[2] = [] + input[3] = [] + input[4] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf[0][1]).vcf.variantsMD5, + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-beagle5-beagle-ref") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/beagle/target.22Jul22.46e.vcf.gz", checkIfExists: true) + ] + input[1] = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/beagle/ref.22Jul22.46e.vcf.gz", checkIfExists: true) + input[2] = [] + input[3] = [] + input[4] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf[0][1]).vcf.variantsMD5, + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-beagle5-beagle-ref-map") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/beagle/target.22Jul22.46e.vcf.gz", checkIfExists: true) + ] + input[1] = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/beagle/ref.22Jul22.46e.vcf.gz", checkIfExists: true) + input[2] = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/beagle/plink.chr22.GRCh38.map", checkIfExists: true) + input[3] = [] + input[4] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf[0][1]).vcf.variantsMD5, + file(process.out.log[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/beagle5/beagle/tests/main.nf.test.snap b/modules/nf-core/beagle5/beagle/tests/main.nf.test.snap new file mode 100644 index 00000000000..e956af5c451 --- /dev/null +++ b/modules/nf-core/beagle5/beagle/tests/main.nf.test.snap @@ -0,0 +1,44 @@ +{ + "test-beagle5-beagle": { + "content": [ + "c64dae0a50a33b6083b8bfa0991f6eb0", + "test.bglout.log", + [ + "versions.yml:md5,d2b2dffb6ef6c2a1dd4f718a38c83a48" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:14:00.293016" + }, + "test-beagle5-beagle-ref-map": { + "content": [ + "aba50d8debbfe25cd71b50f8fd8f7ce5", + "test.bglout.log", + [ + "versions.yml:md5,d2b2dffb6ef6c2a1dd4f718a38c83a48" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:14:25.525094" + }, + "test-beagle5-beagle-ref": { + "content": [ + "bd8d96bed907d22e569746f2754f5469", + "test.bglout.log", + [ + "versions.yml:md5,d2b2dffb6ef6c2a1dd4f718a38c83a48" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:14:13.328146" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedgovcf/environment.yml b/modules/nf-core/bedgovcf/environment.yml index f19a947e0d4..4b32f5201e1 100644 --- a/modules/nf-core/bedgovcf/environment.yml +++ b/modules/nf-core/bedgovcf/environment.yml @@ -1,7 +1,5 @@ -name: bedgovcf channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedgovcf=0.1.1 diff --git a/modules/nf-core/bedgovcf/tests/main.nf.test b/modules/nf-core/bedgovcf/tests/main.nf.test index f55fbb6dd2c..13817897935 100644 --- a/modules/nf-core/bedgovcf/tests/main.nf.test +++ b/modules/nf-core/bedgovcf/tests/main.nf.test @@ -19,14 +19,14 @@ nextflow_process { """ raw_ch = Channel.of([ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ]) config = Channel.of(["config.yaml", "header:", " - name: test", " content: test"]) .collectFile(newLine:true, sort:'index') input[0] = raw_ch.combine(config) input[1] = [ [id:"ref"], - file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] """ } @@ -52,14 +52,14 @@ nextflow_process { """ raw_ch = Channel.of([ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ]) config = Channel.of(["config.yaml", "header:", " - name: test", " content: test"]) .collectFile(newLine:true, sort:'index') input[0] = raw_ch.combine(config) input[1] = [ [id:"ref"], - file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bedops/convert2bed/environment.yml b/modules/nf-core/bedops/convert2bed/environment.yml index 049b29e9b3e..3c13066f792 100644 --- a/modules/nf-core/bedops/convert2bed/environment.yml +++ b/modules/nf-core/bedops/convert2bed/environment.yml @@ -1,7 +1,5 @@ -name: "bedops_convert2bed" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bedops=2.4.41" diff --git a/modules/nf-core/bedops/convert2bed/tests/main.nf.test b/modules/nf-core/bedops/convert2bed/tests/main.nf.test index 183f8de6c90..3f2b193a6d4 100644 --- a/modules/nf-core/bedops/convert2bed/tests/main.nf.test +++ b/modules/nf-core/bedops/convert2bed/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) ] """ } @@ -41,7 +41,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bedops/gtf2bed/environment.yml b/modules/nf-core/bedops/gtf2bed/environment.yml index 8aede242838..3c13066f792 100644 --- a/modules/nf-core/bedops/gtf2bed/environment.yml +++ b/modules/nf-core/bedops/gtf2bed/environment.yml @@ -1,7 +1,5 @@ -name: "bedops_gtf2bed" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bedops=2.4.41" diff --git a/modules/nf-core/bedops/gtf2bed/tests/main.nf.test b/modules/nf-core/bedops/gtf2bed/tests/main.nf.test index 8dcc67f5760..c6f4ed22678 100644 --- a/modules/nf-core/bedops/gtf2bed/tests/main.nf.test +++ b/modules/nf-core/bedops/gtf2bed/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { process { """ input[0] = [[ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] """ } @@ -38,7 +38,7 @@ nextflow_process { process { """ input[0] = [[ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bedtools/bamtobed/environment.yml b/modules/nf-core/bedtools/bamtobed/environment.yml index 4b50139ec59..5683bc05f23 100644 --- a/modules/nf-core/bedtools/bamtobed/environment.yml +++ b/modules/nf-core/bedtools/bamtobed/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_bamtobed channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/bamtobed/tests/main.nf.test b/modules/nf-core/bedtools/bamtobed/tests/main.nf.test index 9c65ef7034d..297f1813362 100644 --- a/modules/nf-core/bedtools/bamtobed/tests/main.nf.test +++ b/modules/nf-core/bedtools/bamtobed/tests/main.nf.test @@ -14,7 +14,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) ] """ } @@ -38,7 +38,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bedtools/closest/environment.yml b/modules/nf-core/bedtools/closest/environment.yml index 77483654b94..5683bc05f23 100644 --- a/modules/nf-core/bedtools/closest/environment.yml +++ b/modules/nf-core/bedtools/closest/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_closest channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/closest/tests/main.nf.test b/modules/nf-core/bedtools/closest/tests/main.nf.test index f7cd320403d..f99ae18bad2 100644 --- a/modules/nf-core/bedtools/closest/tests/main.nf.test +++ b/modules/nf-core/bedtools/closest/tests/main.nf.test @@ -14,10 +14,10 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), [ - file(params.test_data['homo_sapiens']['genome']['genome_multi_interval_bed'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_21_multi_interval_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true) ] ] input[1] = [] @@ -40,10 +40,10 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_multi_interval_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', checkIfExists: true) ] - input[1] = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) """ } } @@ -63,10 +63,10 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true), [ - file(params.test_data['homo_sapiens']['genome']['dbsnp_146_hg38_vcf_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['gnomad_r2_1_1_vcf_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/gnomAD.r2.1.1.vcf.gz', checkIfExists: true) ] ] input[1] = [] diff --git a/modules/nf-core/bedtools/complement/environment.yml b/modules/nf-core/bedtools/complement/environment.yml index 396f3243324..5683bc05f23 100644 --- a/modules/nf-core/bedtools/complement/environment.yml +++ b/modules/nf-core/bedtools/complement/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_complement channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/complement/tests/main.nf.test b/modules/nf-core/bedtools/complement/tests/main.nf.test index e85c3969b14..b65c8fbf2f1 100644 --- a/modules/nf-core/bedtools/complement/tests/main.nf.test +++ b/modules/nf-core/bedtools/complement/tests/main.nf.test @@ -14,9 +14,9 @@ nextflow_process { """ input[0] = [ [ id:'test_out' ], // meta map - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_sizes'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true) """ } } diff --git a/modules/nf-core/bedtools/coverage/environment.yml b/modules/nf-core/bedtools/coverage/environment.yml index 016caf0151f..5683bc05f23 100644 --- a/modules/nf-core/bedtools/coverage/environment.yml +++ b/modules/nf-core/bedtools/coverage/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_coverage channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/coverage/tests/main.nf.test b/modules/nf-core/bedtools/coverage/tests/main.nf.test index b9db3042528..57eb83dec1a 100644 --- a/modules/nf-core/bedtools/coverage/tests/main.nf.test +++ b/modules/nf-core/bedtools/coverage/tests/main.nf.test @@ -15,8 +15,8 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) ] input[1] = [] """ @@ -38,10 +38,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) """ } } diff --git a/modules/nf-core/bedtools/genomecov/environment.yml b/modules/nf-core/bedtools/genomecov/environment.yml index 8fbe20c3122..5683bc05f23 100644 --- a/modules/nf-core/bedtools/genomecov/environment.yml +++ b/modules/nf-core/bedtools/genomecov/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_genomecov channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/genomecov/main.nf b/modules/nf-core/bedtools/genomecov/main.nf index 954e8913d3b..8403c530380 100644 --- a/modules/nf-core/bedtools/genomecov/main.nf +++ b/modules/nf-core/bedtools/genomecov/main.nf @@ -4,8 +4,8 @@ process BEDTOOLS_GENOMECOV { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bedtools:2.31.1--hf5e1c6e_0' : - 'biocontainers/bedtools:2.31.1--hf5e1c6e_0' }" + 'oras://community.wave.seqera.io/library/bedtools_coreutils:ba273c06a3909a15': + 'community.wave.seqera.io/library/bedtools_coreutils:a623c13f66d5262b' }" input: tuple val(meta), path(intervals), val(scale) @@ -21,13 +21,16 @@ process BEDTOOLS_GENOMECOV { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def args_list = args.tokenize() args += (scale > 0 && scale != 1) ? " -scale $scale" : "" if (!args_list.contains('-bg') && (scale > 0 && scale != 1)) { args += " -bg" } - def sort_cmd = sort ? '| bedtools sort' : '' + // Sorts output file by chromosome and position using additional options for performance and consistency + // See https://www.biostars.org/p/66927/ for further details + def buffer = task.memory ? "--buffer-size=${task.memory.toGiga().intdiv(2)}G" : '' + def sort_cmd = sort ? "| LC_ALL=C sort --parallel=$task.cpus $buffer -k1,1 -k2,2n" : '' def prefix = task.ext.prefix ?: "${meta.id}" if (intervals.name =~ /\.bam/) { diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test b/modules/nf-core/bedtools/genomecov/tests/main.nf.test index 8213cff956c..16a03492c43 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test @@ -9,10 +9,10 @@ nextflow_process { tag "bedtools" tag "bedtools/genomecov" - test("sarscov2 - no scale") { + test("sarscov2 - no scale") { when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -30,16 +30,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("no_scale") } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - dummy sizes") { when { process { - """ + """ input[0] = [ [ id:'test'], file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -57,16 +56,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("dummy_sizes") } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - scale") { when { process { - """ + """ input[0] = [ [ id:'test'], file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/baits.bed", checkIfExists: true), @@ -84,18 +82,17 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match("scale") } + { assert snapshot(process.out).match() } ) } - } - test("stub") { + test("sarscov2 - no scale - stub") { options "-stub" when { process { - """ + """ input[0] = [ [ id:'test' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), @@ -104,6 +101,34 @@ nextflow_process { // sizes input[1] = [] // extension + input[2] = "txt" + input[3] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - dummy sizes - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file('dummy_chromosome_sizes') + // extension input[2] = 'txt' input[3] = false """ @@ -113,10 +138,37 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.genomecov[0][1]).name).match("stub") } + { assert snapshot(process.out).match() } ) } + } + + test("sarscov2 - scale - stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + "genomics/sarscov2/genome/bed/baits.bed", checkIfExists: true), + 0.5 + ] + // sizes + input[1] = file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.sizes", checkIfExists: true) + // extension + input[2] = 'txt' + input[3] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } } diff --git a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap index 8f9191e4c13..da6dbe87571 100644 --- a/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap +++ b/modules/nf-core/bedtools/genomecov/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "dummy_sizes": { + "sarscov2 - dummy sizes": { "content": [ { "0": [ @@ -26,9 +26,13 @@ ] } ], - "timestamp": "2023-12-05T17:35:58.35232" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:33.898146" }, - "no_scale": { + "sarscov2 - no scale - stub": { "content": [ { "0": [ @@ -36,7 +40,7 @@ { "id": "test" }, - "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -47,7 +51,7 @@ { "id": "test" }, - "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -55,15 +59,46 @@ ] } ], - "timestamp": "2023-12-05T17:35:51.142496" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:52.483371" }, - "stub": { + "sarscov2 - scale": { "content": [ - "test.coverage.txt" + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } ], - "timestamp": "2023-12-05T17:36:13.084709" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:43.69501" }, - "scale": { + "sarscov2 - scale - stub": { "content": [ { "0": [ @@ -71,7 +106,7 @@ { "id": "test" }, - "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -82,7 +117,73 @@ { "id": "test" }, - "test.coverage.txt:md5,de3c59c0ea123bcdbbad27bc0a0a601e" + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:00:09.930036" + }, + "sarscov2 - no scale": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,66083198daca6c001d328ba9616e9b53" + ] + ], + "versions": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T11:59:25.448817" + }, + "sarscov2 - dummy sizes - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,5fd44452613992a6f71f2c73d2e117f2" + ], + "genomecov": [ + [ + { + "id": "test" + }, + "test.coverage.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -90,6 +191,10 @@ ] } ], - "timestamp": "2023-12-05T17:36:05.962006" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:00:01.086433" } } \ No newline at end of file diff --git a/modules/nf-core/bedtools/genomecov/tests/tags.yml b/modules/nf-core/bedtools/genomecov/tests/tags.yml deleted file mode 100644 index 55fce47800f..00000000000 --- a/modules/nf-core/bedtools/genomecov/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -bedtools/genomecov: - - "modules/nf-core/bedtools/genomecov/**" diff --git a/modules/nf-core/bedtools/getfasta/environment.yml b/modules/nf-core/bedtools/getfasta/environment.yml index a89401f2a3f..5683bc05f23 100644 --- a/modules/nf-core/bedtools/getfasta/environment.yml +++ b/modules/nf-core/bedtools/getfasta/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_getfasta channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/getfasta/tests/main.nf.test b/modules/nf-core/bedtools/getfasta/tests/main.nf.test index 4da7552c855..54ef4fc7ed0 100644 --- a/modules/nf-core/bedtools/getfasta/tests/main.nf.test +++ b/modules/nf-core/bedtools/getfasta/tests/main.nf.test @@ -16,10 +16,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -42,10 +42,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } diff --git a/modules/nf-core/bedtools/groupby/environment.yml b/modules/nf-core/bedtools/groupby/environment.yml index dab99ea1f24..5683bc05f23 100644 --- a/modules/nf-core/bedtools/groupby/environment.yml +++ b/modules/nf-core/bedtools/groupby/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_groupby channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/groupby/tests/main.nf.test b/modules/nf-core/bedtools/groupby/tests/main.nf.test new file mode 100644 index 00000000000..b7dedcc2aa5 --- /dev/null +++ b/modules/nf-core/bedtools/groupby/tests/main.nf.test @@ -0,0 +1,37 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_GROUPBY" + script "../main.nf" + process "BEDTOOLS_GROUPBY" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/groupby" + + test("test-bedtools-groupby") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + ] + input[1] = 5 + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/groupby/tests/main.nf.test.snap b/modules/nf-core/bedtools/groupby/tests/main.nf.test.snap new file mode 100644 index 00000000000..956487d0f5a --- /dev/null +++ b/modules/nf-core/bedtools/groupby/tests/main.nf.test.snap @@ -0,0 +1,37 @@ +{ + "test-bedtools-groupby": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.grouped.bed:md5,ba080b3d282f206f6312122c71a66745" + ] + ], + "1": [ + "versions.yml:md5,8f48acf848ff45a4fff4e10a806f29f5" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.grouped.bed:md5,ba080b3d282f206f6312122c71a66745" + ] + ], + "versions": [ + "versions.yml:md5,8f48acf848ff45a4fff4e10a806f29f5" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:10:16.714787" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/groupby/tests/nextflow.config b/modules/nf-core/bedtools/groupby/tests/nextflow.config new file mode 100644 index 00000000000..3b6019fb28d --- /dev/null +++ b/modules/nf-core/bedtools/groupby/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: BEDTOOLS_GROUPBY { + ext.args = "-g 1" + } +} diff --git a/modules/nf-core/bedtools/intersect/environment.yml b/modules/nf-core/bedtools/intersect/environment.yml index 2a343050893..5683bc05f23 100644 --- a/modules/nf-core/bedtools/intersect/environment.yml +++ b/modules/nf-core/bedtools/intersect/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_intersect channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/jaccard/environment.yml b/modules/nf-core/bedtools/jaccard/environment.yml index f0f2a38fcfd..5683bc05f23 100644 --- a/modules/nf-core/bedtools/jaccard/environment.yml +++ b/modules/nf-core/bedtools/jaccard/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_jaccard channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/jaccard/tests/main.nf.test b/modules/nf-core/bedtools/jaccard/tests/main.nf.test new file mode 100644 index 00000000000..839266b5fcc --- /dev/null +++ b/modules/nf-core/bedtools/jaccard/tests/main.nf.test @@ -0,0 +1,66 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_JACCARD" + script "../main.nf" + process "BEDTOOLS_JACCARD" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/jaccard" + + test("test-bedtools-jaccard") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ] + input[1] = [[],[]] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-bedtools-jaccard-genome") { + + config "./nextflow.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/jaccard/tests/main.nf.test.snap b/modules/nf-core/bedtools/jaccard/tests/main.nf.test.snap new file mode 100644 index 00000000000..4783d48960f --- /dev/null +++ b/modules/nf-core/bedtools/jaccard/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-bedtools-jaccard-genome": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,b737742026a3b512a494f3aa7935fded" + ] + ], + "1": [ + "versions.yml:md5,4d8267abd99c41fb6056d5162b380d23" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,b737742026a3b512a494f3aa7935fded" + ] + ], + "versions": [ + "versions.yml:md5,4d8267abd99c41fb6056d5162b380d23" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:08:36.70775" + }, + "test-bedtools-jaccard": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,b737742026a3b512a494f3aa7935fded" + ] + ], + "1": [ + "versions.yml:md5,4d8267abd99c41fb6056d5162b380d23" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,b737742026a3b512a494f3aa7935fded" + ] + ], + "versions": [ + "versions.yml:md5,4d8267abd99c41fb6056d5162b380d23" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:08:32.019101" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/jaccard/tests/nextflow.config b/modules/nf-core/bedtools/jaccard/tests/nextflow.config new file mode 100644 index 00000000000..5208fee9b6a --- /dev/null +++ b/modules/nf-core/bedtools/jaccard/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "BEDTOOLS_JACCARD" { + ext.args = "-sorted" + } +} diff --git a/modules/nf-core/bedtools/makewindows/environment.yml b/modules/nf-core/bedtools/makewindows/environment.yml index 0de3c15d07f..5683bc05f23 100644 --- a/modules/nf-core/bedtools/makewindows/environment.yml +++ b/modules/nf-core/bedtools/makewindows/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_makewindows channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/makewindows/tests/main.nf.test b/modules/nf-core/bedtools/makewindows/tests/main.nf.test new file mode 100644 index 00000000000..b27e59b6e04 --- /dev/null +++ b/modules/nf-core/bedtools/makewindows/tests/main.nf.test @@ -0,0 +1,58 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_MAKEWINDOWS" + script "../main.nf" + process "BEDTOOLS_MAKEWINDOWS" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/makewindows" + + test("test-bedtools-makewindows-bed") { + + when { + process { + """ + input[0] = [ + [ id:'test2'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-bedtools-makewindows-fai") { + + when { + process { + """ + input[0] = [ + [ id:'test2'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap b/modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap new file mode 100644 index 00000000000..22cfbc17253 --- /dev/null +++ b/modules/nf-core/bedtools/makewindows/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "test-bedtools-makewindows-fai": { + "content": [ + { + "0": [ + [ + { + "id": "test2" + }, + "test2.bed:md5,622d1f62786fe4239b76c53168f21c54" + ] + ], + "1": [ + "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + ], + "bed": [ + [ + { + "id": "test2" + }, + "test2.bed:md5,622d1f62786fe4239b76c53168f21c54" + ] + ], + "versions": [ + "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:03:31.430455" + }, + "test-bedtools-makewindows-bed": { + "content": [ + { + "0": [ + [ + { + "id": "test2" + }, + "test2.bed:md5,0cf6ed2b6f470cd44a247da74ca4fe4e" + ] + ], + "1": [ + "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + ], + "bed": [ + [ + { + "id": "test2" + }, + "test2.bed:md5,0cf6ed2b6f470cd44a247da74ca4fe4e" + ] + ], + "versions": [ + "versions.yml:md5,f797078cc8b8bac7e6906685d4867be5" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T14:03:27.118372" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/makewindows/tests/nextflow.config b/modules/nf-core/bedtools/makewindows/tests/nextflow.config new file mode 100644 index 00000000000..fa16733f166 --- /dev/null +++ b/modules/nf-core/bedtools/makewindows/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: BEDTOOLS_MAKEWINDOWS { + ext.args = '-w 50 ' + } +} diff --git a/modules/nf-core/bedtools/map/environment.yml b/modules/nf-core/bedtools/map/environment.yml index f61ee02833e..5683bc05f23 100644 --- a/modules/nf-core/bedtools/map/environment.yml +++ b/modules/nf-core/bedtools/map/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_map channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/map/tests/main.nf.test b/modules/nf-core/bedtools/map/tests/main.nf.test index 4adc0a21858..e46cf74377b 100644 --- a/modules/nf-core/bedtools/map/tests/main.nf.test +++ b/modules/nf-core/bedtools/map/tests/main.nf.test @@ -18,8 +18,8 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['test2_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test2.bed', checkIfExists: true) ] input[1] = [[],[]] """ @@ -42,8 +42,8 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_vcf'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true) ] input[1] = [[],[]] """ @@ -67,8 +67,8 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['test2_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test2.bed', checkIfExists: true) ] input[1] = [[],[]] """ diff --git a/modules/nf-core/bedtools/maskfasta/environment.yml b/modules/nf-core/bedtools/maskfasta/environment.yml index 71d18917def..5683bc05f23 100644 --- a/modules/nf-core/bedtools/maskfasta/environment.yml +++ b/modules/nf-core/bedtools/maskfasta/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_maskfasta channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/maskfasta/tests/main.nf.test b/modules/nf-core/bedtools/maskfasta/tests/main.nf.test new file mode 100644 index 00000000000..14dfc33e31a --- /dev/null +++ b/modules/nf-core/bedtools/maskfasta/tests/main.nf.test @@ -0,0 +1,35 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_MASKFASTA" + script "../main.nf" + process "BEDTOOLS_MASKFASTA" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/maskfasta" + + test("test-bedtools-maskfasta") { + + when { + process { + """ + input[0] = [ [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/maskfasta/tests/main.nf.test.snap b/modules/nf-core/bedtools/maskfasta/tests/main.nf.test.snap new file mode 100644 index 00000000000..48887161bcb --- /dev/null +++ b/modules/nf-core/bedtools/maskfasta/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-bedtools-maskfasta": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fa:md5,f4f6749698f11074228d2c79338e3b9c" + ] + ], + "1": [ + "versions.yml:md5,441689b51fc99b551e274857bb36445a" + ], + "fasta": [ + [ + { + "id": "test" + }, + "test.fa:md5,f4f6749698f11074228d2c79338e3b9c" + ] + ], + "versions": [ + "versions.yml:md5,441689b51fc99b551e274857bb36445a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T13:57:44.016613" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/merge/environment.yml b/modules/nf-core/bedtools/merge/environment.yml index 99707878b0f..5683bc05f23 100644 --- a/modules/nf-core/bedtools/merge/environment.yml +++ b/modules/nf-core/bedtools/merge/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/merge/tests/main.nf.test b/modules/nf-core/bedtools/merge/tests/main.nf.test index 95dba8e5497..2959d6b9825 100644 --- a/modules/nf-core/bedtools/merge/tests/main.nf.test +++ b/modules/nf-core/bedtools/merge/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] """ } diff --git a/modules/nf-core/bedtools/multiinter/environment.yml b/modules/nf-core/bedtools/multiinter/environment.yml index 27d9fddc77a..5683bc05f23 100644 --- a/modules/nf-core/bedtools/multiinter/environment.yml +++ b/modules/nf-core/bedtools/multiinter/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_multiinter channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/multiinter/tests/main.nf.test b/modules/nf-core/bedtools/multiinter/tests/main.nf.test new file mode 100644 index 00000000000..ed46cf0d3bc --- /dev/null +++ b/modules/nf-core/bedtools/multiinter/tests/main.nf.test @@ -0,0 +1,65 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_MULTIINTER" + script "../main.nf" + process "BEDTOOLS_MULTIINTER" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/multiinter" + + test("test-bedtools-multiinter") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test2.bed', checkIfExists: true) + ] + ] + input[1] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-bedtools-multiinter-genome") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test2.bed', checkIfExists: true) + ] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/multiinter/tests/main.nf.test.snap b/modules/nf-core/bedtools/multiinter/tests/main.nf.test.snap new file mode 100644 index 00000000000..14cad906c41 --- /dev/null +++ b/modules/nf-core/bedtools/multiinter/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-bedtools-multiinter": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,03d8d889a19cf26e038868775bbcbaa7" + ] + ], + "1": [ + "versions.yml:md5,d50d8662e6ba7227f29713a252d0b51c" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,03d8d889a19cf26e038868775bbcbaa7" + ] + ], + "versions": [ + "versions.yml:md5,d50d8662e6ba7227f29713a252d0b51c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T13:55:57.797405" + }, + "test-bedtools-multiinter-genome": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,03d8d889a19cf26e038868775bbcbaa7" + ] + ], + "1": [ + "versions.yml:md5,d50d8662e6ba7227f29713a252d0b51c" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed:md5,03d8d889a19cf26e038868775bbcbaa7" + ] + ], + "versions": [ + "versions.yml:md5,d50d8662e6ba7227f29713a252d0b51c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T13:56:02.192345" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/shift/environment.yml b/modules/nf-core/bedtools/shift/environment.yml index a83d89eb06e..5683bc05f23 100644 --- a/modules/nf-core/bedtools/shift/environment.yml +++ b/modules/nf-core/bedtools/shift/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_shift channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/shift/tests/main.nf.test b/modules/nf-core/bedtools/shift/tests/main.nf.test new file mode 100644 index 00000000000..5c251401aea --- /dev/null +++ b/modules/nf-core/bedtools/shift/tests/main.nf.test @@ -0,0 +1,36 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_SHIFT" + script "../main.nf" + process "BEDTOOLS_SHIFT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/shift" + + test("test-bedtools-shift") { + + when { + process { + """ + input[0] = [ [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + input[1] = [[id:'sizes'],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true)] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/shift/tests/main.nf.test.snap b/modules/nf-core/bedtools/shift/tests/main.nf.test.snap new file mode 100644 index 00000000000..8d5d6eba419 --- /dev/null +++ b/modules/nf-core/bedtools/shift/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-bedtools-shift": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,fdfa2c33084f1f8e42505076a449afdc" + ] + ], + "1": [ + "versions.yml:md5,1a2d22a8a7a1de74d4316895e2d97701" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,fdfa2c33084f1f8e42505076a449afdc" + ] + ], + "versions": [ + "versions.yml:md5,1a2d22a8a7a1de74d4316895e2d97701" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T13:53:47.543861" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/shift/tests/nextflow.config b/modules/nf-core/bedtools/shift/tests/nextflow.config new file mode 100644 index 00000000000..229ddd6bf8b --- /dev/null +++ b/modules/nf-core/bedtools/shift/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: BEDTOOLS_SHIFT { + ext.args = '-s 5' + ext.prefix = { "${meta.id}_out" } + } +} diff --git a/modules/nf-core/bedtools/slop/environment.yml b/modules/nf-core/bedtools/slop/environment.yml index e03ee963137..5683bc05f23 100644 --- a/modules/nf-core/bedtools/slop/environment.yml +++ b/modules/nf-core/bedtools/slop/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_slop channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/slop/tests/main.nf.test b/modules/nf-core/bedtools/slop/tests/main.nf.test new file mode 100644 index 00000000000..c8dccc8e6ed --- /dev/null +++ b/modules/nf-core/bedtools/slop/tests/main.nf.test @@ -0,0 +1,36 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_SLOP" + script "../main.nf" + process "BEDTOOLS_SLOP" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/slop" + + test("test-bedtools-slop") { + + when { + process { + """ + input[0] = [ [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/slop/tests/main.nf.test.snap b/modules/nf-core/bedtools/slop/tests/main.nf.test.snap new file mode 100644 index 00000000000..899ac21bac9 --- /dev/null +++ b/modules/nf-core/bedtools/slop/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-bedtools-slop": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,4f1d8924925fe5d205c9e1981fe290a4" + ] + ], + "1": [ + "versions.yml:md5,ee6210f0a2c4a60d9cad324bfe18e0cf" + ], + "bed": [ + [ + { + "id": "test" + }, + "test_out.bed:md5,4f1d8924925fe5d205c9e1981fe290a4" + ] + ], + "versions": [ + "versions.yml:md5,ee6210f0a2c4a60d9cad324bfe18e0cf" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T13:52:04.945029" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/slop/tests/nextflow.config b/modules/nf-core/bedtools/slop/tests/nextflow.config new file mode 100644 index 00000000000..fef7548168e --- /dev/null +++ b/modules/nf-core/bedtools/slop/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: BEDTOOLS_SLOP { + ext.args = '-l 15 -r 30' + ext.prefix = { "${meta.id}_out" } + } +} diff --git a/modules/nf-core/bedtools/sort/environment.yml b/modules/nf-core/bedtools/sort/environment.yml index 87b2e425257..5683bc05f23 100644 --- a/modules/nf-core/bedtools/sort/environment.yml +++ b/modules/nf-core/bedtools/sort/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_sort channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/split/environment.yml b/modules/nf-core/bedtools/split/environment.yml index 71912c7d5e4..5683bc05f23 100644 --- a/modules/nf-core/bedtools/split/environment.yml +++ b/modules/nf-core/bedtools/split/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_split channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/split/tests/main.nf.test b/modules/nf-core/bedtools/split/tests/main.nf.test new file mode 100644 index 00000000000..a59891b7936 --- /dev/null +++ b/modules/nf-core/bedtools/split/tests/main.nf.test @@ -0,0 +1,36 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_SPLIT" + script "../main.nf" + process "BEDTOOLS_SPLIT" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/split" + + test("test-bedtools-split") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.multi_intervals.bed', checkIfExists: true), + 2 + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/split/tests/main.nf.test.snap b/modules/nf-core/bedtools/split/tests/main.nf.test.snap new file mode 100644 index 00000000000..359b3aa93b7 --- /dev/null +++ b/modules/nf-core/bedtools/split/tests/main.nf.test.snap @@ -0,0 +1,41 @@ +{ + "test-bedtools-split": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test.00001.bed:md5,d58e5e46c2fcc3b8be5db0f023e93cb5", + "test.00002.bed:md5,03caf952e9297a54620d2bbba8dc2823" + ] + ] + ], + "1": [ + "versions.yml:md5,33e0d5f886b7f0ed6f9c3e19b049357f" + ], + "beds": [ + [ + { + "id": "test" + }, + [ + "test.00001.bed:md5,d58e5e46c2fcc3b8be5db0f023e93cb5", + "test.00002.bed:md5,03caf952e9297a54620d2bbba8dc2823" + ] + ] + ], + "versions": [ + "versions.yml:md5,33e0d5f886b7f0ed6f9c3e19b049357f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T13:50:28.137857" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/subtract/environment.yml b/modules/nf-core/bedtools/subtract/environment.yml index 083ba617d2b..5683bc05f23 100644 --- a/modules/nf-core/bedtools/subtract/environment.yml +++ b/modules/nf-core/bedtools/subtract/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_subtract channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bedtools/subtract/tests/main.nf.test b/modules/nf-core/bedtools/subtract/tests/main.nf.test new file mode 100644 index 00000000000..cc4729c8bf2 --- /dev/null +++ b/modules/nf-core/bedtools/subtract/tests/main.nf.test @@ -0,0 +1,36 @@ + +nextflow_process { + + name "Test Process BEDTOOLS_SUBTRACT" + script "../main.nf" + process "BEDTOOLS_SUBTRACT" + + tag "modules" + tag "modules_nfcore" + tag "bedtools" + tag "bedtools/subtract" + + test("test-bedtools-subtract") { + + when { + process { + """ + input[0] = [ + [ id:'test_subtract' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/baits.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bedtools/subtract/tests/main.nf.test.snap b/modules/nf-core/bedtools/subtract/tests/main.nf.test.snap new file mode 100644 index 00000000000..1dc0e6e7464 --- /dev/null +++ b/modules/nf-core/bedtools/subtract/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-bedtools-subtract": { + "content": [ + { + "0": [ + [ + { + "id": "test_subtract" + }, + "test_subtract.bed:md5,63513c4dc69e8b481ce3b4b2a9f24259" + ] + ], + "1": [ + "versions.yml:md5,1424765d0d00cc3f44f5e7745607effe" + ], + "bed": [ + [ + { + "id": "test_subtract" + }, + "test_subtract.bed:md5,63513c4dc69e8b481ce3b4b2a9f24259" + ] + ], + "versions": [ + "versions.yml:md5,1424765d0d00cc3f44f5e7745607effe" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-26T13:47:34.662548" + } +} \ No newline at end of file diff --git a/modules/nf-core/bedtools/unionbedg/environment.yml b/modules/nf-core/bedtools/unionbedg/environment.yml index 11f4c5424bc..5683bc05f23 100644 --- a/modules/nf-core/bedtools/unionbedg/environment.yml +++ b/modules/nf-core/bedtools/unionbedg/environment.yml @@ -1,7 +1,5 @@ -name: bedtools_unionbedg channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bedtools=2.31.1 diff --git a/modules/nf-core/bioawk/environment.yml b/modules/nf-core/bioawk/environment.yml index 5fdfd4176e9..527f6cd4b1c 100644 --- a/modules/nf-core/bioawk/environment.yml +++ b/modules/nf-core/bioawk/environment.yml @@ -1,7 +1,5 @@ -name: bioawk channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bioawk=1.0 diff --git a/modules/nf-core/bioawk/main.nf b/modules/nf-core/bioawk/main.nf index fbf9cfb23eb..a537dcf4a0d 100644 --- a/modules/nf-core/bioawk/main.nf +++ b/modules/nf-core/bioawk/main.nf @@ -20,7 +20,7 @@ process BIOAWK { script: def args = task.ext.args ?: '' // args is used for the main arguments of the tool prefix = task.ext.prefix ?: "${meta.id}" - + if ("${input}" == "${prefix}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" def VERSION = '1.0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ bioawk \\ diff --git a/modules/nf-core/bioawk/meta.yml b/modules/nf-core/bioawk/meta.yml index c9d0011182b..7af01582195 100644 --- a/modules/nf-core/bioawk/meta.yml +++ b/modules/nf-core/bioawk/meta.yml @@ -13,7 +13,7 @@ tools: homepage: "https://github.com/lh3/bioawk" documentation: "https://github.com/lh3/bioawk" tool_dev_url: "https://github.com/lh3/bioawk" - licence: "['Free software license (https://github.com/lh3/bioawk/blob/master/README.awk#L1)']" + licence: ["Free software license (https://github.com/lh3/bioawk/blob/master/README.awk#L1)"] input: - meta: type: map diff --git a/modules/nf-core/bioawk/tests/main.nf.test b/modules/nf-core/bioawk/tests/main.nf.test new file mode 100644 index 00000000000..270ff1ef3ec --- /dev/null +++ b/modules/nf-core/bioawk/tests/main.nf.test @@ -0,0 +1,35 @@ + +nextflow_process { + + name "Test Process BIOAWK" + script "../main.nf" + process "BIOAWK" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "bioawk" + + test("test-bioawk") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bioawk/tests/main.nf.test.snap b/modules/nf-core/bioawk/tests/main.nf.test.snap new file mode 100644 index 00000000000..fa9b59305fc --- /dev/null +++ b/modules/nf-core/bioawk/tests/main.nf.test.snap @@ -0,0 +1,37 @@ +{ + "test-bioawk": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "sample_1.fa.gz:md5,b558dd15d8940373a032a827d490e693" + ] + ], + "1": [ + "versions.yml:md5,5fe88e58a71f10551df56518c35ba91a" + ], + "output": [ + [ + { + "id": "test", + "single_end": false + }, + "sample_1.fa.gz:md5,b558dd15d8940373a032a827d490e693" + ] + ], + "versions": [ + "versions.yml:md5,5fe88e58a71f10551df56518c35ba91a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:24:46.397249" + } +} \ No newline at end of file diff --git a/modules/nf-core/bioawk/tests/nextflow.config b/modules/nf-core/bioawk/tests/nextflow.config new file mode 100644 index 00000000000..5ef017d9735 --- /dev/null +++ b/modules/nf-core/bioawk/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: BIOAWK { + ext.args = "-c fastx \'{print \">\" \$name ORS length(\$seq)}\'" + ext.prefix = "sample_1.fa" + } +} diff --git a/modules/nf-core/biobambam/bammarkduplicates2/environment.yml b/modules/nf-core/biobambam/bammarkduplicates2/environment.yml index 76e81cb0af6..eb19895afd0 100644 --- a/modules/nf-core/biobambam/bammarkduplicates2/environment.yml +++ b/modules/nf-core/biobambam/bammarkduplicates2/environment.yml @@ -1,7 +1,5 @@ -name: biobambam_bammarkduplicates2 channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biobambam=2.0.183 diff --git a/modules/nf-core/biobambam/bammarkduplicates2/main.nf b/modules/nf-core/biobambam/bammarkduplicates2/main.nf index ac9182d8479..fb29e6357ba 100644 --- a/modules/nf-core/biobambam/bammarkduplicates2/main.nf +++ b/modules/nf-core/biobambam/bammarkduplicates2/main.nf @@ -33,4 +33,16 @@ process BIOBAMBAM_BAMMARKDUPLICATES2 { bammarkduplicates2: \$(echo \$(bammarkduplicates2 --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' ) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam + touch ${prefix}.metrics.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bammarkduplicates2: \$(echo \$(bammarkduplicates2 --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test new file mode 100644 index 00000000000..954635ce801 --- /dev/null +++ b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test @@ -0,0 +1,63 @@ + +nextflow_process { + + name "Test Process BIOBAMBAM_BAMMARKDUPLICATES2" + script "../main.nf" + process "BIOBAMBAM_BAMMARKDUPLICATES2" + + tag "modules" + tag "modules_nfcore" + tag "biobambam" + tag "biobambam/bammarkduplicates2" + + test("test-biobambam-bammarkduplicates2") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + file(process.out.metrics[0][1]).readLines()[3..7], + process.out.versions + ).match() + } + ) + } + } + + test("test-biobambam-bammarkduplicates2-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test.snap b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test.snap new file mode 100644 index 00000000000..7973ee1eb5f --- /dev/null +++ b/modules/nf-core/biobambam/bammarkduplicates2/tests/main.nf.test.snap @@ -0,0 +1,75 @@ +{ + "test-biobambam-bammarkduplicates2": { + "content": [ + "762e859a3d0ed1553655cde77665c940", + [ + "LIBRARY\tUNPAIRED_READS_EXAMINED\tREAD_PAIRS_EXAMINED\tUNMAPPED_READS\tUNPAIRED_READ_DUPLICATES\tREAD_PAIR_DUPLICATES\tREAD_PAIR_OPTICAL_DUPLICATES\tPERCENT_DUPLICATION\tESTIMATED_LIBRARY_SIZE", + "lib1\t3\t97\t3\t0\t0\t0\t0\t-1", + "", + "## HISTOGRAM", + "BIN\tVALUE" + ], + [ + "versions.yml:md5,05d0569b6cbc14212ccdfac3b15128f3" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T09:48:22.747008" + }, + "test-biobambam-bammarkduplicates2-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,05d0569b6cbc14212ccdfac3b15128f3" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,05d0569b6cbc14212ccdfac3b15128f3" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T09:48:26.94941" + } +} \ No newline at end of file diff --git a/modules/nf-core/biobambam/bammerge/environment.yml b/modules/nf-core/biobambam/bammerge/environment.yml index 6eb5eee8cfb..eb19895afd0 100644 --- a/modules/nf-core/biobambam/bammerge/environment.yml +++ b/modules/nf-core/biobambam/bammerge/environment.yml @@ -1,7 +1,5 @@ -name: biobambam_bammerge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biobambam=2.0.183 diff --git a/modules/nf-core/biobambam/bammerge/meta.yml b/modules/nf-core/biobambam/bammerge/meta.yml index 8be274e161a..14433591300 100644 --- a/modules/nf-core/biobambam/bammerge/meta.yml +++ b/modules/nf-core/biobambam/bammerge/meta.yml @@ -3,6 +3,7 @@ description: Merge a list of sorted bam files keywords: - merge - bam + - sorted tools: - biobambam: description: | diff --git a/modules/nf-core/biobambam/bammerge/tests/main.nf.test b/modules/nf-core/biobambam/bammerge/tests/main.nf.test new file mode 100644 index 00000000000..0316229b858 --- /dev/null +++ b/modules/nf-core/biobambam/bammerge/tests/main.nf.test @@ -0,0 +1,75 @@ + +nextflow_process { + + name "Test Process BIOBAMBAM_BAMMERGE" + script "../main.nf" + process "BIOBAMBAM_BAMMERGE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "biobambam" + tag "biobambam/bammerge" + + test("test-biobambam-bammerge-paired") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + file(process.out.bam_index[0][1]).name, + process.out.checksum, + process.out.versions + ).match() + } + ) + } + } + + test("test-biobambam-bammerge-single") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true), + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + file(process.out.bam_index[0][1]).name, + process.out.checksum, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/biobambam/bammerge/tests/main.nf.test.snap b/modules/nf-core/biobambam/bammerge/tests/main.nf.test.snap new file mode 100644 index 00000000000..947cabfab82 --- /dev/null +++ b/modules/nf-core/biobambam/bammerge/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "test-biobambam-bammerge-paired": { + "content": [ + "b21a14064887edf38c798893228c30ba", + "test.bam.bai", + [ + [ + { + "id": "test", + "single_end": false + }, + "test.md5:md5,31c59857990ceb392242136429e30243" + ] + ], + [ + "versions.yml:md5,9a4e6cfa364f1f6ef9112fa248d66fea" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:28:49.100225" + }, + "test-biobambam-bammerge-single": { + "content": [ + "94fcf617f5b994584c4e8d4044e16b4f", + "test.bam.bai", + [ + [ + { + "id": "test", + "single_end": false + }, + "test.md5:md5,244a9d1cbc6d74724285c80220e5e427" + ] + ], + [ + "versions.yml:md5,9a4e6cfa364f1f6ef9112fa248d66fea" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:27:48.721949" + } +} \ No newline at end of file diff --git a/modules/nf-core/biobambam/bammerge/tests/nextflow.config b/modules/nf-core/biobambam/bammerge/tests/nextflow.config new file mode 100644 index 00000000000..ddf53e5f0dc --- /dev/null +++ b/modules/nf-core/biobambam/bammerge/tests/nextflow.config @@ -0,0 +1,10 @@ +process { + withName: BIOBAMBAM_BAMMERGE { + ext.args = {[ + "md5=1", + "md5filename=${meta.id}.md5", + "index=1", + "indexfilename=${meta.id}.bam.bai" + ].join(" ").trim()} + } +} diff --git a/modules/nf-core/biobambam/bamsormadup/environment.yml b/modules/nf-core/biobambam/bamsormadup/environment.yml index 4adac68be0b..eb19895afd0 100644 --- a/modules/nf-core/biobambam/bamsormadup/environment.yml +++ b/modules/nf-core/biobambam/bamsormadup/environment.yml @@ -1,7 +1,5 @@ -name: biobambam_bamsormadup channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biobambam=2.0.183 diff --git a/modules/nf-core/biobambam/bamsormadup/main.nf b/modules/nf-core/biobambam/bamsormadup/main.nf index dc25a3fae40..10bb1a7f2e8 100644 --- a/modules/nf-core/biobambam/bamsormadup/main.nf +++ b/modules/nf-core/biobambam/bamsormadup/main.nf @@ -48,4 +48,22 @@ process BIOBAMBAM_BAMSORMADUP { bamsormadup: \$(echo \$(bamsormadup --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = args.contains("outputformat=cram") ? "cram" : "bam" + if (args.contains("outputformat=cram") && reference == null) error "Reference required for CRAM output." + + """ + touch ${prefix}.${suffix} + touch ${prefix}.metrics.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bamcat: \$(echo \$(bamcat --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' ) + bamcollate2: \$(echo \$(bamcollate2 --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' ) + bamsormadup: \$(echo \$(bamsormadup --version 2>&1) | sed 's/^This is biobambam2 version //; s/..biobambam2 is .*\$//' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/biobambam/bamsormadup/tests/main.nf.test b/modules/nf-core/biobambam/bamsormadup/tests/main.nf.test new file mode 100644 index 00000000000..43272ff1604 --- /dev/null +++ b/modules/nf-core/biobambam/bamsormadup/tests/main.nf.test @@ -0,0 +1,105 @@ + +nextflow_process { + + name "Test Process BIOBAMBAM_BAMSORMADUP" + script "../main.nf" + process "BIOBAMBAM_BAMSORMADUP" + + tag "modules" + tag "modules_nfcore" + tag "biobambam" + tag "biobambam/bamsormadup" + + test("test-biobambam-bamsormadup-multi-input") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + ] + input[1] = [[:],[]] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.bam_index, + process.out.cram, + file(process.out.metrics[0][1]).readLines()[3..5], + process.out.versions + ).match() + } + ) + } + } + + test("test-biobambam-bamsormadup-single-input") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + ] + input[1] = [[:],[]] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.bam_index, + process.out.cram, + file(process.out.metrics[0][1]).readLines()[3..5], + process.out.versions + ).match() + } + ) + } + } + + test("test-biobambam-bamsormadup-single-input-stub") { + + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + ] + input[1] = [[:],[]] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/biobambam/bamsormadup/tests/main.nf.test.snap b/modules/nf-core/biobambam/bamsormadup/tests/main.nf.test.snap new file mode 100644 index 00000000000..f7a41ca6fff --- /dev/null +++ b/modules/nf-core/biobambam/bamsormadup/tests/main.nf.test.snap @@ -0,0 +1,115 @@ +{ + "test-biobambam-bamsormadup-single-input": { + "content": [ + "e296148e4f68882cc91fb624e392f539", + [ + + ], + [ + + ], + [ + "LIBRARY\tUNPAIRED_READS_EXAMINED\tREAD_PAIRS_EXAMINED\tUNMAPPED_READS\tUNPAIRED_READ_DUPLICATES\tREAD_PAIR_DUPLICATES\tREAD_PAIR_OPTICAL_DUPLICATES\tPERCENT_DUPLICATION\tESTIMATED_LIBRARY_SIZE", + "lib1\t3\t97\t3\t0\t0\t0\t0\t-1", + "" + ], + [ + "versions.yml:md5,67ab301f20567acd9d0e648c2a3e158c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T22:00:39.772883" + }, + "test-biobambam-bamsormadup-multi-input": { + "content": [ + "3dc03384b330e3f16e15691c9189e890", + [ + + ], + [ + + ], + [ + "LIBRARY\tUNPAIRED_READS_EXAMINED\tREAD_PAIRS_EXAMINED\tUNMAPPED_READS\tUNPAIRED_READ_DUPLICATES\tREAD_PAIR_DUPLICATES\tREAD_PAIR_OPTICAL_DUPLICATES\tPERCENT_DUPLICATION\tESTIMATED_LIBRARY_SIZE", + "lib1\t3\t97\t3\t0\t0\t0\t0\t-1", + "testN\t0\t2820\t2\t0\t828\t0\t0.293617\t3807" + ], + [ + "versions.yml:md5,67ab301f20567acd9d0e648c2a3e158c" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T22:00:31.187999" + }, + "test-biobambam-bamsormadup-single-input-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,67ab301f20567acd9d0e648c2a3e158c" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bam_index": [ + + ], + "cram": [ + + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.metrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,67ab301f20567acd9d0e648c2a3e158c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T21:57:13.430982" + } +} \ No newline at end of file diff --git a/modules/nf-core/biohansel/environment.yml b/modules/nf-core/biohansel/environment.yml index 7ef2a3dc799..b20be7488bf 100644 --- a/modules/nf-core/biohansel/environment.yml +++ b/modules/nf-core/biohansel/environment.yml @@ -1,7 +1,5 @@ -name: biohansel channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bio_hansel=2.6.1 diff --git a/modules/nf-core/biohansel/meta.yml b/modules/nf-core/biohansel/meta.yml index e3ffc82e679..41aa8b6ee8e 100644 --- a/modules/nf-core/biohansel/meta.yml +++ b/modules/nf-core/biohansel/meta.yml @@ -11,7 +11,7 @@ tools: documentation: "https://github.com/phac-nml/biohansel" tool_dev_url: "https://github.com/phac-nml/biohansel" doi: "10.1101/2020.01.10.902056" - licence: "['Apache-2.0 license']" + licence: ["Apache-2.0 license"] input: - meta: type: map diff --git a/modules/nf-core/biscuit/align/environment.yml b/modules/nf-core/biscuit/align/environment.yml index 90e26ee680e..b4bab59944c 100644 --- a/modules/nf-core/biscuit/align/environment.yml +++ b/modules/nf-core/biscuit/align/environment.yml @@ -1,8 +1,6 @@ -name: biscuit_align channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/biscuit/align/tests/main.nf.test b/modules/nf-core/biscuit/align/tests/main.nf.test index e7b68171b1f..1dc3eb3faca 100644 --- a/modules/nf-core/biscuit/align/tests/main.nf.test +++ b/modules/nf-core/biscuit/align/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { script "../../index/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -28,7 +28,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true) ] ] input[1] = BISCUIT_INDEX.out.index """ @@ -52,8 +52,8 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_methylated_2_fastq_gz'], checkIfExists: true) ] + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_2.fastq.gz', checkIfExists: true) ] ] input[1] = BISCUIT_INDEX.out.index """ diff --git a/modules/nf-core/biscuit/biscuitblaster/environment.yml b/modules/nf-core/biscuit/biscuitblaster/environment.yml index 1cf1fbc0f2e..ba50e31d11c 100644 --- a/modules/nf-core/biscuit/biscuitblaster/environment.yml +++ b/modules/nf-core/biscuit/biscuitblaster/environment.yml @@ -1,8 +1,6 @@ -name: biscuit_blaster channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 - bioconda::samblaster=0.1.26 diff --git a/modules/nf-core/biscuit/bsconv/environment.yml b/modules/nf-core/biscuit/bsconv/environment.yml index 937dbadfba0..56b7e967693 100644 --- a/modules/nf-core/biscuit/bsconv/environment.yml +++ b/modules/nf-core/biscuit/bsconv/environment.yml @@ -1,7 +1,5 @@ -name: biscuit_bsconv channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 diff --git a/modules/nf-core/biscuit/bsconv/tests/main.nf.test b/modules/nf-core/biscuit/bsconv/tests/main.nf.test index d62b9411df2..1cbf306a88b 100644 --- a/modules/nf-core/biscuit/bsconv/tests/main.nf.test +++ b/modules/nf-core/biscuit/bsconv/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { script "../../index/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -27,8 +27,8 @@ nextflow_process { process { """ input[0] = [ [id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true) ] input[1] = BISCUIT_INDEX.out.index @@ -54,8 +54,8 @@ nextflow_process { process { """ input[0] = [ [id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_sorted_bam_bai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true) ] input[1] = BISCUIT_INDEX.out.index diff --git a/modules/nf-core/biscuit/epiread/environment.yml b/modules/nf-core/biscuit/epiread/environment.yml index 2d7915474bd..b4bab59944c 100644 --- a/modules/nf-core/biscuit/epiread/environment.yml +++ b/modules/nf-core/biscuit/epiread/environment.yml @@ -1,8 +1,6 @@ -name: biscuit_epiread channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/biscuit/epiread/main.nf b/modules/nf-core/biscuit/epiread/main.nf index d3254e648b9..8eeb675c09c 100644 --- a/modules/nf-core/biscuit/epiread/main.nf +++ b/modules/nf-core/biscuit/epiread/main.nf @@ -54,4 +54,19 @@ process BISCUIT_EPIREAD { samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def unzipped_snp_bed = snp_bed ? snp_bed.toString() - ~/\.gz$/: "" + def options_snp_bed = snp_bed ? "-B ${unzipped_snp_bed}" : "" + if ("$options_snp_bed" == "${prefix}.bed.gz") error "Input and output names for biscuit epiread are the same, set prefix in module configuration to disambiguate!" + """ + echo | gzip > ${prefix}.bed.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/biscuit/epiread/tests/main.nf.test b/modules/nf-core/biscuit/epiread/tests/main.nf.test new file mode 100644 index 00000000000..5a151008afa --- /dev/null +++ b/modules/nf-core/biscuit/epiread/tests/main.nf.test @@ -0,0 +1,125 @@ +nextflow_process { + + name "Test Process BISCUIT_EPIREAD" + script "../main.nf" + process "BISCUIT_EPIREAD" + + tag "modules" + tag "modules_nfcore" + tag "biscuit" + tag "biscuit/epiread" + tag "biscuit/index" + + setup { + run("BISCUIT_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + """ + } + } + } + + test("sarscov2 - test_paired_end_methylated_sorted_bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true), + [] //SNP BED file + ] + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - test_paired_end_methylated_sorted_bam - snp") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test-snp.bed') + ] + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - test_paired_end_methylated_sorted_bam - snp - gz") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test-snp.bed.gz') + ] + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - test_paired_end_methylated_sorted_bam - snp - gz - stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam.bai', checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test-snp.bed.gz') + ] + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/biscuit/epiread/tests/main.nf.test.snap b/modules/nf-core/biscuit/epiread/tests/main.nf.test.snap new file mode 100644 index 00000000000..1a64679d465 --- /dev/null +++ b/modules/nf-core/biscuit/epiread/tests/main.nf.test.snap @@ -0,0 +1,142 @@ +{ + "sarscov2 - test_paired_end_methylated_sorted_bam - snp - gz": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,f2c701470965f9a93c45524e9e460509" + ] + ], + "1": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ], + "epiread_bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,f2c701470965f9a93c45524e9e460509" + ] + ], + "versions": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:55:24.162952" + }, + "sarscov2 - test_paired_end_methylated_sorted_bam - snp": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,f2c701470965f9a93c45524e9e460509" + ] + ], + "1": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ], + "epiread_bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,f2c701470965f9a93c45524e9e460509" + ] + ], + "versions": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:55:17.32731" + }, + "sarscov2 - test_paired_end_methylated_sorted_bam": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,3f60061464bd1c282bce0dc6478f8738" + ] + ], + "1": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ], + "epiread_bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,3f60061464bd1c282bce0dc6478f8738" + ] + ], + "versions": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:55:09.919651" + }, + "sarscov2 - test_paired_end_methylated_sorted_bam - snp - gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ], + "epiread_bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,aba0dae715c3208d621eff05bfff02d3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:55:29.932067" + } +} \ No newline at end of file diff --git a/modules/nf-core/biscuit/index/environment.yml b/modules/nf-core/biscuit/index/environment.yml index 66b9fde82f6..56b7e967693 100644 --- a/modules/nf-core/biscuit/index/environment.yml +++ b/modules/nf-core/biscuit/index/environment.yml @@ -1,7 +1,5 @@ -name: biscuit_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 diff --git a/modules/nf-core/biscuit/index/main.nf b/modules/nf-core/biscuit/index/main.nf index 5ed6a417530..43566fc4b50 100644 --- a/modules/nf-core/biscuit/index/main.nf +++ b/modules/nf-core/biscuit/index/main.nf @@ -30,4 +30,22 @@ process BISCUIT_INDEX { biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + """ + + touch ${fasta}.bis.amb + touch ${fasta}.bis.ann + touch ${fasta}.bis.pac + touch ${fasta}.dau.bwt + touch ${fasta}.dau.sa + touch ${fasta}.par.bwt + touch ${fasta}.par.sa + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/biscuit/index/meta.yml b/modules/nf-core/biscuit/index/meta.yml index d7a7d449c1b..549857e6d14 100644 --- a/modules/nf-core/biscuit/index/meta.yml +++ b/modules/nf-core/biscuit/index/meta.yml @@ -22,7 +22,7 @@ input: description: Input genome fasta file output: - index: - type: dir + type: directory description: Biscuit genome index directory pattern: "BiscuitIndex" - versions: diff --git a/modules/nf-core/biscuit/index/tests/main.nf.test b/modules/nf-core/biscuit/index/tests/main.nf.test new file mode 100644 index 00000000000..0402a262200 --- /dev/null +++ b/modules/nf-core/biscuit/index/tests/main.nf.test @@ -0,0 +1,52 @@ + +nextflow_process { + + name "Test Process BISCUIT_INDEX" + script "../main.nf" + process "BISCUIT_INDEX" + + tag "modules" + tag "modules_nfcore" + tag "biscuit" + tag "biscuit/index" + + test("test-biscuit-index") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-biscuit-index-stub") { + options '-stub' + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/biscuit/index/tests/main.nf.test.snap b/modules/nf-core/biscuit/index/tests/main.nf.test.snap new file mode 100644 index 00000000000..698fc7e4bd8 --- /dev/null +++ b/modules/nf-core/biscuit/index/tests/main.nf.test.snap @@ -0,0 +1,84 @@ +{ + "test-biscuit-index": { + "content": [ + { + "0": [ + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.bis.amb:md5,3a68b8b2287e07dd3f5f95f4344ba76e", + "genome.fasta.bis.ann:md5,c32e11f6c859f166c7525a9c1d583567", + "genome.fasta.bis.pac:md5,983e3d2cd6f36e2546e6d25a0da78d66", + "genome.fasta.dau.bwt:md5,a11bc31775f7b7a4f9cd3bc4f981661a", + "genome.fasta.dau.sa:md5,9c9e07fa1c75ef32d764274579c89b08", + "genome.fasta.par.bwt:md5,62eb83cd557a47b59589713d98024fc2", + "genome.fasta.par.sa:md5,55bcd97d7059bf73dc0d221e36e8e901" + ] + ], + "1": [ + "versions.yml:md5,067af0790b982d7524b24ba17e1dece7" + ], + "index": [ + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.bis.amb:md5,3a68b8b2287e07dd3f5f95f4344ba76e", + "genome.fasta.bis.ann:md5,c32e11f6c859f166c7525a9c1d583567", + "genome.fasta.bis.pac:md5,983e3d2cd6f36e2546e6d25a0da78d66", + "genome.fasta.dau.bwt:md5,a11bc31775f7b7a4f9cd3bc4f981661a", + "genome.fasta.dau.sa:md5,9c9e07fa1c75ef32d764274579c89b08", + "genome.fasta.par.bwt:md5,62eb83cd557a47b59589713d98024fc2", + "genome.fasta.par.sa:md5,55bcd97d7059bf73dc0d221e36e8e901" + ] + ], + "versions": [ + "versions.yml:md5,067af0790b982d7524b24ba17e1dece7" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:33:50.146795" + }, + "test-biscuit-index-stub": { + "content": [ + { + "0": [ + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.bis.amb:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.bis.ann:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.bis.pac:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.dau.bwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.dau.sa:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.par.bwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.par.sa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,067af0790b982d7524b24ba17e1dece7" + ], + "index": [ + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.bis.amb:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.bis.ann:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.bis.pac:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.dau.bwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.dau.sa:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.par.bwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "genome.fasta.par.sa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,067af0790b982d7524b24ba17e1dece7" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T10:49:18.069711" + } +} \ No newline at end of file diff --git a/modules/nf-core/biscuit/mergecg/environment.yml b/modules/nf-core/biscuit/mergecg/environment.yml index eb9d77b4a1f..b4bab59944c 100644 --- a/modules/nf-core/biscuit/mergecg/environment.yml +++ b/modules/nf-core/biscuit/mergecg/environment.yml @@ -1,8 +1,6 @@ -name: biscuit_mergecg channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/biscuit/pileup/environment.yml b/modules/nf-core/biscuit/pileup/environment.yml index 60132b4def8..b4bab59944c 100644 --- a/modules/nf-core/biscuit/pileup/environment.yml +++ b/modules/nf-core/biscuit/pileup/environment.yml @@ -1,8 +1,6 @@ -name: biscuit_pileup channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/biscuit/pileup/main.nf b/modules/nf-core/biscuit/pileup/main.nf index 43b151c3737..dbbd6ffa2d5 100644 --- a/modules/nf-core/biscuit/pileup/main.nf +++ b/modules/nf-core/biscuit/pileup/main.nf @@ -42,4 +42,15 @@ process BISCUIT_PILEUP { biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo | gzip > ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/biscuit/pileup/tests/main.nf.test b/modules/nf-core/biscuit/pileup/tests/main.nf.test new file mode 100644 index 00000000000..b188103a06f --- /dev/null +++ b/modules/nf-core/biscuit/pileup/tests/main.nf.test @@ -0,0 +1,120 @@ +nextflow_process { + + name "Test Process BISCUIT_PILEUP" + script "../main.nf" + process "BISCUIT_PILEUP" + + tag "modules" + tag "modules_nfcore" + tag "biscuit" + tag "biscuit/pileup" + tag "biscuit/index" + + setup { + run("BISCUIT_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + """ + } + } + } + + test("homo_sapiens - test_paired_end_sorted_bam") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [], // tumor bam + [] // tumor bai + ] + + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.versions + ).match() + } + ) + } + + } + + test("homo_sapiens - test_paired_end_sorted_bam - somatic") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ] + + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + path(process.out.vcf[0][1]).vcf.variantsMD5, + process.out.versions + ).match() + } + ) + } + + } + + test("homo_sapiens - test_paired_end_sorted_bam - somatic - stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ] + + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/biscuit/pileup/tests/main.nf.test.snap b/modules/nf-core/biscuit/pileup/tests/main.nf.test.snap new file mode 100644 index 00000000000..ca99df65997 --- /dev/null +++ b/modules/nf-core/biscuit/pileup/tests/main.nf.test.snap @@ -0,0 +1,61 @@ +{ + "homo_sapiens - test_paired_end_sorted_bam - somatic": { + "content": [ + "12357b78693a704403196644b34d69a6", + [ + "versions.yml:md5,d73c753b5bbc7439f06fba6c1794f719" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:43:13.955407" + }, + "homo_sapiens - test_paired_end_sorted_bam": { + "content": [ + "4ae9e1f5d3dbe07aca279680840bbe20", + [ + "versions.yml:md5,d73c753b5bbc7439f06fba6c1794f719" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:41:00.666921" + }, + "homo_sapiens - test_paired_end_sorted_bam - somatic - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d73c753b5bbc7439f06fba6c1794f719" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d73c753b5bbc7439f06fba6c1794f719" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:43:19.616012" + } +} \ No newline at end of file diff --git a/modules/nf-core/biscuit/qc/environment.yml b/modules/nf-core/biscuit/qc/environment.yml index 9e9f3a26b5f..56b7e967693 100644 --- a/modules/nf-core/biscuit/qc/environment.yml +++ b/modules/nf-core/biscuit/qc/environment.yml @@ -1,7 +1,5 @@ -name: biscuit_qc channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 diff --git a/modules/nf-core/biscuit/qc/main.nf b/modules/nf-core/biscuit/qc/main.nf index 701ff769ca6..0ac7bd9eeab 100644 --- a/modules/nf-core/biscuit/qc/main.nf +++ b/modules/nf-core/biscuit/qc/main.nf @@ -37,4 +37,22 @@ process BISCUIT_QC { biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}_CpGRetentionByReadPos.txt + touch ${prefix}_CpHRetentionByReadPos.txt + touch ${prefix}_dup_report.txt + touch ${prefix}_isize_table.txt + touch ${prefix}_mapq_table.txt + touch ${prefix}_strand_table.txt + touch ${prefix}_totalReadConversionRate.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$( biscuit version |& sed '1!d; s/^.*BISCUIT Version: //' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/biscuit/qc/tests/main.nf.test b/modules/nf-core/biscuit/qc/tests/main.nf.test new file mode 100644 index 00000000000..d4b4e57ad47 --- /dev/null +++ b/modules/nf-core/biscuit/qc/tests/main.nf.test @@ -0,0 +1,70 @@ +nextflow_process { + + name "Test Process BISCUIT_QC" + script "../main.nf" + process "BISCUIT_QC" + + tag "modules" + tag "modules_nfcore" + tag "biscuit" + tag "biscuit/qc" + tag "biscuit/index" + + setup { + run("BISCUIT_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + """ + } + } + } + + test("sarscov2 - test_paired_end_methylated_sorted_bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true) + ] + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - test_paired_end_methylated_sorted_bam - stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.sorted.bam', checkIfExists: true) + ] + input[1] = BISCUIT_INDEX.out.index + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/biscuit/qc/tests/main.nf.test.snap b/modules/nf-core/biscuit/qc/tests/main.nf.test.snap new file mode 100644 index 00000000000..51c995d9e5b --- /dev/null +++ b/modules/nf-core/biscuit/qc/tests/main.nf.test.snap @@ -0,0 +1,104 @@ +{ + "sarscov2 - test_paired_end_methylated_sorted_bam": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_CpGRetentionByReadPos.txt:md5,498b6c0af196fb34c8835371b9e9b68a", + "test_CpHRetentionByReadPos.txt:md5,a266942c5719cecab7f60f63cbe7335d", + "test_dup_report.txt:md5,65bddf4fbe9e40d7c6c976060df53e3b", + "test_isize_table.txt:md5,aadf6f2e271abc334b6146cf164bdda3", + "test_mapq_table.txt:md5,c8adaac84bb8db3b7f48e1ed4fccad00", + "test_strand_table.txt:md5,27068382ba6b2dbf313169a85c9dbb3a", + "test_totalReadConversionRate.txt:md5,8f0c1fceaebfa74f2757720e3bc85fed" + ] + ] + ], + "1": [ + "versions.yml:md5,c9bca700bf29bd9d02fc254fe070e279" + ], + "biscuit_qc_reports": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_CpGRetentionByReadPos.txt:md5,498b6c0af196fb34c8835371b9e9b68a", + "test_CpHRetentionByReadPos.txt:md5,a266942c5719cecab7f60f63cbe7335d", + "test_dup_report.txt:md5,65bddf4fbe9e40d7c6c976060df53e3b", + "test_isize_table.txt:md5,aadf6f2e271abc334b6146cf164bdda3", + "test_mapq_table.txt:md5,c8adaac84bb8db3b7f48e1ed4fccad00", + "test_strand_table.txt:md5,27068382ba6b2dbf313169a85c9dbb3a", + "test_totalReadConversionRate.txt:md5,8f0c1fceaebfa74f2757720e3bc85fed" + ] + ] + ], + "versions": [ + "versions.yml:md5,c9bca700bf29bd9d02fc254fe070e279" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:27:13.208945" + }, + "sarscov2 - test_paired_end_methylated_sorted_bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_CpGRetentionByReadPos.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_CpHRetentionByReadPos.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_dup_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_isize_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_mapq_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_strand_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_totalReadConversionRate.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,c9bca700bf29bd9d02fc254fe070e279" + ], + "biscuit_qc_reports": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_CpGRetentionByReadPos.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_CpHRetentionByReadPos.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_dup_report.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_isize_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_mapq_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_strand_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_totalReadConversionRate.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,c9bca700bf29bd9d02fc254fe070e279" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:30:49.37928" + } +} \ No newline at end of file diff --git a/modules/nf-core/biscuit/vcf2bed/environment.yml b/modules/nf-core/biscuit/vcf2bed/environment.yml index ed6dca0cde9..b4bab59944c 100644 --- a/modules/nf-core/biscuit/vcf2bed/environment.yml +++ b/modules/nf-core/biscuit/vcf2bed/environment.yml @@ -1,8 +1,6 @@ -name: biscuit_vcf2bed channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::biscuit=1.1.0.20220707 - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/biscuit/vcf2bed/main.nf b/modules/nf-core/biscuit/vcf2bed/main.nf index ea8c85dc5d0..f2ba512ef63 100644 --- a/modules/nf-core/biscuit/vcf2bed/main.nf +++ b/modules/nf-core/biscuit/vcf2bed/main.nf @@ -36,4 +36,16 @@ process BISCUIT_VCF2BED { samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo | gzip > ${prefix}.bed.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + biscuit: \$(echo \$(biscuit version 2>&1) | sed 's/^.*BISCUIT Version: //; s/Using.*\$//') + samtools: \$( samtools --version |& sed '1!d; s/^.*samtools //' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/biscuit/vcf2bed/tests/main.nf.test b/modules/nf-core/biscuit/vcf2bed/tests/main.nf.test new file mode 100644 index 00000000000..527f0c0ff4f --- /dev/null +++ b/modules/nf-core/biscuit/vcf2bed/tests/main.nf.test @@ -0,0 +1,58 @@ + +nextflow_process { + + name "Test Process BISCUIT_VCF2BED" + script "../main.nf" + process "BISCUIT_VCF2BED" + + tag "modules" + tag "modules_nfcore" + tag "biscuit" + tag "biscuit/vcf2bed" + + test("test-biscuit-vcf2bed") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test.vcf.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-biscuit-vcf2bed-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/biscuit/test.vcf.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/biscuit/vcf2bed/tests/main.nf.test.snap b/modules/nf-core/biscuit/vcf2bed/tests/main.nf.test.snap new file mode 100644 index 00000000000..fd232298b85 --- /dev/null +++ b/modules/nf-core/biscuit/vcf2bed/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-biscuit-vcf2bed": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,508c6eb4e7b3e3c90c3b514a8cd2ced4" + ] + ], + "1": [ + "versions.yml:md5,8626f51de333380e99cc607aaebb2cce" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,508c6eb4e7b3e3c90c3b514a8cd2ced4" + ] + ], + "versions": [ + "versions.yml:md5,8626f51de333380e99cc607aaebb2cce" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:02:38.571195" + }, + "test-biscuit-vcf2bed-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,8626f51de333380e99cc607aaebb2cce" + ], + "bed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,8626f51de333380e99cc607aaebb2cce" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:02:43.49219" + } +} \ No newline at end of file diff --git a/modules/nf-core/bismark/align/environment.yml b/modules/nf-core/bismark/align/environment.yml index d7cb8a298bf..fbc3fdf202c 100644 --- a/modules/nf-core/bismark/align/environment.yml +++ b/modules/nf-core/bismark/align/environment.yml @@ -1,7 +1,5 @@ -name: bismark_align channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bismark=0.24.0 diff --git a/modules/nf-core/bismark/align/meta.yml b/modules/nf-core/bismark/align/meta.yml index 03b9826e4aa..69fe455a4af 100644 --- a/modules/nf-core/bismark/align/meta.yml +++ b/modules/nf-core/bismark/align/meta.yml @@ -31,7 +31,7 @@ input: List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. - index: - type: dir + type: directory description: Bismark genome index directory pattern: "BismarkIndex" output: diff --git a/modules/nf-core/bismark/align/tests/main.nf.test b/modules/nf-core/bismark/align/tests/main.nf.test index 071395567c1..d6fac9f8821 100644 --- a/modules/nf-core/bismark/align/tests/main.nf.test +++ b/modules/nf-core/bismark/align/tests/main.nf.test @@ -3,10 +3,11 @@ nextflow_process { name "Test Process BISMARK_ALIGN" script "../main.nf" process "BISMARK_ALIGN" - tag "bismark" - tag "bismark/align" tag "modules" tag "modules_nfcore" + tag "bismark" + tag "bismark/align" + tag "bismark/genomepreparation" test("Should run bismark/align (bowtie2 single end) without failures") { config './nextflow_bowtie2.config' @@ -16,7 +17,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -30,7 +31,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true) ] input[1] = BISMARK_GENOMEPREPARATION.out.index """ @@ -40,9 +41,6 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.bam).match("bam_bt2_se") }, - { assert snapshot(process.out.unmapped).match("unmapped_bt2_se") }, - { assert snapshot(process.out.versions).match("versions") }, { with(process.out.report) { with(get(0)) { @@ -50,6 +48,12 @@ nextflow_process { assert path(get(1)).readLines().last().contains("Bismark completed in") } } + }, + { assert snapshot( + process.out.bam.collect { bam(it[1]).getReadsMD5() }, + process.out.unmapped, + process.out.versions + ).match() } ) } @@ -63,7 +67,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -76,9 +80,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_methylated_2_fastq_gz'], checkIfExists: true) + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_2.fastq.gz', checkIfExists: true) ] ] input[1] = BISMARK_GENOMEPREPARATION.out.index @@ -89,9 +93,6 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.bam).match("bam_bt2_pe") }, - { assert snapshot(process.out.unmapped).match("unmapped_bt2_pe") }, - { assert snapshot(process.out.versions).match("versions") }, { with(process.out.report) { with(get(0)) { @@ -99,6 +100,12 @@ nextflow_process { assert path(get(1)).readLines().last().contains("Bismark completed in") } } + }, + { assert snapshot( + process.out.bam.collect { bam(it[1]).getReadsMD5() }, + process.out.unmapped, + process.out.versions + ).match() } ) } @@ -112,7 +119,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -126,7 +133,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true) ] input[1] = BISMARK_GENOMEPREPARATION.out.index """ @@ -136,9 +143,6 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.bam).match("bam_hisat2_se") }, - { assert snapshot(process.out.unmapped).match("unmapped_hisat2_se") }, - { assert snapshot(process.out.versions).match("versions") }, { with(process.out.report) { with(get(0)) { @@ -146,6 +150,12 @@ nextflow_process { assert path(get(1)).readLines().last().contains("Bismark completed in") } } + }, + { assert snapshot( + process.out.bam.collect { bam(it[1]).getReadsMD5() }, + process.out.unmapped, + process.out.versions + ).match() } ) } @@ -159,7 +169,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -173,9 +183,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_methylated_2_fastq_gz'], checkIfExists: true) + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_2.fastq.gz', checkIfExists: true) ] ] input[1] = BISMARK_GENOMEPREPARATION.out.index @@ -186,9 +196,6 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.bam).match("bam_hisat2_pe") }, - { assert snapshot(process.out.unmapped).match("unmapped_hisat2_pe") }, - { assert snapshot(process.out.versions).match("versions") }, { with(process.out.report) { with(get(0)) { @@ -196,6 +203,12 @@ nextflow_process { assert path(get(1)).readLines().last().contains("Bismark completed in") } } + }, + { assert snapshot( + process.out.bam.collect { bam(it[1]).getReadsMD5() }, + process.out.unmapped, + process.out.versions + ).match() } ) } @@ -209,7 +222,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -223,7 +236,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], - file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true) ] input[1] = BISMARK_GENOMEPREPARATION.out.index """ @@ -233,9 +246,6 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.bam).match("bam_minimap2_se") }, - { assert snapshot(process.out.unmapped).match("unmapped_minimap2_se") }, - { assert snapshot(process.out.versions).match("versions") }, { with(process.out.report) { with(get(0)) { @@ -243,6 +253,12 @@ nextflow_process { assert path(get(1)).readLines().last().contains("Bismark completed in") } } + }, + { assert snapshot( + process.out.bam.collect { bam(it[1]).getReadsMD5() }, + process.out.unmapped, + process.out.versions + ).match() } ) } diff --git a/modules/nf-core/bismark/align/tests/main.nf.test.snap b/modules/nf-core/bismark/align/tests/main.nf.test.snap index f132e070725..66b89918bf8 100644 --- a/modules/nf-core/bismark/align/tests/main.nf.test.snap +++ b/modules/nf-core/bismark/align/tests/main.nf.test.snap @@ -1,120 +1,92 @@ { - "unmapped_hisat2_pe": { + "Should run bismark/align (hisat2 paired end) without failures": { "content": [ + [ + "fb9d284aec4b2c727af3c5ffd77c6381" + ], [ - ] - ], - "timestamp": "2023-10-18T10:43:05.063588715" - }, - "bam_bt2_se": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": true - }, - "test.methylated_1_bismark_bt2.bam:md5,315d5299edbd6fe6a3716996bc2129c4" - ] + "versions.yml:md5,908dc37f43469e417f419f1173047da5" ] ], - "timestamp": "2023-10-18T10:42:06.821761726" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-03T19:23:02.893088" }, - "bam_minimap2_se": { + "Should run bismark/align (bowtie2 paired end) without failures": { "content": [ [ - [ - { - "id": "test", - "single_end": true - }, - "test.methylated_1_bismark_mm2.bam:md5,d8c54051df96f12e5ceb08cbd58c1ca4" - ] - ] - ], - "timestamp": "2023-10-18T10:43:24.234318958" - }, - "bam_bt2_pe": { - "content": [ + "458c5350c3f96a8dde710985bfb62827" + ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.methylated_1_bismark_bt2_pe.bam:md5,e9b17bd5b5897b38562e1e8c18442787" - ] - ] - ], - "timestamp": "2023-10-18T10:42:26.299667292" - }, - "versions": { - "content": [ + + ], [ "versions.yml:md5,908dc37f43469e417f419f1173047da5" ] ], - "timestamp": "2023-10-18T10:42:06.844406815" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-03T19:22:24.892023" }, - "unmapped_minimap2_se": { + "Should run bismark/align (hisat2 single end) without failures": { "content": [ [ - - ] - ], - "timestamp": "2023-10-18T10:43:24.254014927" - }, - "unmapped_hisat2_se": { - "content": [ + "936c0d5ce713130113e99e09a5b53afd" + ], [ - ] - ], - "timestamp": "2023-10-18T10:42:45.125915494" - }, - "bam_hisat2_pe": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.methylated_1_bismark_hisat2_pe.bam:md5,120c2da988865860df873f7e4a3dabc1" - ] + "versions.yml:md5,908dc37f43469e417f419f1173047da5" ] ], - "timestamp": "2023-10-18T10:43:05.047908937" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-03T19:22:43.401686" }, - "unmapped_bt2_se": { + "Should run bismark/align (minimap2 single end) without failures": { "content": [ + [ + "d354e6c6d6a06e36630590de8f27031a" + ], [ - ] - ], - "timestamp": "2023-10-18T10:42:06.838672413" - }, - "bam_hisat2_se": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": true - }, - "test.methylated_1_bismark_hisat2.bam:md5,cc5f52b3269540cf121e32c0512ea8d6" - ] + "versions.yml:md5,908dc37f43469e417f419f1173047da5" ] ], - "timestamp": "2023-10-18T10:42:45.112219005" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-03T19:23:20.046695" }, - "unmapped_bt2_pe": { + "Should run bismark/align (bowtie2 single end) without failures": { "content": [ + [ + "936c0d5ce713130113e99e09a5b53afd" + ], [ + ], + [ + "versions.yml:md5,908dc37f43469e417f419f1173047da5" ] ], - "timestamp": "2023-10-18T10:42:26.310951647" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-03T19:22:05.435199" } } \ No newline at end of file diff --git a/modules/nf-core/bismark/coverage2cytosine/environment.yml b/modules/nf-core/bismark/coverage2cytosine/environment.yml index abda284757e..fbc3fdf202c 100644 --- a/modules/nf-core/bismark/coverage2cytosine/environment.yml +++ b/modules/nf-core/bismark/coverage2cytosine/environment.yml @@ -1,7 +1,5 @@ -name: bismark_coverage2cytosine channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bismark=0.24.0 diff --git a/modules/nf-core/bismark/coverage2cytosine/meta.yml b/modules/nf-core/bismark/coverage2cytosine/meta.yml index e9d6bde08c8..db05862ca01 100644 --- a/modules/nf-core/bismark/coverage2cytosine/meta.yml +++ b/modules/nf-core/bismark/coverage2cytosine/meta.yml @@ -31,7 +31,7 @@ input: description: | A file containing methylation calls per position, in the format produced by bismark_methylation_extractor. - index: - type: dir + type: directory description: Bismark genome index directory pattern: "BismarkIndex" output: diff --git a/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test b/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test index e6618054bea..3ed5c0d2d37 100644 --- a/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test +++ b/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test @@ -3,10 +3,12 @@ nextflow_process { name "Test Process BISMARK_COVERAGE2CYTOSINE" script "../main.nf" process "BISMARK_COVERAGE2CYTOSINE" - tag "bismark" - tag "bismark/coverage2cytosine" tag "modules" tag "modules_nfcore" + tag "bismark" + tag "bismark/coverage2cytosine" + tag "bismark/methylationextractor" + tag "bismark/genomepreparation" test("Should run bismark/coverage2cytosine without failures") { @@ -15,7 +17,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -26,7 +28,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.bam', checkIfExists: true) ] input[1] = BISMARK_GENOMEPREPARATION.out.index """ @@ -35,9 +37,6 @@ nextflow_process { } when { - params { - outdir = "$outputDir" - } process { """ input[0] = BISMARK_METHYLATIONEXTRACTOR.out.coverage diff --git a/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test.snap b/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test.snap index 17474a02f3e..e7d2c195d1e 100644 --- a/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test.snap +++ b/modules/nf-core/bismark/coverage2cytosine/tests/main.nf.test.snap @@ -11,7 +11,7 @@ "id": "test", "single_end": false }, - "test.CpG_report.txt.gz:md5,f0d16086d10e5ba32a4b71e4a349342a" + "test.CpG_report.txt.gz:md5,0b83c760c7b3df21a320f054bbb865fb" ] ], "2": [ @@ -35,7 +35,7 @@ "id": "test", "single_end": false }, - "test.CpG_report.txt.gz:md5,f0d16086d10e5ba32a4b71e4a349342a" + "test.CpG_report.txt.gz:md5,0b83c760c7b3df21a320f054bbb865fb" ] ], "summary": [ @@ -52,6 +52,10 @@ ] } ], - "timestamp": "2023-10-17T11:21:30.915147802" + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.4" + }, + "timestamp": "2024-08-02T10:10:27.945147685" } } \ No newline at end of file diff --git a/modules/nf-core/bismark/deduplicate/environment.yml b/modules/nf-core/bismark/deduplicate/environment.yml index 6160c2e6d36..fbc3fdf202c 100644 --- a/modules/nf-core/bismark/deduplicate/environment.yml +++ b/modules/nf-core/bismark/deduplicate/environment.yml @@ -1,7 +1,5 @@ -name: bismark_deduplicate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bismark=0.24.0 diff --git a/modules/nf-core/bismark/deduplicate/tests/main.nf.test b/modules/nf-core/bismark/deduplicate/tests/main.nf.test index 478c69b6f70..1f67b7d2585 100644 --- a/modules/nf-core/bismark/deduplicate/tests/main.nf.test +++ b/modules/nf-core/bismark/deduplicate/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.bam', checkIfExists: true) ] """ } @@ -27,7 +27,12 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.bam.collect { bam(it[1]).getReadsMD5() }, + process.out.report, + process.out.versions + ).match() + } ) } diff --git a/modules/nf-core/bismark/deduplicate/tests/main.nf.test.snap b/modules/nf-core/bismark/deduplicate/tests/main.nf.test.snap index 6a69ed34ae5..7e4aea38990 100644 --- a/modules/nf-core/bismark/deduplicate/tests/main.nf.test.snap +++ b/modules/nf-core/bismark/deduplicate/tests/main.nf.test.snap @@ -1,51 +1,26 @@ { "Should run bismark/deduplicate without failures": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.methylated.deduplicated.bam:md5,ac241d97729ecf98b294a7371346dcdb" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.methylated.deduplication_report.txt:md5,86aaf87bac9ccdc3cc83628f20b902dc" - ] - ], - "2": [ - "versions.yml:md5,1859cf7d4e598dec0678f073c9e2f539" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.methylated.deduplicated.bam:md5,ac241d97729ecf98b294a7371346dcdb" - ] - ], - "report": [ - [ - { - "id": "test", - "single_end": false - }, - "test.paired_end.methylated.deduplication_report.txt:md5,86aaf87bac9ccdc3cc83628f20b902dc" - ] - ], - "versions": [ - "versions.yml:md5,1859cf7d4e598dec0678f073c9e2f539" + [ + "8036b4b920354438ddd1871c88f5088" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.paired_end.methylated.deduplication_report.txt:md5,86aaf87bac9ccdc3cc83628f20b902dc" ] - } + ], + [ + "versions.yml:md5,1859cf7d4e598dec0678f073c9e2f539" + ] ], - "timestamp": "2023-10-17T10:32:40.893624928" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-03T19:28:29.457009" } } \ No newline at end of file diff --git a/modules/nf-core/bismark/genomepreparation/environment.yml b/modules/nf-core/bismark/genomepreparation/environment.yml index e27febfcbfd..fbc3fdf202c 100644 --- a/modules/nf-core/bismark/genomepreparation/environment.yml +++ b/modules/nf-core/bismark/genomepreparation/environment.yml @@ -1,7 +1,5 @@ -name: bismark_genomepreparation channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bismark=0.24.0 diff --git a/modules/nf-core/bismark/genomepreparation/meta.yml b/modules/nf-core/bismark/genomepreparation/meta.yml index 06fe4f8cad4..e7aa5529057 100644 --- a/modules/nf-core/bismark/genomepreparation/meta.yml +++ b/modules/nf-core/bismark/genomepreparation/meta.yml @@ -27,7 +27,7 @@ input: description: Input genome fasta file output: - index: - type: dir + type: directory description: Bismark genome index directory pattern: "BismarkIndex" - versions: diff --git a/modules/nf-core/bismark/genomepreparation/tests/main.nf.test b/modules/nf-core/bismark/genomepreparation/tests/main.nf.test index d21ebddf204..bd9b95e38fe 100644 --- a/modules/nf-core/bismark/genomepreparation/tests/main.nf.test +++ b/modules/nf-core/bismark/genomepreparation/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { } process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } diff --git a/modules/nf-core/bismark/methylationextractor/environment.yml b/modules/nf-core/bismark/methylationextractor/environment.yml index 33ca119004a..fbc3fdf202c 100644 --- a/modules/nf-core/bismark/methylationextractor/environment.yml +++ b/modules/nf-core/bismark/methylationextractor/environment.yml @@ -1,7 +1,5 @@ -name: bismark_methylationextractor channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bismark=0.24.0 diff --git a/modules/nf-core/bismark/methylationextractor/tests/main.nf.test b/modules/nf-core/bismark/methylationextractor/tests/main.nf.test index 46d3ae8c4fa..dea2c1fed8c 100644 --- a/modules/nf-core/bismark/methylationextractor/tests/main.nf.test +++ b/modules/nf-core/bismark/methylationextractor/tests/main.nf.test @@ -3,10 +3,11 @@ nextflow_process { name "Test Process BISMARK_METHYLATIONEXTRACTOR" script "../main.nf" process "BISMARK_METHYLATIONEXTRACTOR" - tag "bismark" - tag "bismark/methylationextractor" tag "modules" tag "modules_nfcore" + tag "bismark" + tag "bismark/methylationextractor" + tag "bismark/genomepreparation" test("Should run bismark/methylationextractor without failures") { @@ -15,21 +16,18 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } } when { - params { - outdir = "$outputDir" - } process { """ input[0] = [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_paired_end_methylated_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.methylated.bam', checkIfExists: true) ] input[1] = BISMARK_GENOMEPREPARATION.out.index """ diff --git a/modules/nf-core/bismark/methylationextractor/tests/main.nf.test.snap b/modules/nf-core/bismark/methylationextractor/tests/main.nf.test.snap index c435a88da53..52c26306a1c 100644 --- a/modules/nf-core/bismark/methylationextractor/tests/main.nf.test.snap +++ b/modules/nf-core/bismark/methylationextractor/tests/main.nf.test.snap @@ -8,7 +8,7 @@ "id": "test", "single_end": false }, - "test.paired_end.methylated.bedGraph.gz:md5,6d8484ab5f0df684466a0a2491aab3c0" + "test.paired_end.methylated.bedGraph.gz:md5,3e461daa0b89ee4eeb76e336ad6aad7a" ] ], "1": [ @@ -18,12 +18,12 @@ "single_end": false }, [ - "CHG_OB_test.paired_end.methylated.txt.gz:md5,6b72fe72d5a14743f5bdb0e89c2a8db1", - "CHG_OT_test.paired_end.methylated.txt.gz:md5,bfe87776316f342c72a8811d6ac50251", - "CHH_OB_test.paired_end.methylated.txt.gz:md5,63ccf90597f4339918c3432b35d584be", - "CHH_OT_test.paired_end.methylated.txt.gz:md5,a6164bdea00c97ecfb76f0e224d8fb7b", - "CpG_OB_test.paired_end.methylated.txt.gz:md5,e923376d9fa8a6d4e76489782904bd90", - "CpG_OT_test.paired_end.methylated.txt.gz:md5,4296ac6d0a7832909c4775b8fee88afc" + "CHG_OB_test.paired_end.methylated.txt.gz:md5,2dcbf53d334758bc8ea8e7f7a9482f0b", + "CHG_OT_test.paired_end.methylated.txt.gz:md5,08bf48d70cf160f03f16106246c042a3", + "CHH_OB_test.paired_end.methylated.txt.gz:md5,3d9a2ed915593c69551cdf825d92e595", + "CHH_OT_test.paired_end.methylated.txt.gz:md5,979b5e8e8e9b8b7de556383be736cf20", + "CpG_OB_test.paired_end.methylated.txt.gz:md5,4ee4561c082c6659fa245a27d6ac9744", + "CpG_OT_test.paired_end.methylated.txt.gz:md5,63c7462425494fab87c10babebab49bb" ] ] ], @@ -33,7 +33,7 @@ "id": "test", "single_end": false }, - "test.paired_end.methylated.bismark.cov.gz:md5,6805ae041310ded6ce819dfb206be761" + "test.paired_end.methylated.bismark.cov.gz:md5,1524da1472ed1ad0c0663a9676c142e0" ] ], "3": [ @@ -63,7 +63,7 @@ "id": "test", "single_end": false }, - "test.paired_end.methylated.bedGraph.gz:md5,6d8484ab5f0df684466a0a2491aab3c0" + "test.paired_end.methylated.bedGraph.gz:md5,3e461daa0b89ee4eeb76e336ad6aad7a" ] ], "coverage": [ @@ -72,7 +72,7 @@ "id": "test", "single_end": false }, - "test.paired_end.methylated.bismark.cov.gz:md5,6805ae041310ded6ce819dfb206be761" + "test.paired_end.methylated.bismark.cov.gz:md5,1524da1472ed1ad0c0663a9676c142e0" ] ], "mbias": [ @@ -91,12 +91,12 @@ "single_end": false }, [ - "CHG_OB_test.paired_end.methylated.txt.gz:md5,6b72fe72d5a14743f5bdb0e89c2a8db1", - "CHG_OT_test.paired_end.methylated.txt.gz:md5,bfe87776316f342c72a8811d6ac50251", - "CHH_OB_test.paired_end.methylated.txt.gz:md5,63ccf90597f4339918c3432b35d584be", - "CHH_OT_test.paired_end.methylated.txt.gz:md5,a6164bdea00c97ecfb76f0e224d8fb7b", - "CpG_OB_test.paired_end.methylated.txt.gz:md5,e923376d9fa8a6d4e76489782904bd90", - "CpG_OT_test.paired_end.methylated.txt.gz:md5,4296ac6d0a7832909c4775b8fee88afc" + "CHG_OB_test.paired_end.methylated.txt.gz:md5,2dcbf53d334758bc8ea8e7f7a9482f0b", + "CHG_OT_test.paired_end.methylated.txt.gz:md5,08bf48d70cf160f03f16106246c042a3", + "CHH_OB_test.paired_end.methylated.txt.gz:md5,3d9a2ed915593c69551cdf825d92e595", + "CHH_OT_test.paired_end.methylated.txt.gz:md5,979b5e8e8e9b8b7de556383be736cf20", + "CpG_OB_test.paired_end.methylated.txt.gz:md5,4ee4561c082c6659fa245a27d6ac9744", + "CpG_OT_test.paired_end.methylated.txt.gz:md5,63c7462425494fab87c10babebab49bb" ] ] ], @@ -114,6 +114,10 @@ ] } ], - "timestamp": "2023-10-17T10:55:16.009653232" + "meta": { + "nf-test": "0.9.0", + "nextflow": "23.10.4" + }, + "timestamp": "2024-08-02T08:07:52.585249564" } } \ No newline at end of file diff --git a/modules/nf-core/bismark/report/environment.yml b/modules/nf-core/bismark/report/environment.yml index 2725a6054fe..fbc3fdf202c 100644 --- a/modules/nf-core/bismark/report/environment.yml +++ b/modules/nf-core/bismark/report/environment.yml @@ -1,7 +1,5 @@ -name: bismark_report channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bismark=0.24.0 diff --git a/modules/nf-core/bismark/report/meta.yml b/modules/nf-core/bismark/report/meta.yml index 2307a28e6a5..8c57a09eb32 100644 --- a/modules/nf-core/bismark/report/meta.yml +++ b/modules/nf-core/bismark/report/meta.yml @@ -40,9 +40,6 @@ input: type: file description: Text file containing methylation bias information pattern: "*.{txt}" - - fasta: - type: file - description: Input genome fasta file output: - meta: type: map diff --git a/modules/nf-core/bismark/report/tests/main.nf.test b/modules/nf-core/bismark/report/tests/main.nf.test index 196126ff802..aa373e9aa04 100644 --- a/modules/nf-core/bismark/report/tests/main.nf.test +++ b/modules/nf-core/bismark/report/tests/main.nf.test @@ -3,10 +3,14 @@ nextflow_process { name "Test Process BISMARK_REPORT" script "../main.nf" process "BISMARK_REPORT" - tag "bismark" - tag "bismark/report" tag "modules" tag "modules_nfcore" + tag "bismark" + tag "bismark/report" + tag "bismark/align" + tag "bismark/deduplicate" + tag "bismark/methylationextractor" + tag "bismark/genomepreparation" test("Should run bismark/report without failures") { @@ -15,7 +19,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -26,9 +30,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_methylated_2_fastq_gz'], checkIfExists: true) + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_2.fastq.gz', checkIfExists: true) ] ] input[1] = BISMARK_GENOMEPREPARATION.out.index @@ -74,7 +78,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot(process.out.versions).match("versions") }, - { + { with(process.out.report) { with(get(0)) { assert get(1).endsWith('_PE_report.html') diff --git a/modules/nf-core/bismark/summary/environment.yml b/modules/nf-core/bismark/summary/environment.yml index 8c0fe3d2c64..fbc3fdf202c 100644 --- a/modules/nf-core/bismark/summary/environment.yml +++ b/modules/nf-core/bismark/summary/environment.yml @@ -1,7 +1,5 @@ -name: bismark_summary channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bismark=0.24.0 diff --git a/modules/nf-core/bismark/summary/tests/main.nf.test b/modules/nf-core/bismark/summary/tests/main.nf.test index e04f01f86fb..2621fc582f2 100644 --- a/modules/nf-core/bismark/summary/tests/main.nf.test +++ b/modules/nf-core/bismark/summary/tests/main.nf.test @@ -3,10 +3,14 @@ nextflow_process { name "Test Process BISMARK_SUMMARY" script "../main.nf" process "BISMARK_SUMMARY" - tag "bismark" - tag "bismark/summary" tag "modules" tag "modules_nfcore" + tag "bismark" + tag "bismark/summary" + tag "bismark/align" + tag "bismark/deduplicate" + tag "bismark/genomepreparation" + tag "bismark/methylationextractor" test("Should run bismark/summary without failures") { @@ -15,7 +19,7 @@ nextflow_process { script "../../genomepreparation/main.nf" process { """ - input[0] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) """ } } @@ -26,9 +30,9 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_methylated_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_methylated_2_fastq_gz'], checkIfExists: true) + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_2.fastq.gz', checkIfExists: true) ] ] input[1] = BISMARK_GENOMEPREPARATION.out.index diff --git a/modules/nf-core/blast/blastdbcmd/environment.yml b/modules/nf-core/blast/blastdbcmd/environment.yml index b90a0b74587..78ed204d7f9 100644 --- a/modules/nf-core/blast/blastdbcmd/environment.yml +++ b/modules/nf-core/blast/blastdbcmd/environment.yml @@ -1,7 +1,5 @@ -name: "blast_blastdbcmd" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::blast=2.15.0" diff --git a/modules/nf-core/blast/blastn/environment.yml b/modules/nf-core/blast/blastn/environment.yml index e4a72800e9e..777e097ed75 100644 --- a/modules/nf-core/blast/blastn/environment.yml +++ b/modules/nf-core/blast/blastn/environment.yml @@ -1,7 +1,5 @@ -name: blast_blastn channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::blast=2.15.0 diff --git a/modules/nf-core/blast/blastn/tests/main.nf.test b/modules/nf-core/blast/blastn/tests/main.nf.test index 02ecfab5d47..aacc93c5d7c 100644 --- a/modules/nf-core/blast/blastn/tests/main.nf.test +++ b/modules/nf-core/blast/blastn/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { script "../../makeblastdb/main.nf" process { """ - input[0] = [ [id:'test2'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test2'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } } @@ -29,7 +29,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db """ } @@ -53,7 +53,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta_gz'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db """ } diff --git a/modules/nf-core/blast/blastp/environment.yml b/modules/nf-core/blast/blastp/environment.yml index 7cb7c0e4805..777e097ed75 100644 --- a/modules/nf-core/blast/blastp/environment.yml +++ b/modules/nf-core/blast/blastp/environment.yml @@ -1,7 +1,5 @@ -name: blast_blastp channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::blast=2.15.0 diff --git a/modules/nf-core/blast/blastp/tests/main.nf.test b/modules/nf-core/blast/blastp/tests/main.nf.test index ccf970e78e5..eb69fb89232 100644 --- a/modules/nf-core/blast/blastp/tests/main.nf.test +++ b/modules/nf-core/blast/blastp/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { script "../../makeblastdb/main.nf" process { """ - input[0] = [ [id:'test2'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test2'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] """ } } @@ -29,7 +29,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db input[2] = '' """ @@ -54,7 +54,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta_gz'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db input[2] = '' """ @@ -79,7 +79,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db input[2] = 'xml' """ @@ -104,7 +104,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db input[2] = 'tsv' """ @@ -129,7 +129,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db input[2] = 'csv' """ diff --git a/modules/nf-core/blast/makeblastdb/environment.yml b/modules/nf-core/blast/makeblastdb/environment.yml index a20783b0f80..777e097ed75 100644 --- a/modules/nf-core/blast/makeblastdb/environment.yml +++ b/modules/nf-core/blast/makeblastdb/environment.yml @@ -1,7 +1,5 @@ -name: blast_makeblastdb channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::blast=2.15.0 diff --git a/modules/nf-core/blast/makeblastdb/tests/main.nf.test b/modules/nf-core/blast/makeblastdb/tests/main.nf.test index 983b165f6ea..21caf1415cb 100644 --- a/modules/nf-core/blast/makeblastdb/tests/main.nf.test +++ b/modules/nf-core/blast/makeblastdb/tests/main.nf.test @@ -12,12 +12,9 @@ nextflow_process { test("Should build a blast db folder from a fasta file") { when { - params { - outdir = "$outputDir" - } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } } @@ -25,25 +22,28 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert process.out.db - with(process.out.db) { - assert size() == 1 - with(get(0).get(1)) { - File folder = new File(get(0).get(1)) - File[] listOfFiles = folder.listFiles() - listOfFiles = listOfFiles.sort { it.name } - assert listOfFiles.length == 9 - assert snapshot("${get(0).get(1)}/${listOfFiles[0].name}").match("genome.fasta") - assert snapshot("${get(0).get(1)}/${listOfFiles[1].name}").match("genome.fasta.ndb") - assert snapshot("${get(0).get(1)}/${listOfFiles[2].name}").match("genome.fasta.nhr") - assert snapshot("${get(0).get(1)}/${listOfFiles[5].name}").match("genome.fasta.not") - assert snapshot("${get(0).get(1)}/${listOfFiles[6].name}").match("genome.fasta.nsq") - assert snapshot("${get(0).get(1)}/${listOfFiles[7].name}").match("genome.fasta.ntf") - assert snapshot("${get(0).get(1)}/${listOfFiles[8].name}").match("genome.fasta.nto") - } - } - }, - { assert process.out.versions } + { + assert process.out.db.size() == 1 + + def all_files = ( new File(process.out.db[0][1]) ).listFiles() + def stable_file_names = [ + 'genome.fasta', + 'genome.fasta.ndb', + 'genome.fasta.nhr', + 'genome.fasta.not', + 'genome.fasta.nsq', + 'genome.fasta.ntf', + 'genome.fasta.nto' + ] + + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_files.collect { it.name }.toSorted(), + stable_files, + process.out.versions[0] + ).match() + } ) } @@ -52,12 +52,9 @@ nextflow_process { test("Should build a blast db folder from a zipped fasta file") { when { - params { - outdir = "$outputDir" - } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta_gz'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) ] """ } } @@ -65,25 +62,28 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert process.out.db - with(process.out.db) { - assert size() == 1 - with(get(0).get(1)) { - File folder = new File(get(0).get(1)) - File[] listOfFiles = folder.listFiles() - listOfFiles = listOfFiles.sort { it.name } - assert listOfFiles.length == 10 - assert snapshot("${get(0).get(1)}/${listOfFiles[0].name}").match("gz_genome.fasta") - assert snapshot("${get(0).get(1)}/${listOfFiles[2].name}").match("gz_genome.fasta.ndb") - assert snapshot("${get(0).get(1)}/${listOfFiles[3].name}").match("gz_genome.fasta.nhr") - assert snapshot("${get(0).get(1)}/${listOfFiles[6].name}").match("gz_genome.fasta.not") - assert snapshot("${get(0).get(1)}/${listOfFiles[7].name}").match("gz_genome.fasta.nsq") - assert snapshot("${get(0).get(1)}/${listOfFiles[8].name}").match("gz_genome.fasta.ntf") - assert snapshot("${get(0).get(1)}/${listOfFiles[9].name}").match("gz_genome.fasta.nto") - } - } - }, - { assert process.out.versions } + { + assert process.out.db.size() == 1 + + def all_files = ( new File(process.out.db[0][1]) ).listFiles() + def stable_file_names = [ + 'genome.fasta', + 'genome.fasta.ndb', + 'genome.fasta.nhr', + 'genome.fasta.not', + 'genome.fasta.nsq', + 'genome.fasta.ntf', + 'genome.fasta.nto' + ] + + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_files.collect { it.name }.toSorted(), + stable_files, + process.out.versions[0] + ).match() + } ) } diff --git a/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap b/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap index b6f040ed839..d6db277b866 100644 --- a/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap +++ b/modules/nf-core/blast/makeblastdb/tests/main.nf.test.snap @@ -1,86 +1,63 @@ { - "genome.fasta": { - "content": [ - "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6" - ], - "timestamp": "2023-11-07T12:52:38.457245596" - }, - "gz_genome.fasta.ntf": { - "content": [ - "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb" - ], - "timestamp": "2023-11-07T12:58:02.121840034" - }, - "genome.fasta.not": { - "content": [ - "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb" - ], - "timestamp": "2023-11-07T12:55:33.862012946" - }, - "genome.fasta.nhr": { - "content": [ - "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e" - ], - "timestamp": "2023-11-07T12:55:33.857994517" - }, - "gz_genome.fasta.nhr": { - "content": [ - "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e" - ], - "timestamp": "2023-11-07T12:58:02.102407993" - }, - "genome.fasta.ntf": { - "content": [ - "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb" - ], - "timestamp": "2023-11-07T12:55:33.877288786" - }, - "gz_genome.fasta.not": { - "content": [ - "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb" - ], - "timestamp": "2023-11-07T12:58:02.108135313" - }, - "gz_genome.fasta.ndb": { - "content": [ - "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d" - ], - "timestamp": "2023-11-07T12:58:02.094305556" - }, - "gz_genome.fasta.nsq": { - "content": [ - "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da" - ], - "timestamp": "2023-11-07T12:58:02.115010863" - }, - "genome.fasta.nto": { - "content": [ - "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" - ], - "timestamp": "2023-11-07T12:55:33.890761822" - }, - "gz_genome.fasta.nto": { - "content": [ - "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" - ], - "timestamp": "2023-11-07T12:58:02.12931429" - }, - "genome.fasta.ndb": { - "content": [ - "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d" - ], - "timestamp": "2023-11-07T12:55:33.853303997" - }, - "genome.fasta.nsq": { - "content": [ - "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da" - ], - "timestamp": "2023-11-07T12:55:33.866667927" - }, - "gz_genome.fasta": { - "content": [ - "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6" - ], - "timestamp": "2023-11-07T12:58:02.081764854" + "Should build a blast db folder from a fasta file": { + "content": [ + [ + "genome.fasta", + "genome.fasta.ndb", + "genome.fasta.nhr", + "genome.fasta.nin", + "genome.fasta.njs", + "genome.fasta.not", + "genome.fasta.nsq", + "genome.fasta.ntf", + "genome.fasta.nto" + ], + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d", + "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e", + "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb", + "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da", + "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb", + "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" + ], + "versions.yml:md5,cb63396fd8d8f4df57913b63452d6ba8" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T15:40:32.52079" + }, + "Should build a blast db folder from a zipped fasta file": { + "content": [ + [ + "genome.fasta", + "genome.fasta.gz", + "genome.fasta.ndb", + "genome.fasta.nhr", + "genome.fasta.nin", + "genome.fasta.njs", + "genome.fasta.not", + "genome.fasta.nsq", + "genome.fasta.ntf", + "genome.fasta.nto" + ], + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.ndb:md5,0d553c830656469211de113c5022f06d", + "genome.fasta.nhr:md5,f4b4ddb034fd3dd7b25c89e9d50c004e", + "genome.fasta.not:md5,1e53e9d08f1d23af0299cfa87478a7bb", + "genome.fasta.nsq:md5,982cbc7d9e38743b9b1037588862b9da", + "genome.fasta.ntf:md5,de1250813f0c7affc6d12dac9d0fb6bb", + "genome.fasta.nto:md5,33cdeccccebe80329f1fdbee7f5874cb" + ], + "versions.yml:md5,cb63396fd8d8f4df57913b63452d6ba8" + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T15:40:37.45154" } } \ No newline at end of file diff --git a/modules/nf-core/blast/tblastn/environment.yml b/modules/nf-core/blast/tblastn/environment.yml index 98d2454090f..777e097ed75 100644 --- a/modules/nf-core/blast/tblastn/environment.yml +++ b/modules/nf-core/blast/tblastn/environment.yml @@ -1,7 +1,5 @@ -name: blast_tblastn channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::blast=2.15.0 diff --git a/modules/nf-core/blast/tblastn/tests/main.nf.test b/modules/nf-core/blast/tblastn/tests/main.nf.test index 62c0ef97c92..9dc3aa2bd11 100644 --- a/modules/nf-core/blast/tblastn/tests/main.nf.test +++ b/modules/nf-core/blast/tblastn/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { script "../../makeblastdb/main.nf" process { """ - input[0] = [ [id:'test2'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test2'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } } @@ -29,7 +29,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db """ } @@ -53,7 +53,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta_gz'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] input[1] = BLAST_MAKEBLASTDB.out.db """ } diff --git a/modules/nf-core/blast/updateblastdb/environment.yml b/modules/nf-core/blast/updateblastdb/environment.yml index 564c310fd87..78ed204d7f9 100644 --- a/modules/nf-core/blast/updateblastdb/environment.yml +++ b/modules/nf-core/blast/updateblastdb/environment.yml @@ -1,7 +1,5 @@ -name: "blast_updateblastdb" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::blast=2.15.0" diff --git a/modules/nf-core/blat/environment.yml b/modules/nf-core/blat/environment.yml index ec2b1ff56dd..2a85c07875d 100644 --- a/modules/nf-core/blat/environment.yml +++ b/modules/nf-core/blat/environment.yml @@ -1,7 +1,5 @@ -name: blat channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::blat=36 diff --git a/modules/nf-core/blat/meta.yml b/modules/nf-core/blat/meta.yml index f03142d9b36..25deca1aea3 100644 --- a/modules/nf-core/blat/meta.yml +++ b/modules/nf-core/blat/meta.yml @@ -12,7 +12,7 @@ tools: homepage: "https://kentinformatics.com/" documentation: "https://kentinformatics.com/documentation" doi: "10.1101/gr.229202" - licence: "['Free for academic, nonprofit and personal use']" + licence: ["Free for academic, nonprofit and personal use"] input: - meta: type: map diff --git a/modules/nf-core/blat/tests/main.nf.test b/modules/nf-core/blat/tests/main.nf.test new file mode 100644 index 00000000000..8b07e5cf72f --- /dev/null +++ b/modules/nf-core/blat/tests/main.nf.test @@ -0,0 +1,75 @@ + +nextflow_process { + + name "Test Process BLAT" + script "../main.nf" + process "BLAT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "blat" + tag "seqtk/seq" + + setup { + run("SEQTK_SEQ") { + script "../../seqtk/seq/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + + """ + } + } + } + + test("test-blat") { + + when { + process { + """ + input[0] = SEQTK_SEQ.out.fastx + input[1] = [ + [ id:'sarscov2' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-blat-stub") { + options '-stub' + when { + process { + """ + input[0] = SEQTK_SEQ.out.fastx + input[1] = [ + [ id:'sarscov2' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/blat/tests/main.nf.test.snap b/modules/nf-core/blat/tests/main.nf.test.snap new file mode 100644 index 00000000000..d46a3320a6e --- /dev/null +++ b/modules/nf-core/blat/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-blat": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.psl:md5,6e2e5b3be48c84877f3c54b32bb9ec33" + ] + ], + "1": [ + "versions.yml:md5,d9cde833b3f9cf6d359ef0f8a119380a" + ], + "psl": [ + [ + { + "id": "test", + "single_end": false + }, + "test.psl:md5,6e2e5b3be48c84877f3c54b32bb9ec33" + ] + ], + "versions": [ + "versions.yml:md5,d9cde833b3f9cf6d359ef0f8a119380a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T20:38:03.56409" + }, + "test-blat-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.psl:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,d9cde833b3f9cf6d359ef0f8a119380a" + ], + "psl": [ + [ + { + "id": "test", + "single_end": false + }, + "test.psl:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d9cde833b3f9cf6d359ef0f8a119380a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T20:38:09.736595" + } +} \ No newline at end of file diff --git a/modules/nf-core/blat/tests/nextflow.config b/modules/nf-core/blat/tests/nextflow.config new file mode 100644 index 00000000000..58bc3f25502 --- /dev/null +++ b/modules/nf-core/blat/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: SEQTK_SEQ { + ext.args = '-A' + } +} \ No newline at end of file diff --git a/modules/nf-core/bowtie/align/environment.yml b/modules/nf-core/bowtie/align/environment.yml index 2617e6f0adc..4434c7e7143 100644 --- a/modules/nf-core/bowtie/align/environment.yml +++ b/modules/nf-core/bowtie/align/environment.yml @@ -1,7 +1,6 @@ -name: bowtie_align channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bowtie=1.3.0 + - bioconda::samtools=1.16.1 diff --git a/modules/nf-core/bowtie/align/main.nf b/modules/nf-core/bowtie/align/main.nf index 29e9cd53361..5e72b02a678 100644 --- a/modules/nf-core/bowtie/align/main.nf +++ b/modules/nf-core/bowtie/align/main.nf @@ -9,13 +9,14 @@ process BOWTIE_ALIGN { input: tuple val(meta), path(reads) - path index + tuple val(meta2), path(index) + val (save_unaligned) output: - tuple val(meta), path('*.bam'), emit: bam - tuple val(meta), path('*.out'), emit: log - path "versions.yml" , emit: versions - tuple val(meta), path('*fastq.gz'), optional:true, emit: fastq + tuple val(meta), path('*.bam') , emit: bam + tuple val(meta), path('*.out') , emit: log + tuple val(meta), path('*fastq.gz') , emit: fastq, optional : true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -24,10 +25,10 @@ process BOWTIE_ALIGN { def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def unaligned = params.save_unaligned ? "--un ${prefix}.unmapped.fastq" : '' + def unaligned = save_unaligned ? "--un ${prefix}.unmapped.fastq" : '' def endedness = meta.single_end ? "$reads" : "-1 ${reads[0]} -2 ${reads[1]}" """ - INDEX=`find -L ./ -name "*.3.ebwt" | sed 's/\\.3.ebwt\$//'` + INDEX=\$(find -L ./ -name "*.3.ebwt" | sed 's/\\.3.ebwt\$//') bowtie \\ --threads $task.cpus \\ --sam \\ @@ -53,4 +54,24 @@ process BOWTIE_ALIGN { samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def unaligned = save_unaligned ? + meta.single_end ? "echo '' | gzip > ${prefix}.unmapped.fastq.gz" : + "echo '' | gzip > ${prefix}.unmapped_1.fastq.gz; echo '' | gzip > ${prefix}.unmapped_2.fastq.gz" + : '' + """ + touch ${prefix}.bam + touch ${prefix}.out + $unaligned + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie: \$(echo \$(bowtie --version 2>&1) | sed 's/^.*bowtie-align-s version //; s/ .*\$//') + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + + } diff --git a/modules/nf-core/bowtie/align/meta.yml b/modules/nf-core/bowtie/align/meta.yml index 89eaedd6c5d..7c7e8237476 100644 --- a/modules/nf-core/bowtie/align/meta.yml +++ b/modules/nf-core/bowtie/align/meta.yml @@ -27,23 +27,36 @@ input: description: | List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. + - meta2: + type: map + description: | + Groovy Map containing genome information + e.g. [ id:'sarscov2' ] - index: type: file description: Bowtie genome index files pattern: "*.ebwt" + - save_unaligned: + type: boolean + description: Whether to save fastq files containing the reads which did not align. output: - bam: type: file description: Output BAM file containing read alignments pattern: "*.{bam}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - fastq: type: file description: Unaligned FastQ files pattern: "*.fastq.gz" + - log: + type: file + description: Log file + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + authors: - "@kevinmenden" maintainers: diff --git a/modules/nf-core/bowtie/align/tests/main.nf.test b/modules/nf-core/bowtie/align/tests/main.nf.test new file mode 100644 index 00000000000..3403ae225fb --- /dev/null +++ b/modules/nf-core/bowtie/align/tests/main.nf.test @@ -0,0 +1,129 @@ +nextflow_process { + + name "Test Process BOWTIE_ALIGN" + script "../main.nf" + process "BOWTIE_ALIGN" + + tag "modules" + tag "modules_nfcore" + tag "bowtie" + tag "bowtie/align" + tag "bowtie/build" + + + setup { + run("BOWTIE_BUILD") { + script "../../../bowtie/build/main.nf" + process { + """ + input[0] = [[ id:'sarscov2' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + """ + } + } + } + + test("sarscov2 - single_end") { + + when { + process { + """ + input[0] = [ [id:"test", single_end:true], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE_BUILD.out.index + input[2] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions, + process.out.bam.collect { bam(it[1]).getReadsMD5() }, + process.out.fastq, + process.out.log + ).match() } + ) + } + + } + + test("sarscov2 - single_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [id:"test", single_end:true], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE_BUILD.out.index + input[2] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - paired_end") { + + when { + process { + """ + input[0] = [ [id:"test", single_end:false], + [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + ] + input[1] = BOWTIE_BUILD.out.index + input[2] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions, + process.out.bam.collect { bam(it[1]).getReads(2) }, + process.out.log + ).match() } + ) + } + + } + + test("sarscov2 - paired_end - stub") { + + options "-stub" + when { + process { + """ + input[0] = [ [id:"test", single_end:false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = BOWTIE_BUILD.out.index + input[2] = false + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/bowtie/align/tests/main.nf.test.snap b/modules/nf-core/bowtie/align/tests/main.nf.test.snap new file mode 100644 index 00000000000..de95bb81531 --- /dev/null +++ b/modules/nf-core/bowtie/align/tests/main.nf.test.snap @@ -0,0 +1,192 @@ +{ + "sarscov2 - single_end": { + "content": [ + [ + "versions.yml:md5,96e36b0b99c80da0be8239d03db30ecc" + ], + [ + "7bdcfc6f54ae6e8f4570395cc85db9a3" + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.unmapped.fastq.gz:md5,5729a694abd09657da3b9101861090c4" + ] + ], + [ + [ + { + "id": "test", + "single_end": true + }, + "test.out:md5,4b9140ceadb8a18ae9330885370f8a0b" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-26T09:25:24.60746041" + }, + "sarscov2 - single_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.unmapped.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + "versions.yml:md5,96e36b0b99c80da0be8239d03db30ecc" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + [ + { + "id": "test", + "single_end": true + }, + "test.unmapped.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,96e36b0b99c80da0be8239d03db30ecc" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-25T10:00:28.666281812" + }, + "sarscov2 - paired_end": { + "content": [ + [ + "versions.yml:md5,96e36b0b99c80da0be8239d03db30ecc" + ], + [ + [ + "ATGTGTACATTGGCGACCCTGCTCAATTACCTGCACCACGCACATTGCTAACTAAGGGCACACTAGAACCAGAATATTTCAATTCAGTGTGTAGACTTATGAAAACTATAGGTCCAGACATGTTCCTCGGAACTTGTCGGCGTTGTCCTG", + "ACGCACATTGCTAACTAAGGGCACACTAGAACCAGAATATTTCAATTCAGTGTGTAGACTTATGAAAACTATAGGTCCAGACATGTTCCTCGGAACTTGTCGGCGTTGTCCTGCTGAAATTGTTGACACTGTGAGTGCTTTGGTTTATGA" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.out:md5,5e13272d112cef8faeedcdbd7c602de0" + ] + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-26T11:57:56.604464368" + }, + "sarscov2 - paired_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,96e36b0b99c80da0be8239d03db30ecc" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fastq": [ + + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,96e36b0b99c80da0be8239d03db30ecc" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-25T10:01:02.043164876" + } +} \ No newline at end of file diff --git a/modules/nf-core/bowtie/align/tests/tags.yml b/modules/nf-core/bowtie/align/tests/tags.yml new file mode 100644 index 00000000000..a5753d5864d --- /dev/null +++ b/modules/nf-core/bowtie/align/tests/tags.yml @@ -0,0 +1,2 @@ +bowtie/align: + - "modules/nf-core/bowtie/align/**" diff --git a/modules/nf-core/bowtie/build/environment.yml b/modules/nf-core/bowtie/build/environment.yml index 0907b0f840f..ab5a842215c 100644 --- a/modules/nf-core/bowtie/build/environment.yml +++ b/modules/nf-core/bowtie/build/environment.yml @@ -1,7 +1,5 @@ -name: bowtie_build channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bowtie=1.3.0 diff --git a/modules/nf-core/bowtie/build/main.nf b/modules/nf-core/bowtie/build/main.nf index 05e22fe8c61..d5b4c690404 100644 --- a/modules/nf-core/bowtie/build/main.nf +++ b/modules/nf-core/bowtie/build/main.nf @@ -1,5 +1,5 @@ process BOWTIE_BUILD { - tag "$fasta" + tag "${meta.id}" label 'process_high' conda "${moduleDir}/environment.yml" @@ -8,23 +8,43 @@ process BOWTIE_BUILD { 'biocontainers/bowtie:1.3.0--py38hed8969a_1' }" input: - path fasta + tuple val(meta), path(fasta) output: - path 'bowtie' , emit: index - path "versions.yml" , emit: versions + tuple val(meta), path('bowtie') , emit: index + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" """ - mkdir bowtie - bowtie-build --threads $task.cpus $fasta bowtie/${fasta.baseName} + mkdir -p bowtie + bowtie-build --threads $task.cpus $fasta bowtie/${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie: \$(echo \$(bowtie --version 2>&1) | sed 's/^.*bowtie-align-s version //; s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir -p bowtie + touch bowtie/${prefix}.1.ebwt + touch bowtie/${prefix}.2.ebwt + touch bowtie/${prefix}.3.ebwt + touch bowtie/${prefix}.4.ebwt + touch bowtie/${prefix}.rev.1.ebwt + touch bowtie/${prefix}.rev.2.ebwt + cat <<-END_VERSIONS > versions.yml "${task.process}": bowtie: \$(echo \$(bowtie --version 2>&1) | sed 's/^.*bowtie-align-s version //; s/ .*\$//') END_VERSIONS """ + } diff --git a/modules/nf-core/bowtie/build/meta.yml b/modules/nf-core/bowtie/build/meta.yml index 262855f4266..dd48004f294 100644 --- a/modules/nf-core/bowtie/build/meta.yml +++ b/modules/nf-core/bowtie/build/meta.yml @@ -15,13 +15,23 @@ tools: arxiv: arXiv:1303.3997 licence: ["Artistic-2.0"] input: + - meta: + type: map + description: | + Groovy Map containing information about the genome fasta + e.g. [ id:'test' ] - fasta: type: file description: Input genome fasta file output: + - meta: + type: map + description: | + Groovy Map containing nformation about the genome fasta + e.g. [ id:'test' ] - index: type: file - description: Bowtie genome index files + description: Folder containing bowtie genome index files pattern: "*.ebwt" - versions: type: file diff --git a/modules/nf-core/bowtie/build/tests/main.nf.test b/modules/nf-core/bowtie/build/tests/main.nf.test new file mode 100644 index 00000000000..25fb3dad83b --- /dev/null +++ b/modules/nf-core/bowtie/build/tests/main.nf.test @@ -0,0 +1,57 @@ +nextflow_process { + + name "Test Process BOWTIE_BUILD" + script "../main.nf" + process "BOWTIE_BUILD" + + tag "modules" + tag "modules_nfcore" + tag "bowtie" + tag "bowtie/build" + + test("sarscov2 - fasta") { + + when { + process { + """ + input[0] = [ + [id: 'sarscov2'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [[id: 'sarscov2'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/bowtie/build/tests/main.nf.test.snap b/modules/nf-core/bowtie/build/tests/main.nf.test.snap new file mode 100644 index 00000000000..e8061756ba2 --- /dev/null +++ b/modules/nf-core/bowtie/build/tests/main.nf.test.snap @@ -0,0 +1,96 @@ +{ + "sarscov2 - fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "sarscov2" + }, + [ + "sarscov2.1.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.2.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.3.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.4.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.rev.1.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.rev.2.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,afbd066e1dd5ae4a30b21c49149ea09a" + ], + "index": [ + [ + { + "id": "sarscov2" + }, + [ + "sarscov2.1.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.2.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.3.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.4.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.rev.1.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e", + "sarscov2.rev.2.ebwt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,afbd066e1dd5ae4a30b21c49149ea09a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-18T08:38:14.852528155" + }, + "sarscov2 - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "sarscov2" + }, + [ + "sarscov2.1.ebwt:md5,d9b76ecf9fd0413240173273b38d8199", + "sarscov2.2.ebwt:md5,02b44af9f94c62ecd3c583048e25d4cf", + "sarscov2.3.ebwt:md5,4ed93abba181d8dfab2e303e33114777", + "sarscov2.4.ebwt:md5,c25be5f8b0378abf7a58c8a880b87626", + "sarscov2.rev.1.ebwt:md5,b37aaf11853e65a3b13561f27a912b06", + "sarscov2.rev.2.ebwt:md5,9e6b0c4c1ddb99ae71ff8a4fe5ec6459" + ] + ] + ], + "1": [ + "versions.yml:md5,afbd066e1dd5ae4a30b21c49149ea09a" + ], + "index": [ + [ + { + "id": "sarscov2" + }, + [ + "sarscov2.1.ebwt:md5,d9b76ecf9fd0413240173273b38d8199", + "sarscov2.2.ebwt:md5,02b44af9f94c62ecd3c583048e25d4cf", + "sarscov2.3.ebwt:md5,4ed93abba181d8dfab2e303e33114777", + "sarscov2.4.ebwt:md5,c25be5f8b0378abf7a58c8a880b87626", + "sarscov2.rev.1.ebwt:md5,b37aaf11853e65a3b13561f27a912b06", + "sarscov2.rev.2.ebwt:md5,9e6b0c4c1ddb99ae71ff8a4fe5ec6459" + ] + ] + ], + "versions": [ + "versions.yml:md5,afbd066e1dd5ae4a30b21c49149ea09a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-18T08:37:53.65689025" + } +} \ No newline at end of file diff --git a/modules/nf-core/bowtie/build/tests/tags.yml b/modules/nf-core/bowtie/build/tests/tags.yml new file mode 100644 index 00000000000..1ccfa30c9c9 --- /dev/null +++ b/modules/nf-core/bowtie/build/tests/tags.yml @@ -0,0 +1,2 @@ +bowtie/build: + - "modules/nf-core/bowtie/build/**" diff --git a/modules/nf-core/bowtie2/align/environment.yml b/modules/nf-core/bowtie2/align/environment.yml index d2796359aeb..9090f218834 100644 --- a/modules/nf-core/bowtie2/align/environment.yml +++ b/modules/nf-core/bowtie2/align/environment.yml @@ -1,8 +1,6 @@ -name: bowtie2_align channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bowtie2=2.5.2 - bioconda::samtools=1.18 diff --git a/modules/nf-core/bowtie2/align/tests/main.nf.test b/modules/nf-core/bowtie2/align/tests/main.nf.test index 03aeaf9eef3..0de5950fee6 100644 --- a/modules/nf-core/bowtie2/align/tests/main.nf.test +++ b/modules/nf-core/bowtie2/align/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -30,10 +30,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -64,7 +64,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -76,10 +76,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -110,7 +110,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -122,10 +122,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -155,7 +155,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -167,10 +167,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -200,7 +200,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -213,12 +213,12 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -248,7 +248,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -261,12 +261,12 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -297,7 +297,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -309,10 +309,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -343,7 +343,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -356,12 +356,12 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -391,7 +391,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -404,12 +404,12 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -439,7 +439,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -451,10 +451,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -486,7 +486,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -499,12 +499,12 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = true //sort """ @@ -533,7 +533,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -546,12 +546,12 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ @@ -583,7 +583,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -595,10 +595,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BOWTIE2_BUILD.out.index - input[2] = [[ id:'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + input[2] = [[ id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[3] = false //save_unaligned input[4] = false //sort """ diff --git a/modules/nf-core/bowtie2/build/environment.yml b/modules/nf-core/bowtie2/build/environment.yml index 22bbfc3749f..e590f7ce326 100644 --- a/modules/nf-core/bowtie2/build/environment.yml +++ b/modules/nf-core/bowtie2/build/environment.yml @@ -1,7 +1,5 @@ -name: bowtie2_build channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bowtie2=2.5.2 diff --git a/modules/nf-core/bracken/bracken/environment.yml b/modules/nf-core/bracken/bracken/environment.yml index 6eb5b1b9a34..b96b00d7a3b 100644 --- a/modules/nf-core/bracken/bracken/environment.yml +++ b/modules/nf-core/bracken/bracken/environment.yml @@ -1,7 +1,5 @@ -name: bracken_bracken channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bracken=2.9" diff --git a/modules/nf-core/bracken/bracken/main.nf b/modules/nf-core/bracken/bracken/main.nf index caded9edde8..e3d32fb21ab 100644 --- a/modules/nf-core/bracken/bracken/main.nf +++ b/modules/nf-core/bracken/bracken/main.nf @@ -13,7 +13,7 @@ process BRACKEN_BRACKEN { output: tuple val(meta), path(bracken_report) , emit: reports - tuple val(meta), path("*bracken_species.txt"), emit: txt + tuple val(meta), path(bracken_kraken_style_report), emit: txt path "versions.yml" , emit: versions when: @@ -23,12 +23,14 @@ process BRACKEN_BRACKEN { def args = task.ext.args ?: "" def prefix = task.ext.prefix ?: "${meta.id}" bracken_report = "${prefix}.tsv" + bracken_kraken_style_report = "${prefix}.kraken2.report_bracken.txt" """ bracken \\ ${args} \\ -d '${database}' \\ -i '${kraken_report}' \\ - -o '${bracken_report}' + -o '${bracken_report}' \\ + -w '${bracken_kraken_style_report}' cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -40,9 +42,10 @@ process BRACKEN_BRACKEN { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" bracken_report = "${prefix}.tsv" + bracken_kraken_style_report = "${prefix}.kraken2.report_bracken.txt" """ touch ${prefix}.tsv - touch ${prefix}_bracken_species.txt + touch ${bracken_kraken_style_report} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bracken/bracken/tests/genus_test.config b/modules/nf-core/bracken/bracken/tests/genus_test.config new file mode 100644 index 00000000000..bc5f63ae084 --- /dev/null +++ b/modules/nf-core/bracken/bracken/tests/genus_test.config @@ -0,0 +1,5 @@ +process { + withName: BRACKEN_BRACKEN { + ext.args = "-l G -t 10 -r 150" + } +} diff --git a/modules/nf-core/bracken/bracken/tests/main.nf.test b/modules/nf-core/bracken/bracken/tests/main.nf.test index 59c1398e5d3..9d2105dedb1 100644 --- a/modules/nf-core/bracken/bracken/tests/main.nf.test +++ b/modules/nf-core/bracken/bracken/tests/main.nf.test @@ -24,6 +24,8 @@ nextflow_process { test("sarscov2 - single-end - fastq") { + config "./nextflow.config" + setup { run("KRAKEN2_KRAKEN2") { script "../../../kraken2/kraken2/main.nf" @@ -56,7 +58,51 @@ nextflow_process { } -test("sarscov2 - paired-end - fastq") { + test("sarscov2 - paired-end - fastq - genus config") { + + config "./genus_test.config" + + setup { + run("KRAKEN2_KRAKEN2") { + script "../../../kraken2/kraken2/main.nf" + process { + """ + input[0] = [ + [id: 'test', single_end: false], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = UNTAR.out.untar.map{it[1]} + input[2] = false + input[3] = false + """ + } + } + } + + when { + process { + """ + input[0] = KRAKEN2_KRAKEN2.out.report + input[1] = UNTAR.out.untar.map{it[1]} + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - paired-end - fastq") { + + config "./nextflow.config" setup { run("KRAKEN2_KRAKEN2") { diff --git a/modules/nf-core/bracken/bracken/tests/main.nf.test.snap b/modules/nf-core/bracken/bracken/tests/main.nf.test.snap index 5aadb7b70e6..c97a4c71b8a 100644 --- a/modules/nf-core/bracken/bracken/tests/main.nf.test.snap +++ b/modules/nf-core/bracken/bracken/tests/main.nf.test.snap @@ -17,7 +17,7 @@ "id": "test", "single_end": true }, - "test.kraken2.report_bracken_species.txt:md5,ca0fbeedc4353b5fdd081688823a33df" + "test.kraken2.report_bracken.txt:md5,ca0fbeedc4353b5fdd081688823a33df" ] ], "2": [ @@ -38,7 +38,7 @@ "id": "test", "single_end": true }, - "test.kraken2.report_bracken_species.txt:md5,ca0fbeedc4353b5fdd081688823a33df" + "test.kraken2.report_bracken.txt:md5,ca0fbeedc4353b5fdd081688823a33df" ] ], "versions": [ @@ -47,10 +47,63 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-04-16T14:14:27.122403998" + "timestamp": "2024-08-06T11:35:03.995620397" + }, + "sarscov2 - paired-end - fastq - genus config": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,f609b09d6edb5ebc1ea1435d1dd46cde" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.kraken2.report_bracken.txt:md5,2ce58814420a3690da1f08e10e8d3a30" + ] + ], + "2": [ + "versions.yml:md5,599fbbf4c1cd5851022a98788f2afdba" + ], + "reports": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,f609b09d6edb5ebc1ea1435d1dd46cde" + ] + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "test.kraken2.report_bracken.txt:md5,2ce58814420a3690da1f08e10e8d3a30" + ] + ], + "versions": [ + "versions.yml:md5,599fbbf4c1cd5851022a98788f2afdba" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-06T12:13:33.399680181" }, "sarscov2 - paired-end - fastq": { "content": [ @@ -70,7 +123,7 @@ "id": "test", "single_end": false }, - "test.kraken2.report_bracken_species.txt:md5,ca0fbeedc4353b5fdd081688823a33df" + "test.kraken2.report_bracken.txt:md5,ca0fbeedc4353b5fdd081688823a33df" ] ], "2": [ @@ -91,7 +144,7 @@ "id": "test", "single_end": false }, - "test.kraken2.report_bracken_species.txt:md5,ca0fbeedc4353b5fdd081688823a33df" + "test.kraken2.report_bracken.txt:md5,ca0fbeedc4353b5fdd081688823a33df" ] ], "versions": [ @@ -100,10 +153,10 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-04-16T14:19:15.627050252" + "timestamp": "2024-08-06T12:09:15.465609745" }, "sarscov2 - stub - fastq": { "content": [ @@ -121,7 +174,7 @@ { "id": "test" }, - "test_bracken_species.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.kraken2.report_bracken.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "2": [ @@ -140,7 +193,7 @@ { "id": "test" }, - "test_bracken_species.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.kraken2.report_bracken.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ @@ -149,9 +202,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-04-16T14:14:36.5929911" + "timestamp": "2024-08-06T11:35:42.965471207" } } \ No newline at end of file diff --git a/modules/nf-core/bracken/build/environment.yml b/modules/nf-core/bracken/build/environment.yml index 7288a38a1b2..d9ea9a61e52 100644 --- a/modules/nf-core/bracken/build/environment.yml +++ b/modules/nf-core/bracken/build/environment.yml @@ -1,8 +1,6 @@ --- -name: "bracken_build" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bracken=2.9" diff --git a/modules/nf-core/bracken/build/tests/main.nf.test b/modules/nf-core/bracken/build/tests/main.nf.test index f4168a7eb1c..781c1518436 100644 --- a/modules/nf-core/bracken/build/tests/main.nf.test +++ b/modules/nf-core/bracken/build/tests/main.nf.test @@ -10,18 +10,18 @@ nextflow_process { tag "bracken/build" tag "untar" - setup { - run ("UNTAR") { - script "../../../untar/main.nf" - process { - """ - input[0] = [[id: 'db'],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kraken2_intermediate.tar.gz', checkIfExists: true)] - """ + test("kraken2 - db") { + + setup { + run ("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [[id: 'db'],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kraken2_intermediate.tar.gz', checkIfExists: true)] + """ + } } } - } - - test("kraken2 - db") { when { process { @@ -41,6 +41,7 @@ nextflow_process { file("${process.out.bracken_files[0][1]}/database100mers.kmer_distrib").name, file("${process.out.bracken_files[0][1]}/database100mers.kraken").name, file("${process.out.bracken_files[0][1]}/database.kraken").name, + process.out.versions ).match() } ) @@ -52,6 +53,17 @@ nextflow_process { options "-stub" + setup { + run ("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = [[id: 'db'],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/db/kraken2_intermediate.tar.gz', checkIfExists: true)] + """ + } + } + } + when { process { """ @@ -66,7 +78,5 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/bracken/build/tests/main.nf.test.snap b/modules/nf-core/bracken/build/tests/main.nf.test.snap index 49f4240fee7..910e314aa41 100644 --- a/modules/nf-core/bracken/build/tests/main.nf.test.snap +++ b/modules/nf-core/bracken/build/tests/main.nf.test.snap @@ -6,13 +6,16 @@ "database.kraken", "database100mers.kmer_distrib", "database100mers.kraken", - "database.kraken" + "database.kraken", + [ + "versions.yml:md5,925c6ae1387eaf6dbd14656125bc6d9b" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-04-17T18:41:03.693430543" + "timestamp": "2024-07-12T13:45:17.37462" }, "kraken2 - db - stub": { "content": [ @@ -26,7 +29,28 @@ "database.kraken:md5,d41d8cd98f00b204e9800998ecf8427e", "database100mers.kmer_distrib:md5,d41d8cd98f00b204e9800998ecf8427e", "database100mers.kraken:md5,d41d8cd98f00b204e9800998ecf8427e", - "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "hash.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + [ + "G46z5ZvKEd.fna:md5,d41d8cd98f00b204e9800998ecf8427e", + "G46z5ZvKEd.fna.masked:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map_MtGz4nUfR3.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map_eNakvrOVZm.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "z_4A5lulyr.fna:md5,d41d8cd98f00b204e9800998ecf8427e", + "z_4A5lulyr.fna.masked:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "opts.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "seqid2taxid.map:md5,d41d8cd98f00b204e9800998ecf8427e", + "taxo.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "names.dmp:md5,d41d8cd98f00b204e9800998ecf8427e", + "nodes.dmp:md5,d41d8cd98f00b204e9800998ecf8427e", + "nucl_gb.accession2taxid:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "unmapped.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], @@ -66,7 +90,28 @@ "database.kraken:md5,d41d8cd98f00b204e9800998ecf8427e", "database100mers.kmer_distrib:md5,d41d8cd98f00b204e9800998ecf8427e", "database100mers.kraken:md5,d41d8cd98f00b204e9800998ecf8427e", - "file.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "hash.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + [ + "G46z5ZvKEd.fna:md5,d41d8cd98f00b204e9800998ecf8427e", + "G46z5ZvKEd.fna.masked:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map_MtGz4nUfR3.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map_eNakvrOVZm.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "z_4A5lulyr.fna:md5,d41d8cd98f00b204e9800998ecf8427e", + "z_4A5lulyr.fna.masked:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "opts.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + "seqid2taxid.map:md5,d41d8cd98f00b204e9800998ecf8427e", + "taxo.k2d:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "names.dmp:md5,d41d8cd98f00b204e9800998ecf8427e", + "nodes.dmp:md5,d41d8cd98f00b204e9800998ecf8427e", + "nucl_gb.accession2taxid:md5,d41d8cd98f00b204e9800998ecf8427e", + "prelim_map.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "unmapped.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], @@ -77,8 +122,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-04-17T18:41:14.406736156" + "timestamp": "2024-07-12T13:45:26.452181" } } \ No newline at end of file diff --git a/modules/nf-core/bracken/combinebrackenoutputs/environment.yml b/modules/nf-core/bracken/combinebrackenoutputs/environment.yml index 37a5fb2503b..b96b00d7a3b 100644 --- a/modules/nf-core/bracken/combinebrackenoutputs/environment.yml +++ b/modules/nf-core/bracken/combinebrackenoutputs/environment.yml @@ -1,7 +1,5 @@ -name: bracken_combinebrackenoutputs channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bracken=2.9" diff --git a/modules/nf-core/busco/busco/environment.yml b/modules/nf-core/busco/busco/environment.yml index 06a5d9307bf..5b918b45b2d 100644 --- a/modules/nf-core/busco/busco/environment.yml +++ b/modules/nf-core/busco/busco/environment.yml @@ -1,7 +1,5 @@ -name: busco_busco channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::busco=5.7.1 diff --git a/modules/nf-core/busco/busco/tests/main.nf.test b/modules/nf-core/busco/busco/tests/main.nf.test index 16b708b2bb7..bb7b49a97c4 100644 --- a/modules/nf-core/busco/busco/tests/main.nf.test +++ b/modules/nf-core/busco/busco/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file( params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) ] input[1] = 'genome' input[2] = 'bacteria_odb10' // Launch with 'auto' to use --auto-lineage, and specified lineages // 'auto' removed from test due to memory issues @@ -80,8 +80,8 @@ nextflow_process { input[0] = [ [ id:'test' ], // meta map [ - file( params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true), - file( params.test_data['candidatus_portiera_aleyrodidarum']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/genome.fasta', checkIfExists: true) ] ] input[1] = 'genome' @@ -165,7 +165,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file( params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] input[1] = 'genome' input[2] = 'eukaryota_odb10' @@ -208,8 +208,6 @@ nextflow_process { with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { assert contains('DEBUG:busco.run_BUSCO') - assert contains("'use_augustus', 'False'") - assert contains("'use_metaeuk', 'True'") // METAEUK assert contains('Results from dataset') assert contains('how to cite BUSCO') @@ -230,7 +228,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file( params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] input[1] = 'genome' input[2] = 'eukaryota_odb10' @@ -250,8 +248,6 @@ nextflow_process { with(path("${process.out.busco_dir[0][1]}/logs/busco.log").text) { assert contains('DEBUG:busco.run_BUSCO') - assert contains("'use_augustus', 'True'") - assert contains("'use_metaeuk', 'False'") // AUGUSTUS assert contains('Augustus did not recognize any genes') } @@ -275,7 +271,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file( params.test_data['candidatus_portiera_aleyrodidarum']['genome']['proteome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/candidatus_portiera_aleyrodidarum/genome/proteome.fasta', checkIfExists: true) ] input[1] = 'proteins' input[2] = 'bacteria_odb10' @@ -337,7 +333,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file( params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) ] input[1] = 'transcriptome' input[2] = 'bacteria_odb10' @@ -398,7 +394,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file( params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) ] input[1] = 'genome' input[2] = 'bacteria_odb10' diff --git a/modules/nf-core/busco/generateplot/environment.yml b/modules/nf-core/busco/generateplot/environment.yml index 1ca5babb0a2..766c0f406b0 100644 --- a/modules/nf-core/busco/generateplot/environment.yml +++ b/modules/nf-core/busco/generateplot/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "busco_generateplot" channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::busco=5.7.1 diff --git a/modules/nf-core/busco/generateplot/tests/main.nf.test b/modules/nf-core/busco/generateplot/tests/main.nf.test index 853dc5edabc..0bf1ff18990 100644 --- a/modules/nf-core/busco/generateplot/tests/main.nf.test +++ b/modules/nf-core/busco/generateplot/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) ] input[1] = 'genome' input[2] = 'bacteria_odb10' @@ -55,7 +55,7 @@ nextflow_process { when { process { """ - input[0] = file(params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true) """ } } diff --git a/modules/nf-core/bwa/aln/environment.yml b/modules/nf-core/bwa/aln/environment.yml index a131461be99..d8789a20928 100644 --- a/modules/nf-core/bwa/aln/environment.yml +++ b/modules/nf-core/bwa/aln/environment.yml @@ -1,7 +1,5 @@ -name: bwa_aln channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bwa=0.7.18 diff --git a/modules/nf-core/bwa/aln/tests/main.nf.test b/modules/nf-core/bwa/aln/tests/main.nf.test index 0a47fdb627d..b290c5e76a7 100644 --- a/modules/nf-core/bwa/aln/tests/main.nf.test +++ b/modules/nf-core/bwa/aln/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { """ input[0] = [ [id: 'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -31,7 +31,7 @@ nextflow_process { input[0] = [ [ id:'test', single_end:true ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ] input[1] = BWA_INDEX.out.index @@ -57,7 +57,7 @@ nextflow_process { """ input[0] = [ [id: 'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -70,8 +70,8 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BWA_INDEX.out.index diff --git a/modules/nf-core/bwa/index/environment.yml b/modules/nf-core/bwa/index/environment.yml index 126e0034488..d8789a20928 100644 --- a/modules/nf-core/bwa/index/environment.yml +++ b/modules/nf-core/bwa/index/environment.yml @@ -1,7 +1,5 @@ -name: bwa_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bwa=0.7.18 diff --git a/modules/nf-core/bwa/mem/environment.yml b/modules/nf-core/bwa/mem/environment.yml index 3aa9f0cca23..24f7f4436a6 100644 --- a/modules/nf-core/bwa/mem/environment.yml +++ b/modules/nf-core/bwa/mem/environment.yml @@ -1,8 +1,6 @@ -name: bwa_mem channels: - conda-forge - bioconda - - defaults dependencies: - bwa=0.7.18 # renovate: datasource=conda depName=bioconda/samtools diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test b/modules/nf-core/bwa/mem/tests/main.nf.test index 463b76f81c2..5de2c2f4539 100644 --- a/modules/nf-core/bwa/mem/tests/main.nf.test +++ b/modules/nf-core/bwa/mem/tests/main.nf.test @@ -9,21 +9,21 @@ nextflow_process { script "../main.nf" process "BWA_MEM" - test("Single-End") { - - setup { - run("BWA_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } + setup { + run("BWA_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = [ + [id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ } } + } + + test("Single-End") { when { process { @@ -49,7 +49,8 @@ nextflow_process { process.out.csi, process.out.crai, process.out.versions, - file(process.out.bam[0][1]).name + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5() ).match() } ) @@ -59,20 +60,6 @@ nextflow_process { test("Single-End Sort") { - setup { - run("BWA_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - } - when { process { """ @@ -97,7 +84,8 @@ nextflow_process { process.out.csi, process.out.crai, process.out.versions, - file(process.out.bam[0][1]).name + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5() ).match() } ) @@ -107,20 +95,6 @@ nextflow_process { test("Paired-End") { - setup { - run("BWA_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - } - when { process { """ @@ -146,7 +120,8 @@ nextflow_process { process.out.csi, process.out.crai, process.out.versions, - file(process.out.bam[0][1]).name + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5() ).match() } ) @@ -156,20 +131,6 @@ nextflow_process { test("Paired-End Sort") { - setup { - run("BWA_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - } - when { process { """ @@ -195,7 +156,8 @@ nextflow_process { process.out.csi, process.out.crai, process.out.versions, - file(process.out.bam[0][1]).name + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5() ).match() } ) @@ -205,20 +167,6 @@ nextflow_process { test("Paired-End - no fasta") { - setup { - run("BWA_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - } - when { process { """ @@ -244,7 +192,8 @@ nextflow_process { process.out.csi, process.out.crai, process.out.versions, - file(process.out.bam[0][1]).name + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5() ).match() } ) @@ -253,20 +202,9 @@ nextflow_process { } test("Single-end - stub") { + options "-stub" - setup { - run("BWA_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - } + when { process { """ @@ -286,30 +224,15 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - file(process.out.csi[0][1]).name, - process.out.versions - ).match() } + { assert snapshot(process.out).match() } ) } } test("Paired-end - stub") { + options "-stub" - setup { - run("BWA_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = [ - [id: 'test'], - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) - ] - """ - } - } - } + when { process { """ @@ -330,11 +253,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - file(process.out.csi[0][1]).name, - process.out.versions - ).match() } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/bwa/mem/tests/main.nf.test.snap b/modules/nf-core/bwa/mem/tests/main.nf.test.snap index 038ee7b7a26..2079ea22402 100644 --- a/modules/nf-core/bwa/mem/tests/main.nf.test.snap +++ b/modules/nf-core/bwa/mem/tests/main.nf.test.snap @@ -13,13 +13,14 @@ [ "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" ], - "test.bam" + "b6d9cb250261a4c125413c5d867d87a7", + "798439cbd7fd81cbcc5078022dc5479d" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-20T08:44:32.953673185" + "timestamp": "2024-08-02T12:22:28.051598" }, "Single-End Sort": { "content": [ @@ -35,13 +36,14 @@ [ "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" ], - "test.bam" + "848434ae4b79cfdcb2281c60b33663ce", + "94fcf617f5b994584c4e8d4044e16b4f" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-20T08:44:45.27066093" + "timestamp": "2024-08-02T12:22:39.671154" }, "Paired-End": { "content": [ @@ -57,13 +59,14 @@ [ "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" ], - "test.bam" + "5b34d31be84478761f789e3e2e805e31", + "57aeef88ed701a8ebc8e2f0a381b2a6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-20T08:44:57.706852274" + "timestamp": "2024-08-02T12:22:51.919479" }, "Paired-End Sort": { "content": [ @@ -79,27 +82,91 @@ [ "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" ], - "test.bam" + "69003376d9a8952622d8587b39c3eaae", + "af8628d9df18b2d3d4f6fd47ef2bb872" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-20T08:45:10.376505036" + "timestamp": "2024-08-02T12:23:00.833562" }, "Single-end - stub": { "content": [ - "test.bam", - "test.csi", - [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + [ + { + "id": "test", + "single_end": true + }, + "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": true + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-20T08:46:07.182072398" + "timestamp": "2024-08-02T12:31:29.46282" }, "Paired-End - no fasta": { "content": [ @@ -115,26 +182,90 @@ [ "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" ], - "test.bam" + "5b34d31be84478761f789e3e2e805e31", + "57aeef88ed701a8ebc8e2f0a381b2a6" ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-20T08:45:53.813076501" + "timestamp": "2024-08-02T12:23:09.942545" }, "Paired-end - stub": { "content": [ - "test.bam", - "test.csi", - [ - "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + [ + { + "id": "test", + "single_end": false + }, + "test.crai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,478b816fbd37871f5e8c617833d51d80" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-20T08:46:18.412916364" + "timestamp": "2024-08-02T12:31:37.757037" } } \ No newline at end of file diff --git a/modules/nf-core/bwa/sampe/environment.yml b/modules/nf-core/bwa/sampe/environment.yml index 63bbd0b5da9..7576715281c 100644 --- a/modules/nf-core/bwa/sampe/environment.yml +++ b/modules/nf-core/bwa/sampe/environment.yml @@ -1,9 +1,8 @@ -name: bwa_sampe channels: - conda-forge - bioconda - - defaults + dependencies: - bioconda::bwa=0.7.17 - - bioconda::samtools=1.18 - bioconda::htslib=1.18 + - bioconda::samtools=1.18 diff --git a/modules/nf-core/bwa/sampe/tests/main.nf.test b/modules/nf-core/bwa/sampe/tests/main.nf.test index 8f84d8a0f66..63a921f3838 100644 --- a/modules/nf-core/bwa/sampe/tests/main.nf.test +++ b/modules/nf-core/bwa/sampe/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_process { """ input[0] = [ [id: 'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -31,8 +31,8 @@ nextflow_process { input[0] = [ [ id:'test', single_end:true ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] input[1] = BWA_INDEX.out.index @@ -49,8 +49,8 @@ nextflow_process { [ [ id:'test', single_end:false ], [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] ) diff --git a/modules/nf-core/bwa/samse/environment.yml b/modules/nf-core/bwa/samse/environment.yml index d427a735b5a..7576715281c 100644 --- a/modules/nf-core/bwa/samse/environment.yml +++ b/modules/nf-core/bwa/samse/environment.yml @@ -1,9 +1,8 @@ -name: bwa_samse channels: - conda-forge - bioconda - - defaults + dependencies: - bioconda::bwa=0.7.17 - - bioconda::samtools=1.18 - bioconda::htslib=1.18 + - bioconda::samtools=1.18 diff --git a/modules/nf-core/bwa/samse/tests/main.nf.test b/modules/nf-core/bwa/samse/tests/main.nf.test index dcf861485eb..8a96ee4badc 100644 --- a/modules/nf-core/bwa/samse/tests/main.nf.test +++ b/modules/nf-core/bwa/samse/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_process { """ input[0] = [ [id: 'test'], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -30,7 +30,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input[1] = BWA_INDEX.out.index """ @@ -45,7 +45,7 @@ nextflow_process { .fromList( [ [ id:'test', single_end:false ], - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ) .collect() diff --git a/modules/nf-core/bwamem2/index/environment.yml b/modules/nf-core/bwamem2/index/environment.yml index 26b439172ab..15cee238767 100644 --- a/modules/nf-core/bwamem2/index/environment.yml +++ b/modules/nf-core/bwamem2/index/environment.yml @@ -1,7 +1,5 @@ -name: bwamem2_index channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bwa-mem2=2.2.1 diff --git a/modules/nf-core/bwamem2/mem/environment.yml b/modules/nf-core/bwamem2/mem/environment.yml index cbf06d39935..633712cf141 100644 --- a/modules/nf-core/bwamem2/mem/environment.yml +++ b/modules/nf-core/bwamem2/mem/environment.yml @@ -1,8 +1,6 @@ -name: bwamem2_mem channels: - conda-forge - bioconda - - defaults dependencies: - bwa-mem2=2.2.1 # renovate: datasource=conda depName=bioconda/samtools diff --git a/modules/nf-core/bwamem2/mem/tests/main.nf.test b/modules/nf-core/bwamem2/mem/tests/main.nf.test index 5e67f70b6a2..9e0ab14aec5 100644 --- a/modules/nf-core/bwamem2/mem/tests/main.nf.test +++ b/modules/nf-core/bwamem2/mem/tests/main.nf.test @@ -10,21 +10,21 @@ nextflow_process { tag "bwamem2/mem" tag "bwamem2/index" - test("sarscov2 - fastq, index, fasta, false") { - - setup { - run("BWAMEM2_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } + setup { + run("BWAMEM2_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = Channel.of([ + [:], // meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + ]) + """ } } + } + + test("sarscov2 - fastq, index, fasta, false") { when { process { @@ -44,7 +44,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -54,20 +55,6 @@ nextflow_process { test("sarscov2 - fastq, index, fasta, true") { - setup { - run("BWAMEM2_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ @@ -86,7 +73,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -96,20 +84,6 @@ nextflow_process { test("sarscov2 - [fastq1, fastq2], index, fasta, false") { - setup { - run("BWAMEM2_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ @@ -131,7 +105,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -141,20 +116,6 @@ nextflow_process { test("sarscov2 - [fastq1, fastq2], index, fasta, true") { - setup { - run("BWAMEM2_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ @@ -176,7 +137,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -188,20 +150,6 @@ nextflow_process { options "-stub" - setup { - run("BWAMEM2_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ @@ -222,10 +170,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - process.out.versions - ).match() } + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap b/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap index 9fb1e69d07d..69bc3612bf3 100644 --- a/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap +++ b/modules/nf-core/bwamem2/mem/tests/main.nf.test.snap @@ -1,67 +1,129 @@ { "sarscov2 - [fastq1, fastq2], index, fasta, false": { "content": [ - "test.bam", + "eefa0f44493fd0504e734efd2f1f4a9e", + "57aeef88ed701a8ebc8e2f0a381b2a6", [ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-03-19T13:13:18.890289958" + "timestamp": "2024-08-02T12:23:37.929675" }, "sarscov2 - [fastq1, fastq2], index, fasta, true - stub": { "content": [ - "test.bam", - [ - "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a" - ] + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + + ], + "versions": [ + "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-03-19T13:45:51.821633029" + "timestamp": "2024-08-02T12:12:06.693567" }, "sarscov2 - [fastq1, fastq2], index, fasta, true": { "content": [ - "test.bam", + "7aba324f82d5b4e926a5dd7b46029cb4", + "af8628d9df18b2d3d4f6fd47ef2bb872", [ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-03-19T13:13:36.458291078" + "timestamp": "2024-08-02T12:23:53.488374" }, "sarscov2 - fastq, index, fasta, false": { "content": [ - "test.bam", + "bc02b41697b3a8f1021b02becec24052", + "798439cbd7fd81cbcc5078022dc5479d", [ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-03-19T13:12:44.084654507" + "timestamp": "2024-08-02T12:23:05.644682" }, "sarscov2 - fastq, index, fasta, true": { "content": [ - "test.bam", + "e41d67320815d29ba5f6e9d1ae21902a", + "94fcf617f5b994584c4e8d4044e16b4f", [ "versions.yml:md5,1c1a9566f189ec077b5179bbf453c51a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-03-19T13:13:01.763341681" + "timestamp": "2024-08-02T12:23:21.837763" } } \ No newline at end of file diff --git a/modules/nf-core/bwameme/index/environment.yml b/modules/nf-core/bwameme/index/environment.yml index 5d76ea18865..f209d62e86e 100644 --- a/modules/nf-core/bwameme/index/environment.yml +++ b/modules/nf-core/bwameme/index/environment.yml @@ -1,7 +1,5 @@ -name: "bwameme_index" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bwa-meme=1.0.6" diff --git a/modules/nf-core/bwameme/mem/environment.yml b/modules/nf-core/bwameme/mem/environment.yml index 388eedd21bd..cad7944049a 100644 --- a/modules/nf-core/bwameme/mem/environment.yml +++ b/modules/nf-core/bwameme/mem/environment.yml @@ -1,10 +1,8 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "bwameme_mem" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bwa-meme=1.0.6" - "bioconda::mbuffer=20160228" diff --git a/modules/nf-core/bwameme/mem/main.nf b/modules/nf-core/bwameme/mem/main.nf index db91482ffb2..2efc8c0fab9 100644 --- a/modules/nf-core/bwameme/mem/main.nf +++ b/modules/nf-core/bwameme/mem/main.nf @@ -13,6 +13,7 @@ process BWAMEME_MEM { tuple val(meta3), path(fasta) val sort_bam val mbuffer + val samtools_threads output: tuple val(meta), path("*.sam") , emit: sam , optional:true @@ -31,13 +32,19 @@ process BWAMEME_MEM { def prefix = task.ext.prefix ?: "${meta.id}" def samtools_command = sort_bam ? 'sort' : 'view' if (!mbuffer) { - log.info '[bwameme-mbuffer] Memory for mbuffer is not set - defaulting to 3072MB for mbuffer.' + log.info '[bwameme-mbuffer] Memory for mbuffer is not set - defaulting to 3GB for mbuffer.' mbuffer_mem = 3072 } else { mbuffer_mem = mbuffer } + if (!samtools_threads) { + log.info 'Number of threads for samtools is not set - defaulting to 2 threads.' + threads = 2 + } else { + threads = samtools_threads + } mbuffer_command = sort_bam ? "| mbuffer -m ${mbuffer_mem}M" : "" - mem_per_thread = sort_bam ? "-m "+ (mbuffer_mem/task.cpus).intValue()+"M" : "" + mem_per_thread = sort_bam ? "-m "+ (mbuffer_mem/threads).intValue()+"M" : "" def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/ def extension_matcher = (args2 =~ extension_pattern) def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam" @@ -54,7 +61,7 @@ process BWAMEME_MEM { \$INDEX \\ $reads \\ $mbuffer_command \\ - | samtools $samtools_command $args2 $mem_per_thread -@ $task.cpus ${reference} -o ${prefix}.${extension} - + | samtools $samtools_command $args2 $mem_per_thread -@ $threads ${reference} -o ${prefix}.${extension} - cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bwameme/mem/meta.yml b/modules/nf-core/bwameme/mem/meta.yml index 85a8b5b3d96..e5d28db259d 100644 --- a/modules/nf-core/bwameme/mem/meta.yml +++ b/modules/nf-core/bwameme/mem/meta.yml @@ -54,7 +54,10 @@ input: pattern: "true or false" - mbuffer: type: integer - description: memory for mbuffer in megabytes + description: memory for mbuffer in megabytes (default 3072) + - sort_threads: + type: integer + description: number of threads to used during samtools sort (default 2). output: - meta: diff --git a/modules/nf-core/bwameme/mem/tests/main.nf.test b/modules/nf-core/bwameme/mem/tests/main.nf.test index 961d6379c53..6d93fd6ebfa 100644 --- a/modules/nf-core/bwameme/mem/tests/main.nf.test +++ b/modules/nf-core/bwameme/mem/tests/main.nf.test @@ -11,22 +11,22 @@ nextflow_process { tag "bwameme/index" config "./nextflow.config" - test("sarscov2 - fastq, index, fasta, false, 0") { - - setup { - run("BWAMEME_INDEX") { - script "../../index/main.nf" - config "./nextflow.config" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } + setup { + run("BWAMEME_INDEX") { + script "../../index/main.nf" + config "./nextflow.config" + process { + """ + input[0] = Channel.of([ + [:], // meta map + [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] + ]) + """ } } + } + + test("sarscov2 - fastq, index, fasta, false, 0, 4") { when { process { @@ -39,6 +39,7 @@ nextflow_process { input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) input[3] = false input[4] = 0 + input[5] = 4 """ } } @@ -47,7 +48,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -55,22 +57,7 @@ nextflow_process { } - test("sarscov2 - fastq, index, fasta, true, 2048") { - - setup { - run("BWAMEME_INDEX") { - script "../../index/main.nf" - config "./nextflow.config" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } + test("sarscov2 - fastq, index, fasta, true, 2048, 4") { when { process { @@ -83,6 +70,7 @@ nextflow_process { input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) input[3] = true input[4] = 2048 + input[5] = 4 """ } } @@ -91,7 +79,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -99,22 +88,7 @@ nextflow_process { } - test("sarscov2 - [fastq1, fastq2], index, fasta, false, 0") { - - setup { - run("BWAMEME_INDEX") { - script "../../index/main.nf" - config "./nextflow.config" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } + test("sarscov2 - [fastq1, fastq2], index, fasta, false, 0, 4") { when { process { @@ -130,6 +104,7 @@ nextflow_process { input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) input[3] = false input[4] = 0 + input[5] = 4 """ } } @@ -138,7 +113,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -146,22 +122,7 @@ nextflow_process { } - test("sarscov2 - [fastq1, fastq2], index, fasta, true, 2048") { - - setup { - run("BWAMEME_INDEX") { - script "../../index/main.nf" - config "./nextflow.config" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } + test("sarscov2 - [fastq1, fastq2], index, fasta, true, 2048, ''") { when { process { @@ -177,6 +138,7 @@ nextflow_process { input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) input[3] = true input[4] = 2048 + input[5] = "" """ } } @@ -185,7 +147,8 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), process.out.versions ).match() } ) @@ -193,25 +156,10 @@ nextflow_process { } - test("sarscov2 - [fastq1, fastq2], index, fasta, true, 2048 - stub") { + test("sarscov2 - [fastq1, fastq2], index, fasta, true, 2048, 4 - stub") { options "-stub" - setup { - run("BWAMEME_INDEX") { - script "../../index/main.nf" - config "./nextflow.config" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } - when { process { """ @@ -226,6 +174,7 @@ nextflow_process { input[2] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) input[3] = true input[4] = 2048 + input[5] = 4 """ } } @@ -233,10 +182,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - process.out.versions - ).match() } + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/bwameme/mem/tests/main.nf.test.snap b/modules/nf-core/bwameme/mem/tests/main.nf.test.snap index a8ff281b7ea..bc845155c56 100644 --- a/modules/nf-core/bwameme/mem/tests/main.nf.test.snap +++ b/modules/nf-core/bwameme/mem/tests/main.nf.test.snap @@ -1,132 +1,129 @@ { - "sarscov2 - [fastq1, fastq2], index, fasta, true, 2048": { + "sarscov2 - [fastq1, fastq2], index, fasta, false, 0, 4": { "content": [ - "test.bam", + "640e6a53bedb535837cc35cc1c145dcb", + "57aeef88ed701a8ebc8e2f0a381b2a6", [ "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-18T10:17:31.035368735" + "timestamp": "2024-08-02T12:25:03.99184" }, - "sarscov2 - [fastq1, fastq2], index, fasta, false": { + "sarscov2 - [fastq1, fastq2], index, fasta, true, 2048, ''": { "content": [ - "test.bam", + "7af5d6b93d3f8bd4f53d4f9ace7ee981", + "af8628d9df18b2d3d4f6fd47ef2bb872", [ "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-15T20:04:31.962017214" + "timestamp": "2024-08-02T12:26:17.237557" }, - "sarscov2 - [fastq1, fastq2], index, fasta, true - stub": { + "sarscov2 - fastq, index, fasta, true, 2048, 4": { "content": [ - "test.bam", + "4ccda5ce5d3b09b697786589b3753825", + "94fcf617f5b994584c4e8d4044e16b4f", [ "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-05-15T19:28:46.895668666" + "timestamp": "2024-08-02T12:24:07.289865" }, - "sarscov2 - [fastq1, fastq2], index, fasta, false, 0": { + "sarscov2 - fastq, index, fasta, false, 0, 4": { "content": [ - "test.bam", + "a58fa4a997be7d13a3dc62c9c9eb83d2", + "798439cbd7fd81cbcc5078022dc5479d", [ "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-18T10:17:08.497131484" + "timestamp": "2024-08-02T12:23:17.201419" }, - "sarscov2 - [fastq1, fastq2], index, fasta, true": { + "sarscov2 - [fastq1, fastq2], index, fasta, true, 2048, 4 - stub": { "content": [ - "test.bam", - [ - "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T20:44:56.510177191" - }, - "sarscov2 - fastq, index, fasta, false, 0": { - "content": [ - "test.bam", - [ - "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-18T10:16:23.45126091" - }, - "sarscov2 - fastq, index, fasta, true, 2048": { - "content": [ - "test.bam", - [ - "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-18T10:16:46.541148031" - }, - "sarscov2 - fastq, index, fasta, false": { - "content": [ - "test.bam", - [ - "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T20:00:05.782384898" - }, - "sarscov2 - fastq, index, fasta, true": { - "content": [ - "test.bam", - [ - "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-05-15T20:44:05.2657749" - }, - "sarscov2 - [fastq1, fastq2], index, fasta, true, 2048 - stub": { - "content": [ - "test.bam", - [ - "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" - ] + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + + ], + "versions": [ + "versions.yml:md5,700d57071f430eb29b3c67d0a199eb95" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-06-18T10:17:40.514767321" + "timestamp": "2024-08-02T12:31:46.777111" } } \ No newline at end of file diff --git a/modules/nf-core/bwameth/align/environment.yml b/modules/nf-core/bwameth/align/environment.yml index c2711df3dea..707376ebf90 100644 --- a/modules/nf-core/bwameth/align/environment.yml +++ b/modules/nf-core/bwameth/align/environment.yml @@ -1,7 +1,5 @@ -name: bwameth_align channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::bwameth=0.2.2 + - bioconda::bwameth=0.2.7 diff --git a/modules/nf-core/bwameth/align/main.nf b/modules/nf-core/bwameth/align/main.nf index 72471cc8215..476463ae0df 100644 --- a/modules/nf-core/bwameth/align/main.nf +++ b/modules/nf-core/bwameth/align/main.nf @@ -4,8 +4,8 @@ process BWAMETH_ALIGN { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bwameth:0.2.2--py_1' : - 'biocontainers/bwameth:0.2.2--py_1' }" + 'https://depot.galaxyproject.org/singularity/bwameth:0.2.7--pyh7cba7a3_0' : + 'biocontainers/bwameth:0.2.7--pyh7cba7a3_0' }" input: tuple val(meta), path(reads) @@ -40,7 +40,18 @@ process BWAMETH_ALIGN { cat <<-END_VERSIONS > versions.yml "${task.process}": - bwameth: \$(echo \$(bwameth.py --version 2>&1) | cut -f2 -d" ") + bwameth: \$(bwameth.py --version | cut -f2 -d" ") + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bwameth: \$(bwameth.py --version | cut -f2 -d" ") END_VERSIONS """ } diff --git a/modules/nf-core/bwameth/align/meta.yml b/modules/nf-core/bwameth/align/meta.yml index 041c026dc19..a5338e4e7ea 100644 --- a/modules/nf-core/bwameth/align/meta.yml +++ b/modules/nf-core/bwameth/align/meta.yml @@ -33,7 +33,7 @@ input: List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. - index: - type: dir + type: directory description: Directory containing bwameth genome index output: - meta: diff --git a/modules/nf-core/bwameth/align/tests/main.nf.test b/modules/nf-core/bwameth/align/tests/main.nf.test new file mode 100644 index 00000000000..94b1f56fde6 --- /dev/null +++ b/modules/nf-core/bwameth/align/tests/main.nf.test @@ -0,0 +1,112 @@ + +nextflow_process { + + name "Test Process BWAMETH_ALIGN" + script "../main.nf" + process "BWAMETH_ALIGN" + + tag "modules" + tag "modules_nfcore" + tag "bwameth" + tag "bwameth/align" + tag "bwameth/index" + + setup { + run("BWAMETH_INDEX") { + script "../../../bwameth/index/main.nf" + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + + """ + } + } + } + + test("test-bwameth-align-single-end") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BWAMETH_INDEX.out.index + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.versions + ).match() + } + ) + } + } + + test("test-bwameth-align-paired-end") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BWAMETH_INDEX.out.index + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.versions + ).match() + } + ) + } + } + + test("test-bwameth-align-paired-end-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test.methylated_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = BWAMETH_INDEX.out.index + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bwameth/align/tests/main.nf.test.snap b/modules/nf-core/bwameth/align/tests/main.nf.test.snap new file mode 100644 index 00000000000..2c8c120f351 --- /dev/null +++ b/modules/nf-core/bwameth/align/tests/main.nf.test.snap @@ -0,0 +1,63 @@ +{ + "test-bwameth-align-single-end": { + "content": [ + "5fdda0ada69daa3956c65a24c9d1c1e0", + [ + "versions.yml:md5,c00660f78aeab4fabe00092c70656098" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T20:43:02.509483" + }, + "test-bwameth-align-paired-end": { + "content": [ + "cbd5cfa8b446e26987898a45a94770ba", + [ + "versions.yml:md5,c00660f78aeab4fabe00092c70656098" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T20:43:10.963043" + }, + "test-bwameth-align-paired-end-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,c00660f78aeab4fabe00092c70656098" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,c00660f78aeab4fabe00092c70656098" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T20:43:17.04632" + } +} \ No newline at end of file diff --git a/modules/nf-core/bwameth/index/environment.yml b/modules/nf-core/bwameth/index/environment.yml index 4fb6209260d..707376ebf90 100644 --- a/modules/nf-core/bwameth/index/environment.yml +++ b/modules/nf-core/bwameth/index/environment.yml @@ -1,7 +1,5 @@ -name: bwameth_index channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::bwameth=0.2.2 + - bioconda::bwameth=0.2.7 diff --git a/modules/nf-core/bwameth/index/main.nf b/modules/nf-core/bwameth/index/main.nf index 563f8570d90..33c83d90791 100644 --- a/modules/nf-core/bwameth/index/main.nf +++ b/modules/nf-core/bwameth/index/main.nf @@ -4,8 +4,8 @@ process BWAMETH_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bwameth:0.2.2--py_1' : - 'biocontainers/bwameth:0.2.2--py_1' }" + 'https://depot.galaxyproject.org/singularity/bwameth:0.2.7--pyh7cba7a3_0' : + 'biocontainers/bwameth:0.2.7--pyh7cba7a3_0' }" input: path fasta, stageAs: "bwameth/*" @@ -24,7 +24,7 @@ process BWAMETH_INDEX { cat <<-END_VERSIONS > versions.yml "${task.process}": - bwameth: \$(echo \$(bwameth.py --version 2>&1) | cut -f2 -d" ") + bwameth: \$(bwameth.py --version | cut -f2 -d" ") END_VERSIONS """ } diff --git a/modules/nf-core/bwameth/index/meta.yml b/modules/nf-core/bwameth/index/meta.yml index 731e68055dd..1836d2a2910 100644 --- a/modules/nf-core/bwameth/index/meta.yml +++ b/modules/nf-core/bwameth/index/meta.yml @@ -23,7 +23,7 @@ input: description: Input genome fasta file output: - index: - type: dir + type: directory description: Directory containing bwameth genome index pattern: "index" - versions: diff --git a/modules/nf-core/bwameth/index/tests/main.nf.test b/modules/nf-core/bwameth/index/tests/main.nf.test new file mode 100644 index 00000000000..a314788ab00 --- /dev/null +++ b/modules/nf-core/bwameth/index/tests/main.nf.test @@ -0,0 +1,31 @@ + +nextflow_process { + + name "Test Process BWAMETH_INDEX" + script "../main.nf" + process "BWAMETH_INDEX" + + tag "modules" + tag "modules_nfcore" + tag "bwameth" + tag "bwameth/index" + + test("test-bwameth-index") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/bwameth/index/tests/main.nf.test.snap b/modules/nf-core/bwameth/index/tests/main.nf.test.snap new file mode 100644 index 00000000000..27f07221db3 --- /dev/null +++ b/modules/nf-core/bwameth/index/tests/main.nf.test.snap @@ -0,0 +1,41 @@ +{ + "test-bwameth-index": { + "content": [ + { + "0": [ + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.bwameth.c2t:md5,98039984526a41d04d6bd92fcc040c62", + "genome.fasta.bwameth.c2t.amb:md5,249a4195069071ce47cd0bae68abe376", + "genome.fasta.bwameth.c2t.ann:md5,46524d4359dcdfb203a235ab3b930dbb", + "genome.fasta.bwameth.c2t.bwt:md5,84f65df7d42dbe84c9ccfaddfdd5ea6b", + "genome.fasta.bwameth.c2t.pac:md5,4d8e51cb0bbdeaf24576bdf0264d8653", + "genome.fasta.bwameth.c2t.sa:md5,d25f6486f5134f57ed5b258f6fbb8673" + ] + ], + "1": [ + "versions.yml:md5,0827d461c1a0b41bd533aea470843c2c" + ], + "index": [ + [ + "genome.fasta:md5,6e9fe4042a72f2345f644f239272b7e6", + "genome.fasta.bwameth.c2t:md5,98039984526a41d04d6bd92fcc040c62", + "genome.fasta.bwameth.c2t.amb:md5,249a4195069071ce47cd0bae68abe376", + "genome.fasta.bwameth.c2t.ann:md5,46524d4359dcdfb203a235ab3b930dbb", + "genome.fasta.bwameth.c2t.bwt:md5,84f65df7d42dbe84c9ccfaddfdd5ea6b", + "genome.fasta.bwameth.c2t.pac:md5,4d8e51cb0bbdeaf24576bdf0264d8653", + "genome.fasta.bwameth.c2t.sa:md5,d25f6486f5134f57ed5b258f6fbb8673" + ] + ], + "versions": [ + "versions.yml:md5,0827d461c1a0b41bd533aea470843c2c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:57:11.602104" + } +} \ No newline at end of file diff --git a/modules/nf-core/cadd/environment.yml b/modules/nf-core/cadd/environment.yml index 26f170e9ddd..4477e16e5b2 100644 --- a/modules/nf-core/cadd/environment.yml +++ b/modules/nf-core/cadd/environment.yml @@ -1,8 +1,6 @@ -name: cadd channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cadd-scripts=1.6.post1 - conda-forge::conda=4.14.0 diff --git a/modules/nf-core/cafe/environment.yml b/modules/nf-core/cafe/environment.yml new file mode 100644 index 00000000000..79c9b6f28fc --- /dev/null +++ b/modules/nf-core/cafe/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::cafe=5.1.0" diff --git a/modules/nf-core/cafe/main.nf b/modules/nf-core/cafe/main.nf new file mode 100644 index 00000000000..9e5510e085b --- /dev/null +++ b/modules/nf-core/cafe/main.nf @@ -0,0 +1,62 @@ +process CAFE { + label 'process_high' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/cafe:5.1.0--h43eeafb_0': + 'biocontainers/cafe:5.1.0--h43eeafb_0' }" + + input: + tuple val(meta), path(infile) + path(tree) + + output: + tuple val(meta), path("${prefix}") , emit: cafe + path("versions.yml") , emit: versions + path("$prefix/*_count.tab") , emit: cafe_base_count + path("$prefix/*.tre") , emit: cafe_significant_trees + path("$prefix/*_report.cafe") , emit: cafe_report + path("$prefix/*results.txt") , emit: cafe_results + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + VERSION = '5.1.0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + tr '\\r' '\\n' < $infile > infile.txt + tr '\\r' '\\n' < $tree > treefile.txt + cafe5 \\ + -i infile.txt \\ + -t treefile.txt \\ + $args \\ + --cores ${task.cpus} \\ + -o ${prefix} + + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cafe: $VERSION + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + VERSION = '5.1.0' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + mkdir ${prefix} + touch versions.yml + touch ${prefix}/*_count.tab + touch ${prefix}/*.tre + touch ${prefix}/*_report.cafe + touch ${prefix}/*results.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cafe: $VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/cafe/meta.yml b/modules/nf-core/cafe/meta.yml new file mode 100644 index 00000000000..cc1e696c9da --- /dev/null +++ b/modules/nf-core/cafe/meta.yml @@ -0,0 +1,61 @@ +name: "cafe" +description: Analysis of gene family evolution +keywords: + - gene + - phylogeny + - genomics +tools: + - "cafe": + description: "Computational Analysis of gene Family Evolution (CAFE)" + homepage: "https://github.com/hahnlab/CAFE5" + documentation: "https://github.com/hahnlab/CAFE5" + tool_dev_url: "https://github.com/hahnlab/CAFE5" + doi: "10.1093/bioinformatics/btaa1027" + licence: ["IU OPEN SOURCE LICENSE (see https://github.com/hahnlab/CAFE5/blob/master/LICENSE)"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - infile: + type: file + description: Gene counts table (from OrthoMCL, SwiftOrtho, FastOrtho, OrthAgogue or OrthoFinder) + pattern: "*.{txt,tsv,tab}" + - tree: + type: file + description: Newick formatted tree + pattern: "*.{txt}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - cafe: + type: directory + description: A folder with all the cafe output + - cafe_base_count: + type: file + description: File containing counts of genes per orthogroup + pattern: "*_count.tab" + - cafe_significant_trees: + type: file + description: File containing significant trees (newick format) + pattern: "*.tre" + - cafe_report: + type: file + description: File containing the final report from cafe + pattern: "*_report.cafe" + - cafe_results: + type: file + description: File containing the main result files from cafe + pattern: "*results.txt" +authors: + - "@chriswyatt1" +maintainers: + - "@chriswyatt1" diff --git a/modules/nf-core/cafe/tests/main.nf.test b/modules/nf-core/cafe/tests/main.nf.test new file mode 100644 index 00000000000..312aea20130 --- /dev/null +++ b/modules/nf-core/cafe/tests/main.nf.test @@ -0,0 +1,66 @@ +nextflow_process { + + name "Test Process CAFE" + script "../main.nf" + process "CAFE" + + tag "modules" + tag "modules_nfcore" + tag "cafe" + + test("mycoplasma - genecounts - tree") { + when { + process { + """ + input[0] = [ [ id:'test' ], + file(params.modules_testdata_base_path + "delete_me/cafe/hog_gene_counts.small.tsv", checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + "delete_me/cafe/SpeciesTree_rooted_ultra.txt", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.cafe_base_count, + process.out.cafe_significant_trees, + file(process.out.cafe_report[0]).readLines()[3..4], + process.out.versions + ).match() + } + ) + } + } + + test("mycoplasma - genecounts - tree - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test' ], + file(params.modules_testdata_base_path + "delete_me/cafe/hog_gene_counts.small.tsv", checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + "delete_me/cafe/SpeciesTree_rooted_ultra.txt", checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.cafe_base_count, + process.out.cafe_significant_trees, + process.out.versions + ).match() + } + ) + } + + } + +} diff --git a/modules/nf-core/cafe/tests/main.nf.test.snap b/modules/nf-core/cafe/tests/main.nf.test.snap new file mode 100644 index 00000000000..09119dc1c7d --- /dev/null +++ b/modules/nf-core/cafe/tests/main.nf.test.snap @@ -0,0 +1,42 @@ +{ + "mycoplasma - genecounts - tree": { + "content": [ + [ + "Base_count.tab:md5,d810ccef8abaf5e0bf52fe4ab7d151ef" + ], + [ + "Base_asr.tre:md5,af14e1033d3b90ff92e2b32b7892abcf" + ], + [ + "# IDs of nodes:(Mycoplasmoides_fastidiosum<1>,(Mycoplasmoides_gallisepticum<2>,(Mycoplasmoides_genitalium<3>,Mycoplasmoides_pneumoniae<4>)<7>)<6>)<5>", + "# Output format for: ' Average Expansion', 'Expansions', 'No Change', 'Contractions', and 'Branch-specific P-values' = (node ID, node ID): (1,6) (2,7) (3,4) " + ], + [ + "versions.yml:md5,00a1698f24a7eaf4de8ba039af469e29" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T16:28:38.500490689" + }, + "mycoplasma - genecounts - tree - stub": { + "content": [ + [ + "*_count.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "*.tre:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "versions.yml:md5,00a1698f24a7eaf4de8ba039af469e29" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T16:29:00.767162226" + } +} \ No newline at end of file diff --git a/modules/nf-core/calder2/environment.yml b/modules/nf-core/calder2/environment.yml index e694b7298e0..6bbba46df2d 100644 --- a/modules/nf-core/calder2/environment.yml +++ b/modules/nf-core/calder2/environment.yml @@ -1,7 +1,5 @@ -name: calder2 channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::r-calder2=0.3 + - bioconda::r-calder2=0.7 diff --git a/modules/nf-core/calder2/main.nf b/modules/nf-core/calder2/main.nf index cb77dfe9a15..c3990c26278 100644 --- a/modules/nf-core/calder2/main.nf +++ b/modules/nf-core/calder2/main.nf @@ -2,10 +2,11 @@ process CALDER2 { tag '$meta.id' label 'process_high' + // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/r-calder2:0.3--r41hdfd78af_0' : - 'biocontainers/r-calder2:0.3--r41hdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/r-calder2:0.7--r43hdfd78af_1' : + 'biocontainers/r-calder2:0.7--r43hdfd78af_1' }" input: @@ -13,8 +14,8 @@ process CALDER2 { val resolution output: - tuple val(meta), path("${meta.id}/") , emit: output_folder - tuple val(meta), path("${meta.id}/intermediate_data/") , emit: intermediate_data_folder , optional: true + tuple val(meta), path("${prefix}/") , emit: output_folder + tuple val(meta), path("${prefix}/intermediate_data/") , emit: intermediate_data_folder , optional: true path "versions.yml" , emit: versions when: @@ -22,10 +23,10 @@ process CALDER2 { script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" def suffix = resolution ? "::/resolutions/$resolution" : "" def cpus = task.cpus ?: 1 - def VERSION = '0.3' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + def VERSION = '0.7' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ # getting binsize as mandatory input for calder binsize="\$(cooler info --field bin-size $cool$suffix)" @@ -42,4 +43,25 @@ process CALDER2 { calder: $VERSION END_VERSIONS """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '0.7' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + mkdir -p ${prefix}/sub_compartments + mkdir -p ${prefix}/sub_domains + + touch ${prefix}/sub_compartments/all_sub_compartments.bed + touch ${prefix}/sub_compartments/all_sub_compartments.tsv + touch ${prefix}/sub_compartments/cor_with_ref.ALL.txt + touch ${prefix}/sub_compartments/cor_with_ref.pdf + touch ${prefix}/sub_compartments/cor_with_ref.txt + + touch ${prefix}/sub_domains/all_nested_boundaries.bed + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + calder: $VERSION + END_VERSIONS + """ } diff --git a/modules/nf-core/calder2/meta.yml b/modules/nf-core/calder2/meta.yml index fef6a2cf823..24758928eec 100644 --- a/modules/nf-core/calder2/meta.yml +++ b/modules/nf-core/calder2/meta.yml @@ -19,12 +19,12 @@ input: - meta: type: map description: Groovy Map containing sample information. E.g. [ id:'test', single_end:false ] - - input: + - cool: type: file description: Path to COOL file pattern: "*.{cool.mcool}" - resolution: - type: value + type: integer description: In case a .mcool file is provided, which resolution level to use for the analysis output: - meta: @@ -34,10 +34,10 @@ output: type: file description: File containing software versions pattern: "versions.yml" - - output: + - output_folder: type: directory description: Output folder containing sub-compartment (.tsv/.bed) and domain boundaries calls (.bed) - - intermediate_data: + - intermediate_data_folder: type: directory description: Output folder containing intermediate data produced during the computation authors: diff --git a/modules/nf-core/calder2/tests/main.nf.test b/modules/nf-core/calder2/tests/main.nf.test new file mode 100644 index 00000000000..7833470e782 --- /dev/null +++ b/modules/nf-core/calder2/tests/main.nf.test @@ -0,0 +1,135 @@ +import groovy.io.FileType + +nextflow_process { + + name "Test Process CALDER2" + script "../main.nf" + process "CALDER2" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "calder2" + + test("test-calder2-cool") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], //meta map + file('https://raw.githubusercontent.com/CSOgroup/CALDER2/main/tests/testthat/data/test.cool', checkIfExists: true) + ] + + input[1] = [:] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { + def all_files = [] + + file(process.out.output_folder[0][1]).eachFileRecurse (FileType.FILES) { file -> + all_files << file + } + + def all_file_names = all_files.collect { it.name }.toSorted() + + def stable_file_names = [ + 'all_sub_compartments.bed', + 'all_sub_compartments.tsv', + 'cor_with_ref.ALL.txt', + 'cor_with_ref.txt', + 'all_nested_boundaries.bed' + ] + + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_file_names, + stable_files, + process.out.versions[0] + ).match() + } + ) + } + } + + test("test-calder2-mcool") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], //meta map + file('https://raw.githubusercontent.com/CSOgroup/CALDER2/main/tests/testthat/data/test.mcool', checkIfExists: true) + ] + + input[1] = 100000 + + """ + } + } + + then { + assertAll( + { assert process.success }, + { + def all_files = [] + + file(process.out.output_folder[0][1]).eachFileRecurse (FileType.FILES) { file -> + all_files << file + } + + def all_file_names = all_files.collect { it.name }.toSorted() + + def stable_file_names = [ + 'all_sub_compartments.bed', + 'all_sub_compartments.tsv', + 'cor_with_ref.ALL.txt', + 'cor_with_ref.txt', + 'all_nested_boundaries.bed' + ] + + def stable_files = all_files.findAll { it.name in stable_file_names }.toSorted() + + assert snapshot( + all_file_names, + stable_files, + process.out.versions[0] + ).match() + } + ) + } + } + + test("test-calder2-mcool-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], //meta map + file('https://raw.githubusercontent.com/CSOgroup/CALDER2/main/tests/testthat/data/test.mcool', checkIfExists: true) + ] + + input[1] = 100000 + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/calder2/tests/main.nf.test.snap b/modules/nf-core/calder2/tests/main.nf.test.snap new file mode 100644 index 00000000000..22312cd2176 --- /dev/null +++ b/modules/nf-core/calder2/tests/main.nf.test.snap @@ -0,0 +1,113 @@ +{ + "test-calder2-mcool-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + [ + "all_sub_compartments.bed:md5,d41d8cd98f00b204e9800998ecf8427e", + "all_sub_compartments.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "cor_with_ref.ALL.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "cor_with_ref.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "cor_with_ref.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "all_nested_boundaries.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,b312ffd67c18a79a5db11b78777c00d0" + ], + "intermediate_data_folder": [ + + ], + "output_folder": [ + [ + { + "id": "test" + }, + [ + [ + "all_sub_compartments.bed:md5,d41d8cd98f00b204e9800998ecf8427e", + "all_sub_compartments.tsv:md5,d41d8cd98f00b204e9800998ecf8427e", + "cor_with_ref.ALL.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "cor_with_ref.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "cor_with_ref.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "all_nested_boundaries.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ] + ], + "versions": [ + "versions.yml:md5,b312ffd67c18a79a5db11b78777c00d0" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T15:17:11.435944" + }, + "test-calder2-cool": { + "content": [ + [ + "all_nested_boundaries.bed", + "all_sub_compartments.bed", + "all_sub_compartments.tsv", + "cor_with_ref.ALL.txt", + "cor_with_ref.pdf", + "cor_with_ref.txt" + ], + [ + "all_sub_compartments.bed:md5,1ba23032928f207bf4c7f77b3a0cdf15", + "all_sub_compartments.tsv:md5,059bf7738512ff5f8684d0e69f7897fe", + "cor_with_ref.ALL.txt:md5,05fd4e65c0ba139b87ca36712a5a5b6a", + "cor_with_ref.txt:md5,54f954d92df161db5cae7845d2786ad2", + "all_nested_boundaries.bed:md5,56172ee755f573ad57320273ca0f52cd" + ], + "versions.yml:md5,b312ffd67c18a79a5db11b78777c00d0" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T15:16:37.504391" + }, + "test-calder2-mcool": { + "content": [ + [ + "all_nested_boundaries.bed", + "all_sub_compartments.bed", + "all_sub_compartments.tsv", + "cor_with_ref.ALL.txt", + "cor_with_ref.pdf", + "cor_with_ref.txt" + ], + [ + "all_sub_compartments.bed:md5,21b32c66d7ebe5acd2459a32a6592534", + "all_sub_compartments.tsv:md5,743c841b4d4aaa97c5a197c9921fba92", + "cor_with_ref.ALL.txt:md5,5cef6f44386930f637b8c4c4c3b5ee3b", + "cor_with_ref.txt:md5,f748876d367d0fdb751bd00e8e9bf60a", + "all_nested_boundaries.bed:md5,c066de5e2e789e3fe65b900a3b0a4876" + ], + "versions.yml:md5,b312ffd67c18a79a5db11b78777c00d0" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T15:17:06.081233" + } +} \ No newline at end of file diff --git a/modules/nf-core/calder2/tests/nextflow.config b/modules/nf-core/calder2/tests/nextflow.config new file mode 100644 index 00000000000..9849869a3ff --- /dev/null +++ b/modules/nf-core/calder2/tests/nextflow.config @@ -0,0 +1,3 @@ +process { + ext.args = '--genome hg38' +} \ No newline at end of file diff --git a/modules/nf-core/canu/environment.yml b/modules/nf-core/canu/environment.yml index 752bbbed703..9c7f6dd49b1 100644 --- a/modules/nf-core/canu/environment.yml +++ b/modules/nf-core/canu/environment.yml @@ -1,7 +1,5 @@ -name: canu channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::canu=2.2 diff --git a/modules/nf-core/canu/meta.yml b/modules/nf-core/canu/meta.yml index 2feed43fa7a..afcaa55b9e9 100644 --- a/modules/nf-core/canu/meta.yml +++ b/modules/nf-core/canu/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://canu.readthedocs.io/en/latest/tutorial.html" tool_dev_url: "https://github.com/marbl/canu" doi: "10.1101/gr.215087.116" - licence: "['GPL v2 and others']" + licence: ["GPL v2 and others"] input: - meta: type: map @@ -24,11 +24,11 @@ input: description: fasta/fastq file pattern: "*.{fasta,fastq}" - mode: - type: value + type: string description: Canu mode depending on the input data (source and error rate) pattern: "-pacbio|-nanopore|-pacbio-hifi" - genomesize: - type: value + type: string description: An estimate of the size of the genome. Common suffices are allowed, for example, 3.7m or 2.8g pattern: "[g|m|k]" output: diff --git a/modules/nf-core/cat/cat/environment.yml b/modules/nf-core/cat/cat/environment.yml index 17a04ef2324..9b01c865a28 100644 --- a/modules/nf-core/cat/cat/environment.yml +++ b/modules/nf-core/cat/cat/environment.yml @@ -1,7 +1,5 @@ -name: cat_cat channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::pigz=2.3.4 diff --git a/modules/nf-core/cat/cat/main.nf b/modules/nf-core/cat/cat/main.nf index adbdbd7ba62..2862c64cd9d 100644 --- a/modules/nf-core/cat/cat/main.nf +++ b/modules/nf-core/cat/cat/main.nf @@ -76,4 +76,3 @@ def getFileSuffix(filename) { def match = filename =~ /^.*?((\.\w{1,5})?(\.\w{1,5}\.gz$))/ return match ? match[0][1] : filename.substring(filename.lastIndexOf('.')) } - diff --git a/modules/nf-core/cat/cat/tests/main.nf.test b/modules/nf-core/cat/cat/tests/main.nf.test index fcee2d19f2a..9cb1617883f 100644 --- a/modules/nf-core/cat/cat/tests/main.nf.test +++ b/modules/nf-core/cat/cat/tests/main.nf.test @@ -29,7 +29,8 @@ nextflow_process { then { assertAll( { assert !process.success }, - { assert process.stdout.toString().contains("The name of the input file can't be the same as for the output prefix") } + { assert process.stdout.toString().contains("The name of the input file can't be the same as for the output prefix") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -83,8 +84,12 @@ nextflow_process { def lines = path(process.out.file_out.get(0).get(1)).linesGzip assertAll( { assert process.success }, - { assert snapshot(lines[0..5]).match("test_cat_zipped_zipped_lines") }, - { assert snapshot(lines.size()).match("test_cat_zipped_zipped_size")} + { assert snapshot( + lines[0..5], + lines.size(), + process.out.versions + ).match() + } ) } } @@ -142,8 +147,12 @@ nextflow_process { def lines = path(process.out.file_out.get(0).get(1)).linesGzip assertAll( { assert process.success }, - { assert snapshot(lines[0..5]).match("test_cat_unzipped_zipped_lines") }, - { assert snapshot(lines.size()).match("test_cat_unzipped_zipped_size")} + { assert snapshot( + lines[0..5], + lines.size(), + process.out.versions + ).match() + } ) } } @@ -170,8 +179,12 @@ nextflow_process { def lines = path(process.out.file_out.get(0).get(1)).linesGzip assertAll( { assert process.success }, - { assert snapshot(lines[0..5]).match("test_cat_one_file_unzipped_zipped_lines") }, - { assert snapshot(lines.size()).match("test_cat_one_file_unzipped_zipped_size")} + { assert snapshot( + lines[0..5], + lines.size(), + process.out.versions + ).match() + } ) } } diff --git a/modules/nf-core/cat/cat/tests/main.nf.test.snap b/modules/nf-core/cat/cat/tests/main.nf.test.snap index 423571ba274..b7623ee6506 100644 --- a/modules/nf-core/cat/cat/tests/main.nf.test.snap +++ b/modules/nf-core/cat/cat/tests/main.nf.test.snap @@ -1,10 +1,4 @@ { - "test_cat_unzipped_zipped_size": { - "content": [ - 375 - ], - "timestamp": "2023-10-16T14:33:08.049445686" - }, "test_cat_unzipped_unzipped": { "content": [ { @@ -34,6 +28,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, "timestamp": "2023-10-16T14:32:18.500464399" }, "test_cat_zipped_unzipped": { @@ -65,9 +63,13 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, "timestamp": "2023-10-16T14:32:49.642741302" }, - "test_cat_zipped_zipped_lines": { + "test_cat_zipped_zipped": { "content": [ [ "MT192765.1\tGenbank\ttranscript\t259\t29667\t.\t+\t.\tID=unknown_transcript_1;geneID=orf1ab;gene_name=orf1ab", @@ -76,11 +78,31 @@ "MT192765.1\tGenbank\tCDS\t13461\t21548\t.\t+\t0\tParent=unknown_transcript_1;exception=\"ribosomal slippage\";gbkey=CDS;gene=orf1ab;note=\"pp1ab;translated=by -1 ribosomal frameshift\";product=\"orf1ab polyprotein\";protein_id=QIK50426.1", "MT192765.1\tGenbank\tCDS\t21556\t25377\t.\t+\t0\tParent=unknown_transcript_1;gbkey=CDS;gene=S;note=\"structural protein\";product=\"surface glycoprotein\";protein_id=QIK50427.1", "MT192765.1\tGenbank\tgene\t21556\t25377\t.\t+\t.\tParent=unknown_transcript_1" + ], + 78, + [ + "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:51:46.802978" + }, + "test_cat_name_conflict": { + "content": [ + [ + ] ], - "timestamp": "2023-10-16T14:32:33.629048645" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:51:29.45394" }, - "test_cat_unzipped_zipped_lines": { + "test_cat_one_file_unzipped_zipped": { "content": [ [ ">MT192765.1 Severe acute respiratory syndrome coronavirus 2 isolate SARS-CoV-2/human/USA/PC00101P/2020, complete genome", @@ -89,11 +111,19 @@ "TAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTTGTCCGG", "GTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTT", "ACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAG" + ], + 374, + [ + "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" ] ], - "timestamp": "2023-10-16T14:33:08.038830506" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:52:02.774016" }, - "test_cat_one_file_unzipped_zipped_lines": { + "test_cat_unzipped_zipped": { "content": [ [ ">MT192765.1 Severe acute respiratory syndrome coronavirus 2 isolate SARS-CoV-2/human/USA/PC00101P/2020, complete genome", @@ -102,20 +132,16 @@ "TAACTCGTCTATCTTCTGCAGGCTGCTTACGGTTTCGTCCGTGTTGCAGCCGATCATCAGCACATCTAGGTTTTGTCCGG", "GTGTGACCGAAAGGTAAGATGGAGAGCCTTGTCCCTGGTTTCAACGAGAAAACACACGTCCAACTCAGTTTGCCTGTTTT", "ACAGGTTCGCGACGTGCTCGTACGTGGCTTTGGAGACTCCGTGGAGGAGGTCTTATCAGAGGCACGTCAACATCTTAAAG" + ], + 375, + [ + "versions.yml:md5,115ed6177ebcff24eb99d503fa5ef894" ] ], - "timestamp": "2023-10-16T14:33:21.39642399" - }, - "test_cat_zipped_zipped_size": { - "content": [ - 78 - ], - "timestamp": "2023-10-16T14:32:33.641869244" - }, - "test_cat_one_file_unzipped_zipped_size": { - "content": [ - 374 - ], - "timestamp": "2023-10-16T14:33:21.4094373" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:51:57.581523" } } \ No newline at end of file diff --git a/modules/nf-core/cat/fastq/environment.yml b/modules/nf-core/cat/fastq/environment.yml index 8c69b121f73..c7eb9bd1c3c 100644 --- a/modules/nf-core/cat/fastq/environment.yml +++ b/modules/nf-core/cat/fastq/environment.yml @@ -1,7 +1,5 @@ -name: cat_fastq channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::coreutils=8.30 diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index f132b2adc19..b68e5f91142 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -53,9 +53,9 @@ process CAT_FASTQ { def prefix = task.ext.prefix ?: "${meta.id}" def readList = reads instanceof List ? reads.collect{ it.toString() } : [reads.toString()] if (meta.single_end) { - if (readList.size > 1) { + if (readList.size >= 1) { """ - touch ${prefix}.merged.fastq.gz + echo '' | gzip > ${prefix}.merged.fastq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -64,10 +64,10 @@ process CAT_FASTQ { """ } } else { - if (readList.size > 2) { + if (readList.size >= 2) { """ - touch ${prefix}_1.merged.fastq.gz - touch ${prefix}_2.merged.fastq.gz + echo '' | gzip > ${prefix}_1.merged.fastq.gz + echo '' | gzip > ${prefix}_2.merged.fastq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test b/modules/nf-core/cat/fastq/tests/main.nf.test index a71dcb8dfad..f88a78b6ca7 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test +++ b/modules/nf-core/cat/fastq/tests/main.nf.test @@ -13,9 +13,6 @@ nextflow_process { test("test_cat_fastq_single_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -38,9 +35,6 @@ nextflow_process { test("test_cat_fastq_paired_end") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -65,9 +59,6 @@ nextflow_process { test("test_cat_fastq_single_end_same_name") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -90,9 +81,6 @@ nextflow_process { test("test_cat_fastq_paired_end_same_name") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -117,9 +105,129 @@ nextflow_process { test("test_cat_fastq_single_end_single_file") { when { - params { - outdir = "$outputDir" + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_paired_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end_same_name - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_paired_end_same_name - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + ]) + """ } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_cat_fastq_single_end_single_file - stub") { + + options "-stub" + + when { process { """ input[0] = Channel.of([ diff --git a/modules/nf-core/cat/fastq/tests/main.nf.test.snap b/modules/nf-core/cat/fastq/tests/main.nf.test.snap index 43dfe28fc76..aec119a94ec 100644 --- a/modules/nf-core/cat/fastq/tests/main.nf.test.snap +++ b/modules/nf-core/cat/fastq/tests/main.nf.test.snap @@ -28,6 +28,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:30:39.816981" }, "test_cat_fastq_single_end_same_name": { @@ -59,6 +63,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:32:35.229332" }, "test_cat_fastq_single_end_single_file": { @@ -90,6 +98,10 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:34:00.058829" }, "test_cat_fastq_paired_end_same_name": { @@ -127,8 +139,123 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:33:33.031555" }, + "test_cat_fastq_single_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:28.244999" + }, + "test_cat_fastq_paired_end_same_name - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:57.070911" + }, + "test_cat_fastq_single_end_same_name - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:46.796254" + }, "test_cat_fastq_paired_end": { "content": [ { @@ -164,6 +291,86 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, "timestamp": "2024-01-17T17:32:02.270935" + }, + "test_cat_fastq_paired_end - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:07:37.807553" + }, + "test_cat_fastq_single_end_single_file - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,d42d6e24d67004608495883e00bd501b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:14:51.861264" } } \ No newline at end of file diff --git a/modules/nf-core/cdhit/cdhit/environment.yml b/modules/nf-core/cdhit/cdhit/environment.yml index fb5b89fc862..59e671e484c 100644 --- a/modules/nf-core/cdhit/cdhit/environment.yml +++ b/modules/nf-core/cdhit/cdhit/environment.yml @@ -1,7 +1,5 @@ -name: cdhit_cdhit channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cd-hit=4.8.1 diff --git a/modules/nf-core/cdhit/cdhit/tests/main.nf.test b/modules/nf-core/cdhit/cdhit/tests/main.nf.test index 17960345e30..2daea9dd2ff 100644 --- a/modules/nf-core/cdhit/cdhit/tests/main.nf.test +++ b/modules/nf-core/cdhit/cdhit/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['proteomics']['database']['yeast_ups'], checkIfExists: true) + file(params.modules_testdata_base_path + 'proteomics/database/yeast_UPS.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/cdhit/cdhitest/environment.yml b/modules/nf-core/cdhit/cdhitest/environment.yml index 0ddd42629a2..59e671e484c 100644 --- a/modules/nf-core/cdhit/cdhitest/environment.yml +++ b/modules/nf-core/cdhit/cdhitest/environment.yml @@ -1,7 +1,5 @@ -name: cdhit_cdhitest channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cd-hit=4.8.1 diff --git a/modules/nf-core/cdhit/cdhitest/meta.yml b/modules/nf-core/cdhit/cdhitest/meta.yml index 4c850aa02e2..c6b2dfc82b0 100644 --- a/modules/nf-core/cdhit/cdhitest/meta.yml +++ b/modules/nf-core/cdhit/cdhitest/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://github.com/weizhongli/cdhit/wiki" tool_dev_url: "https://github.com/weizhongli/cdhit" doi: "10.1093/bioinformatics/btl158" - licence: "['GPL v2']" + licence: ["GPL v2"] input: - meta: type: map diff --git a/modules/nf-core/cdhit/cdhitest/tests/main.nf.test b/modules/nf-core/cdhit/cdhitest/tests/main.nf.test new file mode 100644 index 00000000000..509edadcf96 --- /dev/null +++ b/modules/nf-core/cdhit/cdhitest/tests/main.nf.test @@ -0,0 +1,57 @@ + +nextflow_process { + + name "Test Process CDHIT_CDHITEST" + script "../main.nf" + process "CDHIT_CDHITEST" + + tag "modules" + tag "modules_nfcore" + tag "cdhit" + tag "cdhit/cdhitest" + + test("test-cdhit-cdhitest") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cdhit-cdhitest-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cdhit/cdhitest/tests/main.nf.test.snap b/modules/nf-core/cdhit/cdhitest/tests/main.nf.test.snap new file mode 100644 index 00000000000..09dfb92a3c7 --- /dev/null +++ b/modules/nf-core/cdhit/cdhitest/tests/main.nf.test.snap @@ -0,0 +1,108 @@ +{ + "test-cdhit-cdhitest": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,c96caedf8c949a2b871b83152d99c652" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa.clstr:md5,941a0ee41ff76036ecbd6fa3ac01be7a" + ] + ], + "2": [ + "versions.yml:md5,49e662721e26db91ee63badf7f89dd1c" + ], + "clusters": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa.clstr:md5,941a0ee41ff76036ecbd6fa3ac01be7a" + ] + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,c96caedf8c949a2b871b83152d99c652" + ] + ], + "versions": [ + "versions.yml:md5,49e662721e26db91ee63badf7f89dd1c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:40:37.336652" + }, + "test-cdhit-cdhitest-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa.clstr:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,49e662721e26db91ee63badf7f89dd1c" + ], + "clusters": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa.clstr:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,49e662721e26db91ee63badf7f89dd1c" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:40:41.884428" + } +} \ No newline at end of file diff --git a/modules/nf-core/celesta/tests/main.nf.test b/modules/nf-core/celesta/tests/main.nf.test index f411b15c58a..18fcd060f48 100644 --- a/modules/nf-core/celesta/tests/main.nf.test +++ b/modules/nf-core/celesta/tests/main.nf.test @@ -15,13 +15,13 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['imaging']['downstream']['celesta']['data'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/downstream/celesta/img_data.csv', checkIfExists: true) ] input[1] = [ - file(params.test_data['imaging']['downstream']['celesta']['signature'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/downstream/celesta/signature_matrix.csv', checkIfExists: true) ] input[2] = [ - file(params.test_data['imaging']['downstream']['celesta']['thresholds'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/downstream/celesta/thresholds_celesta.csv', checkIfExists: true) ] input[3] = [] """ @@ -46,17 +46,16 @@ nextflow_process { when { process { """ - // TODO nf-core: define inputs of the process here. Example: input[0] = [ [ id:'test' ], - file(params.test_data['imaging']['downstream']['celesta']['data'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/downstream/celesta/img_data.csv', checkIfExists: true) ] input[1] = [ - file(params.test_data['imaging']['downstream']['celesta']['signature'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/downstream/celesta/signature_matrix.csv', checkIfExists: true) ] input[2] = [ - file(params.test_data['imaging']['downstream']['celesta']['thresholds'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/downstream/celesta/thresholds_celesta.csv', checkIfExists: true) ] input[3] = [] """ diff --git a/modules/nf-core/cellbender/merge/environment.yml b/modules/nf-core/cellbender/merge/environment.yml new file mode 100644 index 00000000000..a157c522b2b --- /dev/null +++ b/modules/nf-core/cellbender/merge/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::cellbender=0.3.0 diff --git a/modules/nf-core/cellbender/merge/main.nf b/modules/nf-core/cellbender/merge/main.nf new file mode 100644 index 00000000000..58a631e6e4d --- /dev/null +++ b/modules/nf-core/cellbender/merge/main.nf @@ -0,0 +1,35 @@ +process CELLBENDER_MERGE { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'oras://community.wave.seqera.io/library/cellbender:0.3.0--c4addb97ab2d83fe': + 'community.wave.seqera.io/library/cellbender:0.3.0--41318a055fc3aacb' }" + + input: + tuple val(meta), path(filtered), path(unfiltered), path(cellbender_h5) + + output: + tuple val(meta), path("${prefix}.h5ad"), emit: h5ad + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + prefix = task.ext.prefix ?: "${meta.id}" + output_layer = task.ext.output_layer ?: "cellbender" + template 'merge.py' + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + touch "${prefix}.h5ad" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cellbender: \$(cellbender --version) + END_VERSIONS + """ +} diff --git a/modules/nf-core/cellbender/merge/meta.yml b/modules/nf-core/cellbender/merge/meta.yml new file mode 100644 index 00000000000..333ad6a69c4 --- /dev/null +++ b/modules/nf-core/cellbender/merge/meta.yml @@ -0,0 +1,43 @@ +name: cellbender_merge +description: Module to use CellBender to remove ambient RNA from single-cell RNA-seq data +keywords: + - single-cell + - scRNA-seq + - ambient RNA removal +tools: + - cellbender: + description: CellBender is a software package for eliminating technical artifacts from high-throughput single-cell RNA sequencing (scRNA-seq) data. + documentation: https://cellbender.readthedocs.io/en/latest/ + tool_dev_url: https://github.com/broadinstitute/CellBender + licence: ["BSD-3-Clause"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - filtered: + type: file + description: AnnData file containing filtered data (without empty droplets) + pattern: "*.h5ad" + - unfiltered: + type: file + description: AnnData file containing unfiltered data (with empty droplets) + pattern: "*.h5ad" + - cellbender_h5: + type: file + description: CellBender h5 file containing ambient RNA estimates + pattern: "*.h5" +output: + - h5ad: + type: file + description: AnnData file containing decontaminated counts as `adata.X` + pattern: "*.h5ad" + - versions: + type: file + description: File containing software version + pattern: "versions.yml" +authors: + - "@nictru" +maintainers: + - "@nictru" diff --git a/modules/nf-core/cellbender/merge/templates/merge.py b/modules/nf-core/cellbender/merge/templates/merge.py new file mode 100644 index 00000000000..d8c011d64b9 --- /dev/null +++ b/modules/nf-core/cellbender/merge/templates/merge.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 + +import platform + +import anndata as ad +import cellbender +from cellbender.remove_background.downstream import load_anndata_from_input_and_output + + +def format_yaml_like(data: dict, indent: int = 0) -> str: + """Formats a dictionary to a YAML-like string. + + Args: + data (dict): The dictionary to format. + indent (int): The current indentation level. + + Returns: + str: A string formatted as YAML. + """ + yaml_str = "" + for key, value in data.items(): + spaces = " " * indent + if isinstance(value, dict): + yaml_str += f"{spaces}{key}:\\n{format_yaml_like(value, indent + 1)}" + else: + yaml_str += f"{spaces}{key}: {value}\\n" + return yaml_str + + +adata = ad.read_h5ad("${filtered}") + +adata_cellbender = load_anndata_from_input_and_output("${unfiltered}", "${cellbender_h5}", analyzed_barcodes_only=False) + +adata_cellbender = adata_cellbender[adata.obs_names] + +if "${output_layer}" == "X": + adata.X = adata_cellbender.layers["cellbender"] +else: + adata.layers["${output_layer}"] = adata_cellbender.layers["cellbender"] + +adata.write_h5ad("${prefix}.h5ad") + +# Versions + +versions = { + "${task.process}": { + "python": platform.python_version(), + "cellbender": cellbender.__version__, + "anndata": ad.__version__, + } +} + +with open("versions.yml", "w") as f: + f.write(format_yaml_like(versions)) diff --git a/modules/nf-core/cellbender/merge/tests/main.nf.test b/modules/nf-core/cellbender/merge/tests/main.nf.test new file mode 100644 index 00000000000..e011fc45f1a --- /dev/null +++ b/modules/nf-core/cellbender/merge/tests/main.nf.test @@ -0,0 +1,55 @@ +nextflow_process { + name 'Test Process CELLBENDER_MERGE' + script '../main.nf' + process 'CELLBENDER_MERGE' + + tag "modules" + tag "modules_nfcore" + tag "cellbender/merge" + tag "cellbender" + + test("test_cellbender_merge") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/samples/SAMN14430799_custom_emptydrops_filter_matrix_5k.h5ad", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/samples/SAMN14430799_raw_matrix_5k.h5ad", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/intermediates/SAMN14430799_raw_matrix_5k_cellbender.h5", checkIfExists: true) + ] + """ + } + } + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out.h5ad).match("cellbender_merge_h5ad")}, + {assert snapshot(process.out.versions).match("cellbender_merge_versions")} + ) + } + } + + test("test_cellbender_merge - stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/samples/SAMN14430799_custom_emptydrops_filter_matrix_5k.h5ad", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/samples/SAMN14430799_raw_matrix_5k.h5ad", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/intermediates/SAMN14430799_raw_matrix_5k_cellbender.h5", checkIfExists: true) + ] + """ + } + } + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out.h5ad).match("cellbender_merge_h5ad_stub")}, + {assert snapshot(process.out.versions).match("cellbender_merge_versions_stub")} + ) + } + } +} diff --git a/modules/nf-core/cellbender/merge/tests/main.nf.test.snap b/modules/nf-core/cellbender/merge/tests/main.nf.test.snap new file mode 100644 index 00000000000..128e97e3d2d --- /dev/null +++ b/modules/nf-core/cellbender/merge/tests/main.nf.test.snap @@ -0,0 +1,60 @@ +{ + "cellbender_merge_versions_stub": { + "content": [ + [ + "versions.yml:md5,686879d6a3352befa5424f3ca33baa29" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:48:39.64882509" + }, + "cellbender_merge_h5ad_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.h5ad:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:48:39.613498823" + }, + "cellbender_merge_versions": { + "content": [ + [ + "versions.yml:md5,65f797c1a36f9d4075ce640f8525c313" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:48:27.78151069" + }, + "cellbender_merge_h5ad": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.h5ad:md5,9a13e9eb4eeb7c23f643186cca8249da" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:48:27.738759541" + } +} \ No newline at end of file diff --git a/modules/nf-core/cellbender/merge/tests/tags.yml b/modules/nf-core/cellbender/merge/tests/tags.yml new file mode 100644 index 00000000000..83d1d57965a --- /dev/null +++ b/modules/nf-core/cellbender/merge/tests/tags.yml @@ -0,0 +1,2 @@ +cellbender/merge: + - modules/nf-core/cellbender/merge/** diff --git a/modules/nf-core/cellbender/removebackground/environment.yml b/modules/nf-core/cellbender/removebackground/environment.yml new file mode 100644 index 00000000000..a157c522b2b --- /dev/null +++ b/modules/nf-core/cellbender/removebackground/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::cellbender=0.3.0 diff --git a/modules/nf-core/cellbender/removebackground/main.nf b/modules/nf-core/cellbender/removebackground/main.nf new file mode 100644 index 00000000000..f3cfd1ffee7 --- /dev/null +++ b/modules/nf-core/cellbender/removebackground/main.nf @@ -0,0 +1,65 @@ +process CELLBENDER_REMOVEBACKGROUND { + tag "$meta.id" + label 'process_medium' + label 'process_gpu' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'oras://community.wave.seqera.io/library/cellbender:0.3.0--c4addb97ab2d83fe': + 'community.wave.seqera.io/library/cellbender:0.3.0--41318a055fc3aacb' }" + + input: + tuple val(meta), path(h5ad) + + output: + tuple val(meta), path("${prefix}.h5") , emit: h5 + tuple val(meta), path("${prefix}_filtered.h5") , emit: filtered_h5 + tuple val(meta), path("${prefix}_posterior.h5") , emit: posterior_h5 + tuple val(meta), path("${prefix}_cell_barcodes.csv"), emit: barcodes + tuple val(meta), path("${prefix}_metrics.csv") , emit: metrics + tuple val(meta), path("${prefix}_report.html") , emit: report + tuple val(meta), path("${prefix}.pdf") , emit: pdf + tuple val(meta), path("${prefix}.log") , emit: log + tuple val(meta), path("ckpt.tar.gz") , emit: checkpoint + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + prefix = task.ext.prefix ?: "${meta.id}" + args = task.ext.args ?: "" + use_gpu = task.ext.use_gpu ? "--cuda" : "" + """ + TMPDIR=. cellbender remove-background \ + ${args} \ + --cpu-threads ${task.cpus} \ + ${use_gpu} \ + --input ${h5ad} \ + --output ${prefix}.h5 + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cellbender: \$(cellbender --version) + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + touch "${prefix}.h5" + touch "${prefix}_filtered.h5" + touch "${prefix}_posterior.h5" + touch "${prefix}_cell_barcodes.csv" + touch "${prefix}_metrics.csv" + touch "${prefix}_report.html" + touch "${prefix}.pdf" + touch "${prefix}.log" + touch "ckpt.tar.gz" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cellbender: \$(cellbender --version) + END_VERSIONS + """ +} diff --git a/modules/nf-core/cellbender/removebackground/meta.yml b/modules/nf-core/cellbender/removebackground/meta.yml new file mode 100644 index 00000000000..d70fa3fda1d --- /dev/null +++ b/modules/nf-core/cellbender/removebackground/meta.yml @@ -0,0 +1,75 @@ +name: cellbender_removebackground +description: Module to use CellBender to estimate ambient RNA from single-cell RNA-seq data +keywords: + - single-cell + - scRNA-seq + - ambient RNA removal +tools: + - cellbender: + description: CellBender is a software package for eliminating technical artifacts from high-throughput single-cell RNA sequencing (scRNA-seq) data. + documentation: https://cellbender.readthedocs.io/en/latest/ + tool_dev_url: https://github.com/broadinstitute/CellBender + licence: ["BSD-3-Clause"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - h5ad: + type: file + description: AnnData file containing unfiltered data (with empty droplets) + pattern: "*.h5ad" +output: + - h5: + type: file + description: Full count matrix as an h5 file, with background RNA removed. This file contains all the original droplet barcodes. + pattern: "*.h5" + - filtered_h5: + type: file + description: | + Full count matrix as an h5 file, with background RNA removed. This file contains only the droplet barcodes which were determined to have a > 50% posterior probability of containing cells. + pattern: "*.h5" + - posterior_h5: + type: file + description: | + The full posterior probability of noise counts. This is not normally used downstream. + pattern: "*.h5" + - barcodes: + type: file + description: | + CSV file containing all the droplet barcodes which were determined to have a > 50% posterior probability of containing cells. | + Barcodes are written in plain text. This information is also contained in each of the above outputs, | + but is included as a separate output for convenient use in certain downstream applications. + pattern: "*.csv" + - metrics: + type: file + description: | + Metrics describing the run, potentially to be used to flag problematic runs | + when using CellBender as part of a large-scale automated pipeline. + pattern: "*.csv" + - report: + type: file + description: | + HTML report including plots and commentary, along with any warnings or suggestions for improved parameter settings. + pattern: "*.html" + - pdf: + type: file + description: PDF file that provides a standard graphical summary of the inference procedure. + pattern: "*.pdf" + - log: + type: file + description: Log file produced by the cellbender remove-background run. + pattern: "*.log" + - checkpoint: + type: file + description: Checkpoint file which contains the trained model and the full posterior. + pattern: "*.ckpt" + - versions: + type: file + description: File containing software version + pattern: "versions.yml" +authors: + - "@nictru" +maintainers: + - "@nictru" diff --git a/modules/nf-core/cellbender/removebackground/tests/epochs.config b/modules/nf-core/cellbender/removebackground/tests/epochs.config new file mode 100644 index 00000000000..96282b074b2 --- /dev/null +++ b/modules/nf-core/cellbender/removebackground/tests/epochs.config @@ -0,0 +1,6 @@ + +process { + withName: CELLBENDER_REMOVEBACKGROUND { + ext.args = '--epochs 20' + } +} diff --git a/modules/nf-core/cellbender/removebackground/tests/main.nf.test b/modules/nf-core/cellbender/removebackground/tests/main.nf.test new file mode 100644 index 00000000000..1afa6f3bf00 --- /dev/null +++ b/modules/nf-core/cellbender/removebackground/tests/main.nf.test @@ -0,0 +1,66 @@ +nextflow_process { + name 'Test Process CELLBENDER_REMOVEBACKGROUND' + script '../main.nf' + process 'CELLBENDER_REMOVEBACKGROUND' + + tag "modules" + tag "modules_nfcore" + tag "cellbender/removebackground" + tag "cellbender" + + test("test_cellbender_removebackground") { + config './epochs.config' + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/samples/SAMN14430799_raw_matrix_5k.h5ad", checkIfExists: true) + ] + """ + } + } + then { + assertAll( + {assert process.success}, + {assert file(process.out.h5.get(0).get(1)).exists()}, + {assert file(process.out.filtered_h5.get(0).get(1)).exists()}, + {assert file(process.out.posterior_h5.get(0).get(1)).exists()}, + {assert snapshot(process.out.barcodes).match("cellbender_removebackground_barcodes")}, + {assert snapshot(process.out.metrics).match("cellbender_removebackground_metrics")}, + {assert file(process.out.report.get(0).get(1)).exists()}, + {assert file(process.out.pdf.get(0).get(1)).exists()}, + {assert file(process.out.log.get(0).get(1)).exists()}, + {assert snapshot(process.out.versions).match("cellbender_removebackground_versions")} + ) + } + } + + test("test_cellbender_removebackground - stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file("https://raw.githubusercontent.com/nf-core/test-datasets/scdownstream/samples/SAMN14430799_raw_matrix_5k.h5ad", checkIfExists: true) + ] + """ + } + } + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out.h5).match("cellbender_removebackground_h5_stub")}, + {assert snapshot(process.out.filtered_h5).match("cellbender_removebackground_filtered_h5_stub")}, + {assert snapshot(process.out.posterior_h5).match("cellbender_removebackground_posterior_h5_stub")}, + {assert snapshot(process.out.barcodes).match("cellbender_removebackground_barcodes_stub")}, + {assert snapshot(process.out.metrics).match("cellbender_removebackground_metrics_stub")}, + {assert snapshot(process.out.report).match("cellbender_removebackground_report_stub")}, + {assert snapshot(process.out.pdf).match("cellbender_removebackground_pdf_stub")}, + {assert snapshot(process.out.log).match("cellbender_removebackground_log_stub")}, + {assert snapshot(process.out.versions).match("cellbender_removebackground_versions_stub")} + ) + } + } +} diff --git a/modules/nf-core/cellbender/removebackground/tests/main.nf.test.snap b/modules/nf-core/cellbender/removebackground/tests/main.nf.test.snap new file mode 100644 index 00000000000..fdb51d66982 --- /dev/null +++ b/modules/nf-core/cellbender/removebackground/tests/main.nf.test.snap @@ -0,0 +1,196 @@ +{ + "cellbender_removebackground_versions": { + "content": [ + [ + "versions.yml:md5,b236ac7595dfa6cd4d51ac73e51cb05a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:09.33127881" + }, + "cellbender_removebackground_filtered_h5_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_filtered.h5:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.833598082" + }, + "cellbender_removebackground_pdf_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.891829278" + }, + "cellbender_removebackground_metrics": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_metrics.csv:md5,88272bde1c157528b0b0ab2abe5ad26f" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:09.327155805" + }, + "cellbender_removebackground_versions_stub": { + "content": [ + [ + "versions.yml:md5,b236ac7595dfa6cd4d51ac73e51cb05a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.904614838" + }, + "cellbender_removebackground_h5_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.h5:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.829304361" + }, + "cellbender_removebackground_metrics_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_metrics.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.870469733" + }, + "cellbender_removebackground_log_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.899293304" + }, + "cellbender_removebackground_barcodes": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_cell_barcodes.csv:md5,c8e8df9d0f9aea976d6f6aa36d329429" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:09.316098811" + }, + "cellbender_removebackground_report_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.885307244" + }, + "cellbender_removebackground_posterior_h5_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_posterior.h5:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.838032754" + }, + "cellbender_removebackground_barcodes_stub": { + "content": [ + [ + [ + { + "id": "test" + }, + "test_cell_barcodes.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-12T13:41:20.861284979" + } +} \ No newline at end of file diff --git a/modules/nf-core/cellbender/removebackground/tests/tags.yml b/modules/nf-core/cellbender/removebackground/tests/tags.yml new file mode 100644 index 00000000000..d935083bfef --- /dev/null +++ b/modules/nf-core/cellbender/removebackground/tests/tags.yml @@ -0,0 +1,2 @@ +cellbender/removebackground: + - modules/nf-core/cellbender/removebackground/** diff --git a/modules/nf-core/cellpose/tests/main.nf.test b/modules/nf-core/cellpose/tests/main.nf.test index 1b6698d1d7e..6a7688baa8b 100644 --- a/modules/nf-core/cellpose/tests/main.nf.test +++ b/modules/nf-core/cellpose/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['imaging']['segmentation']['image'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/segmentation/cycif_tonsil_registered.ome.tif', checkIfExists: true) ] input[1] = [] """ @@ -44,7 +44,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['imaging']['segmentation']['image'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/segmentation/cycif_tonsil_registered.ome.tif', checkIfExists: true) ] input[1] = [] """ diff --git a/modules/nf-core/cellranger/count/templates/cellranger_count.py b/modules/nf-core/cellranger/count/templates/cellranger_count.py index 7cd68e27994..55f93b61790 100644 --- a/modules/nf-core/cellranger/count/templates/cellranger_count.py +++ b/modules/nf-core/cellranger/count/templates/cellranger_count.py @@ -5,11 +5,11 @@ Copyright (c) Gregor Sturm 2023 - MIT License """ -from subprocess import run +import re +import shlex from pathlib import Path +from subprocess import run from textwrap import dedent -import shlex -import re def chunk_iter(seq, size): diff --git a/modules/nf-core/cellranger/count/tests/main.nf.test b/modules/nf-core/cellranger/count/tests/main.nf.test index dc8a58a55c0..3029c0ca5da 100644 --- a/modules/nf-core/cellranger/count/tests/main.nf.test +++ b/modules/nf-core/cellranger/count/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_process { script "../../mkgtf/main.nf" process { """ - input[0] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) """ } } @@ -27,7 +27,7 @@ nextflow_process { script "../../mkref/main.nf" process { """ - input[0] = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) input[1] = CELLRANGER_MKGTF.out.gtf input[2] = "homo_sapiens_reference" """ @@ -43,8 +43,8 @@ nextflow_process { input[0] = [ [ id:'test_10x', single_end:false, strandedness:'auto' ], // meta map [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] ] input[1] = CELLRANGER_MKREF.out.reference @@ -81,8 +81,8 @@ nextflow_process { input[0] = [ [ id:'test_10x', single_end:false, strandedness:'auto' ], // meta map [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] ] input[1] = CELLRANGER_MKREF.out.reference diff --git a/modules/nf-core/cellranger/mkfastq/main.nf b/modules/nf-core/cellranger/mkfastq/main.nf index b605b892b6c..06c15bbc151 100644 --- a/modules/nf-core/cellranger/mkfastq/main.nf +++ b/modules/nf-core/cellranger/mkfastq/main.nf @@ -1,16 +1,19 @@ process CELLRANGER_MKFASTQ { - tag "mkfastq" + tag {"$meta.lane" ? "$meta.id"+"."+"$meta.lane" : "$meta.id" } label 'process_medium' container "nf-core/cellrangermkfastq:8.0.0" input: - path bcl - path csv + tuple val(meta), path(csv), path(bcl) output: - path "**/outs/fastq_path/*.fastq.gz", emit: fastq - path "versions.yml" , emit: versions + tuple val(meta), path("*_outs/outs/fastq_path/**/*.fastq.gz") , emit: fastq + tuple val(meta), path("*_outs/outs/fastq_path/Undetermined*.fastq.gz") , optional:true, emit: undetermined_fastq + tuple val(meta), path("*_outs/outs/fastq_path/Reports") , emit: reports + tuple val(meta), path("*_outs/outs/fastq_path/Stats") , emit: stats + tuple val(meta), path("*_outs/outs/interop_path/*.bin") , emit: interop + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -21,13 +24,15 @@ process CELLRANGER_MKFASTQ { error "CELLRANGER_MKFASTQ module does not support Conda. Please use Docker / Singularity / Podman instead." } def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${bcl.getSimpleName()}" + def prefix = task.ext.prefix ?: "${meta.id}" //run_dir (bcl) and id must be different because a folder is created with the id value """ cellranger \\ mkfastq \\ - --id=${prefix} \\ + --id=${prefix}_outs \\ --run=$bcl \\ --csv=$csv \\ + --localcores=${task.cpus} \\ + --localmem=${task.memory.toGiga()} \\ $args cat <<-END_VERSIONS > versions.yml @@ -41,17 +46,36 @@ process CELLRANGER_MKFASTQ { if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { error "CELLRANGER_MKFASTQ module does not support Conda. Please use Docker / Singularity / Podman instead." } - def prefix = task.ext.prefix ?: "${bcl.getSimpleName()}" + def prefix = task.ext.prefix ?: "${meta.id}" """ - mkdir -p "${prefix}/outs/fastq_path/" - # data with something to avoid breaking nf-test java I/O stream - cat <<-FAKE_FQ > ${prefix}/outs/fastq_path/fake_file.fastq + mkdir -p "${prefix}_outs/outs/fastq_path/sample/files/" + # data with something to avoid breaking nf-test java I/O stream, fastq + cat <<-FAKE_FQ > ${prefix}_outs/outs/fastq_path/fake_file.fastq @SEQ_ID GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT + !''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65 FAKE_FQ - gzip -n ${prefix}/outs/fastq_path/fake_file.fastq + gzip -n ${prefix}_outs/outs/fastq_path/fake_file.fastq + + # data with something to avoid breaking nf-test java I/O stream, fastq_undetermined + cat <<-FAKE_FQ > ${prefix}_outs/outs/fastq_path/sample/files/fake_file.fastq + @SEQ_ID + GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT + + + !''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65 + FAKE_FQ + gzip -n ${prefix}_outs/outs/fastq_path/sample/files/fake_file.fastq + + # data for reports output channel + mkdir -p "${prefix}_outs/outs/fastq_path/Reports" + + # data for stats output channel + mkdir -p "${prefix}_outs/outs/fastq_path/Stats" + + # data for interops output channel + mkdir -p "${prefix}_outs/outs/interop_path/" + touch "${prefix}_outs/outs/interop_path/IndexMetricsOut.bin" cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/cellranger/mkfastq/tests/main.nf.test b/modules/nf-core/cellranger/mkfastq/tests/main.nf.test index ab5e2969654..8d3d718f56b 100644 --- a/modules/nf-core/cellranger/mkfastq/tests/main.nf.test +++ b/modules/nf-core/cellranger/mkfastq/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { process { """ input[0] = [ - [], + [ id: 'test', lane:1 ], file("https://cf.10xgenomics.com/supp/cell-exp/cellranger-tiny-bcl-1.2.0.tar.gz", checkIfExists: true) ] """ @@ -31,8 +31,7 @@ nextflow_process { when { process { """ - input[0] = UNTAR.out.untar.map{ it[1] } - input[1] = file("https://cf.10xgenomics.com/supp/cell-exp/cellranger-tiny-bcl-simple-1.2.0.csv", checkIfExists: true) + input[0] = UNTAR.out.untar.map{ it -> [ [ id: 'test', lane:1 ], file("https://cf.10xgenomics.com/supp/cell-exp/cellranger-tiny-bcl-simple-1.2.0.csv", checkIfExists: true), it[1] ] } """ } } @@ -40,7 +39,13 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.fastq, + process.out.undetermined_fastq, + process.out.interop, + process.out.versions + ).match() + } ) } @@ -51,8 +56,7 @@ nextflow_process { when { process { """ - input[0] = UNTAR.out.untar.map{ it[1] } - input[1] = file("https://cf.10xgenomics.com/supp/cell-exp/cellranger-tiny-bcl-samplesheet-1.2.0.csv", checkIfExists: true) + input[0] = UNTAR.out.untar.map{ it -> [ [ id: 'test', lane:1 ], file("https://cf.10xgenomics.com/supp/cell-exp/cellranger-tiny-bcl-samplesheet-1.2.0.csv", checkIfExists: true), it[1] ] } """ } } @@ -60,7 +64,13 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.fastq, + process.out.undetermined_fastq, + process.out.interop, + process.out.versions + ).match() + } ) } @@ -73,8 +83,7 @@ nextflow_process { when { process { """ - input[0] = UNTAR.out.untar.map{ it[1] } - input[1] = file("https://cf.10xgenomics.com/supp/cell-exp/cellranger-tiny-bcl-simple-1.2.0.csv", checkIfExists: true) + input[0] = UNTAR.out.untar.map{ it -> [ [ id: 'test', lane:1 ], file("https://cf.10xgenomics.com/supp/cell-exp/cellranger-tiny-bcl-simple-1.2.0.csv", checkIfExists: true), it[1] ] } """ } } @@ -82,7 +91,13 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out.fastq, + process.out.undetermined_fastq, + process.out.interop, + process.out.versions + ).match() + } ) } diff --git a/modules/nf-core/cellranger/mkfastq/tests/main.nf.test.snap b/modules/nf-core/cellranger/mkfastq/tests/main.nf.test.snap index 52c0ae63b19..b12246889dd 100644 --- a/modules/nf-core/cellranger/mkfastq/tests/main.nf.test.snap +++ b/modules/nf-core/cellranger/mkfastq/tests/main.nf.test.snap @@ -1,87 +1,129 @@ { "cellranger - tiny - simple": { "content": [ - { - "0": [ + [ + [ + { + "id": "test", + "lane": 1 + }, [ - "Undetermined_S0_L001_I1_001.fastq.gz:md5,c93946d67bdb1d5b2ab955fd1dc9cb31", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,faa79ce215ae72fdc3375cda066c6757", - "Undetermined_S0_L001_R2_001.fastq.gz:md5,d8955db4dfbf7aee89b6bdc3b7629f8f" + "test_sample_S1_L001_I1_001.fastq.gz:md5,018b0dbd8daf76fb9f6dfa4729ea0453", + "test_sample_S1_L001_R1_001.fastq.gz:md5,df3ddf85d83bd722219c646c7815dbdc", + "test_sample_S1_L001_R2_001.fastq.gz:md5,c8a387b517ff5b7e56b85ccbf882efd2" ] - ], - "1": [ - "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" - ], - "fastq": [ + ] + ], + [ + [ + { + "id": "test", + "lane": 1 + }, [ "Undetermined_S0_L001_I1_001.fastq.gz:md5,c93946d67bdb1d5b2ab955fd1dc9cb31", "Undetermined_S0_L001_R1_001.fastq.gz:md5,faa79ce215ae72fdc3375cda066c6757", "Undetermined_S0_L001_R2_001.fastq.gz:md5,d8955db4dfbf7aee89b6bdc3b7629f8f" ] - ], - "versions": [ - "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" ] - } + ], + [ + [ + { + "id": "test", + "lane": 1 + }, + "IndexMetricsOut.bin:md5,437d55bac453ddf603ef084ba2dab82e" + ] + ], + [ + "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-22T08:34:04.684513054" + "timestamp": "2024-08-15T19:59:53.012035" }, "cellranger - tiny - simple - stub": { "content": [ - { - "0": [ - "fake_file.fastq.gz:md5,8e16c1f4a441cbb3b7de374d2c924da7" - ], - "1": [ - "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" - ], - "fastq": [ + [ + [ + { + "id": "test", + "lane": 1 + }, "fake_file.fastq.gz:md5,8e16c1f4a441cbb3b7de374d2c924da7" - ], - "versions": [ - "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" ] - } + ], + [ + + ], + [ + [ + { + "id": "test", + "lane": 1 + }, + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-22T08:45:05.911737344" + "timestamp": "2024-08-15T20:01:48.013075" }, "cellranger - tiny - illumina": { "content": [ - { - "0": [ + [ + [ + { + "id": "test", + "lane": 1 + }, [ - "Undetermined_S0_L001_I1_001.fastq.gz:md5,c93946d67bdb1d5b2ab955fd1dc9cb31", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,faa79ce215ae72fdc3375cda066c6757", - "Undetermined_S0_L001_R2_001.fastq.gz:md5,d8955db4dfbf7aee89b6bdc3b7629f8f" + "test_sample_S1_L001_I1_001.fastq.gz:md5,018b0dbd8daf76fb9f6dfa4729ea0453", + "test_sample_S1_L001_R1_001.fastq.gz:md5,df3ddf85d83bd722219c646c7815dbdc", + "test_sample_S1_L001_R2_001.fastq.gz:md5,c8a387b517ff5b7e56b85ccbf882efd2" ] - ], - "1": [ - "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" - ], - "fastq": [ + ] + ], + [ + [ + { + "id": "test", + "lane": 1 + }, [ "Undetermined_S0_L001_I1_001.fastq.gz:md5,c93946d67bdb1d5b2ab955fd1dc9cb31", "Undetermined_S0_L001_R1_001.fastq.gz:md5,faa79ce215ae72fdc3375cda066c6757", "Undetermined_S0_L001_R2_001.fastq.gz:md5,d8955db4dfbf7aee89b6bdc3b7629f8f" ] - ], - "versions": [ - "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" ] - } + ], + [ + [ + { + "id": "test", + "lane": 1 + }, + "IndexMetricsOut.bin:md5,e2ac28695537336b53a509f48e93ed1f" + ] + ], + [ + "versions.yml:md5,2177bf2d035c62d2fd543af8e9184f90" + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-03-22T08:36:09.943652935" + "timestamp": "2024-08-15T20:01:00.558148" } } \ No newline at end of file diff --git a/modules/nf-core/cellranger/mkgtf/tests/main.nf.test b/modules/nf-core/cellranger/mkgtf/tests/main.nf.test index bba46b4565d..8ede4df1b52 100644 --- a/modules/nf-core/cellranger/mkgtf/tests/main.nf.test +++ b/modules/nf-core/cellranger/mkgtf/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { when { process { """ - input[0] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) """ } } @@ -36,7 +36,7 @@ nextflow_process { when { process { """ - input[0] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) """ } } diff --git a/modules/nf-core/cellranger/mkref/main.nf b/modules/nf-core/cellranger/mkref/main.nf index 4325c308cf7..a719b778026 100644 --- a/modules/nf-core/cellranger/mkref/main.nf +++ b/modules/nf-core/cellranger/mkref/main.nf @@ -22,6 +22,9 @@ process CELLRANGER_MKREF { error "CELLRANGER_MKREF module does not support Conda. Please use Docker / Singularity / Podman instead." } def args = task.ext.args ?: '' + // --localcores is passed to the martian runtime and specifies the number of allocated jobs + // --nthreads is passed to the STAR index generation. + // see also https://github.com/nf-core/scrnaseq/issues/329 """ cellranger \\ mkref \\ @@ -30,6 +33,7 @@ process CELLRANGER_MKREF { --genes=$gtf \\ --localcores=${task.cpus} \\ --localmem=${task.memory.toGiga()} \\ + --nthreads=${task.cpus} \\ $args cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/cellranger/mkref/tests/main.nf.test b/modules/nf-core/cellranger/mkref/tests/main.nf.test index 5282f3f6e5f..dfbcd2220b0 100644 --- a/modules/nf-core/cellranger/mkref/tests/main.nf.test +++ b/modules/nf-core/cellranger/mkref/tests/main.nf.test @@ -16,8 +16,8 @@ nextflow_process { when { process { """ - input[0] = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - input[1] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) input[2] = "homo_sapiens_reference" """ } @@ -36,9 +36,9 @@ nextflow_process { path( "${outputDir}/homo_sapiens_reference/star/geneInfo.tab" ), path( "${outputDir}/homo_sapiens_reference/star/exonGeTrInfo.tab" ), path( "${outputDir}/homo_sapiens_reference/star/exonInfo.tab" ), - path( "${outputDir}/homo_sapiens_reference/star/sjdbList.out.tab" ) - ).match(), - { assert snapshot(process.out.versions).match("versions") } + path( "${outputDir}/homo_sapiens_reference/star/sjdbList.out.tab" ), + process.out.versions + ).match() } ) } @@ -62,8 +62,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.reference).match() }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/cellranger/mkref/tests/main.nf.test.snap b/modules/nf-core/cellranger/mkref/tests/main.nf.test.snap index 046fefbdb1f..2db410f5319 100644 --- a/modules/nf-core/cellranger/mkref/tests/main.nf.test.snap +++ b/modules/nf-core/cellranger/mkref/tests/main.nf.test.snap @@ -15,38 +15,42 @@ "geneInfo.tab:md5,8b608537307443ffaee4927d2b428805", "exonGeTrInfo.tab:md5,72d4dd88d25e3c5b0bb72b12b4ac99a8", "exonInfo.tab:md5,0d560290fab688b7268d88d5494bf9fe", - "sjdbList.out.tab:md5,9e4f991abbbfeb3935a2bb21b9e258f1" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-25T09:41:24.407740353" - }, - "homo_sapiens - reference - stub": { - "content": [ + "sjdbList.out.tab:md5,9e4f991abbbfeb3935a2bb21b9e258f1", [ - [ - "empty_file:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "versions.yml:md5,e9d88519c551d8ccbbdc6bd2673fc41f" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-25T09:41:46.135604587" + "timestamp": "2024-07-31T14:50:38.928938" }, - "versions": { + "homo_sapiens - reference - stub": { "content": [ - [ - "versions.yml:md5,e9d88519c551d8ccbbdc6bd2673fc41f" - ] + { + "0": [ + [ + "empty_file:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,e9d88519c551d8ccbbdc6bd2673fc41f" + ], + "reference": [ + [ + "empty_file:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e9d88519c551d8ccbbdc6bd2673fc41f" + ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-25T09:41:46.149227444" + "timestamp": "2024-07-31T14:50:44.599257" } -} \ No newline at end of file +} diff --git a/modules/nf-core/cellranger/multi/templates/cellranger_multi.py b/modules/nf-core/cellranger/multi/templates/cellranger_multi.py index bff70be8f6e..6f1bf85d6a4 100644 --- a/modules/nf-core/cellranger/multi/templates/cellranger_multi.py +++ b/modules/nf-core/cellranger/multi/templates/cellranger_multi.py @@ -5,11 +5,11 @@ Copyright (c) Felipe Almeida 2024 - MIT License """ -from subprocess import run +import re +import shlex from pathlib import Path +from subprocess import run from textwrap import dedent -import shlex -import re def chunk_iter(seq, size): @@ -96,7 +96,8 @@ def chunk_iter(seq, size): # # generate config file for cellranger multi # -config_txt = f"""${include_gex} +config_txt = ( # noqa + f"""${include_gex} {gex_reference_path} {frna_probeset} ${gex_options_filter_probes} @@ -134,22 +135,23 @@ def chunk_iter(seq, size): {fastq_beam} {fastq_crispr} {fastq_cmo} -""" +""" # noqa +) # # check the extra data that is included # if len("${include_cmo}") > 0: - with open("${cmo_csv_text}", "r") as input_conf: + with open("${cmo_csv_text}") as input_conf: config_txt = config_txt + "\\n${include_cmo}\\n" + input_conf.read() + "\\n" if len("${include_beam}") > 0: - with open("${beam_csv_text}", "r") as input_conf, open("${beam_antigen_csv}", "r") as input_csv: + with open("${beam_csv_text}") as input_conf, open("${beam_antigen_csv}") as input_csv: config_txt = config_txt + "\\n${include_beam}\\n" + input_conf.read() + "\\n" config_txt = config_txt + "[feature]\\n" + input_csv.read() + "\\n" if len("${include_frna}") > 0: - with open("${frna_csv_text}", "r") as input_conf: + with open("${frna_csv_text}") as input_conf: config_txt = config_txt + "\\n${include_frna}\\n" + input_conf.read() + "\\n" # Remove blank lines from config text diff --git a/modules/nf-core/cellranger/multi/tests/main.nf.test b/modules/nf-core/cellranger/multi/tests/main.nf.test index 072e3cc4c8d..0259e1b3548 100644 --- a/modules/nf-core/cellranger/multi/tests/main.nf.test +++ b/modules/nf-core/cellranger/multi/tests/main.nf.test @@ -19,7 +19,7 @@ nextflow_process { script "modules/nf-core/cellranger/mkgtf/main.nf" process { """ - input[0] = file(params.test_data['homo_sapiens']['genome']['genome_gtf'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) """ } } @@ -28,7 +28,7 @@ nextflow_process { script "modules/nf-core/cellranger/mkref/main.nf" process { """ - input[0] = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) input[1] = CELLRANGER_MKGTF.out.gtf input[2] = 'homo_sapiens_chr22_reference' """ @@ -52,27 +52,27 @@ nextflow_process { // stage B cell FASTQ test data bcell_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_b_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_b_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/bcell/subsampled_sc5p_v2_hs_PBMC_10k_b_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/bcell/subsampled_sc5p_v2_hs_PBMC_10k_b_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def bcell_fastq_samplename_10k_pbmc = "subsampled_sc5p_v2_hs_PBMC_10k" // stage 5' gene expression FASTQ test data fivepgex_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5gex_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5gex_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5gex/subsampled_sc5p_v2_hs_PBMC_10k_5gex_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5gex/subsampled_sc5p_v2_hs_PBMC_10k_5gex_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def fivepgex_fastq_samplename_10k_pbmc = "subsampled_sc5p_v2_hs_PBMC_10k" // stage 5' feature barcode (antibody capture) FASTQ test data ab_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5fb_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5fb_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5fb/subsampled_sc5p_v2_hs_PBMC_10k_5fb_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5fb/subsampled_sc5p_v2_hs_PBMC_10k_5fb_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def fivepab_fastq_samplename_10k_pbmc = "subsampled_sc5p_v2_hs_PBMC_10k" // stage feature barcode reference for antibody capture - fb_reference_10k_pbmc = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_feature_ref_csv'], checkIfExists: true) + fb_reference_10k_pbmc = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/sc5p_v2_hs_PBMC_10k_multi_5gex_5fb_b_t_feature_ref.csv', checkIfExists: true) /*******************************/ /*** end stage 10k PBMC data ***/ @@ -87,20 +87,20 @@ nextflow_process { // stage 3' CMO FASTQ test data cmo_fastqs_10k_pbmc_cmo = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_cmo_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_cmo_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/cmo/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_multiplexing_capture_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/cmo/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_multiplexing_capture_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def cmo_fastq_samplename_10k_pbmc_cmo = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage 3' gene expression FASTQ test data threepgex_fastqs_10k_pbmc_cmo = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/gex_1/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_gex_S2_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/gex_1/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_gex_S2_L001_R2_001.fastq.gz', checkIfExists: true) ] def threepgex_fastq_samplename_10k_pbmc_cmo = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage feature barcode reference for antibody capture - cmo_reference_10k_pbmc_cmo = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_feature_ref_csv'], checkIfExists: true) + cmo_reference_10k_pbmc_cmo = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/10k_pbmc_cmo_count_feature_reference.csv', checkIfExists: true) // CMO needs a barcode file cmo_barcodes_csv = file("cmo_barcodes.csv") @@ -119,27 +119,27 @@ nextflow_process { // stage antibody capture data ab_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_ab_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_ab_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/ab/subsampled_5k_human_antiCMV_T_TBNK_connect_AB_S2_L004_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/ab/subsampled_5k_human_antiCMV_T_TBNK_connect_AB_S2_L004_R2_001.fastq.gz', checkIfExists: true) ] def ab_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage GEX data gex_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def gex_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage VDJ data vdj_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def vdj_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage feature barcode reference for antibody capture - fb_reference_5k_cmvpos_tcells = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_feature_ref_csv'], checkIfExists: true) + fb_reference_5k_cmvpos_tcells = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/5k_human_antiCMV_T_TBNK_connect_Multiplex_count_feature_reference.csv', checkIfExists: true) /*************************************/ /*** end stage 5k CMV+ T-cell data ***/ @@ -150,9 +150,9 @@ nextflow_process { /*** stage VDJ reference ***/ /***************************/ - vdj_json = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_json'] , checkIfExists: true) - vdj_fasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_fasta'] , checkIfExists: true) - vdj_suppfasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_suppfasta'], checkIfExists: true) + vdj_json = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/reference.json', checkIfExists: true) + vdj_fasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/regions.fa', checkIfExists: true) + vdj_suppfasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/supp_regions.fa', checkIfExists: true) // awkwardly restage VDJ ref to enforce directory structure expected by cellranger vdj_reference = file( "${workDir}/vdj_reference" ) @@ -262,27 +262,27 @@ nextflow_process { // stage B cell FASTQ test data bcell_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_b_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_b_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/bcell/subsampled_sc5p_v2_hs_PBMC_10k_b_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/bcell/subsampled_sc5p_v2_hs_PBMC_10k_b_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def bcell_fastq_samplename_10k_pbmc = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage 5' gene expression FASTQ test data fivepgex_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5gex_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5gex_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5gex/subsampled_sc5p_v2_hs_PBMC_10k_5gex_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5gex/subsampled_sc5p_v2_hs_PBMC_10k_5gex_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def fivepgex_fastq_samplename_10k_pbmc = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage 5' feature barcode (antibody capture) FASTQ test data ab_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5fb_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5fb_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5fb/subsampled_sc5p_v2_hs_PBMC_10k_5fb_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5fb/subsampled_sc5p_v2_hs_PBMC_10k_5fb_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def fivepab_fastq_samplename_10k_pbmc = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage feature barcode reference for antibody capture - fb_reference_10k_pbmc = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_feature_ref_csv'], checkIfExists: true) + fb_reference_10k_pbmc = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/sc5p_v2_hs_PBMC_10k_multi_5gex_5fb_b_t_feature_ref.csv', checkIfExists: true) /*******************************/ /*** end stage 10k PBMC data ***/ @@ -297,20 +297,20 @@ nextflow_process { // stage 3' CMO FASTQ test data cmo_fastqs_10k_pbmc_cmo = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_cmo_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_cmo_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/cmo/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_multiplexing_capture_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/cmo/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_multiplexing_capture_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def cmo_fastq_samplename_10k_pbmc_cmo = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage 3' gene expression FASTQ test data threepgex_fastqs_10k_pbmc_cmo = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/gex_1/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_gex_S2_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/gex_1/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_gex_S2_L001_R2_001.fastq.gz', checkIfExists: true) ] def threepgex_fastq_samplename_10k_pbmc_cmo = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage feature barcode reference for antibody capture - cmo_reference_10k_pbmc_cmo = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_feature_ref_csv'], checkIfExists: true) + cmo_reference_10k_pbmc_cmo = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/10k_pbmc_cmo_count_feature_reference.csv', checkIfExists: true) // CMO needs a barcode file cmo_barcodes_csv = file("cmo_barcodes.csv") @@ -329,27 +329,27 @@ nextflow_process { // stage antibody capture data ab_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_ab_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_ab_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/ab/subsampled_5k_human_antiCMV_T_TBNK_connect_AB_S2_L004_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/ab/subsampled_5k_human_antiCMV_T_TBNK_connect_AB_S2_L004_R2_001.fastq.gz', checkIfExists: true) ] def ab_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage GEX data gex_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def gex_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage VDJ data vdj_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def vdj_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage feature barcode reference for antibody capture - fb_reference_5k_cmvpos_tcells = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_feature_ref_csv'], checkIfExists: true) + fb_reference_5k_cmvpos_tcells = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/5k_human_antiCMV_T_TBNK_connect_Multiplex_count_feature_reference.csv', checkIfExists: true) /*************************************/ /*** end stage 5k CMV+ T-cell data ***/ @@ -362,8 +362,8 @@ nextflow_process { /***************************/ // will build this as done in cellranger count test - gex_ref_fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - gex_ref_gtf = file(params.test_data['homo_sapiens']['genome']['genome_gtf'] , checkIfExists: true) + gex_ref_fasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + gex_ref_gtf = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) def gex_ref_name = "homo_sapiens_chr22_reference" /*******************************/ @@ -375,9 +375,9 @@ nextflow_process { /*** stage VDJ reference ***/ /***************************/ - vdj_json = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_json'] , checkIfExists: true) - vdj_fasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_fasta'] , checkIfExists: true) - vdj_suppfasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_suppfasta'], checkIfExists: true) + vdj_json = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/reference.json', checkIfExists: true) + vdj_fasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/regions.fa', checkIfExists: true) + vdj_suppfasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/supp_regions.fa', checkIfExists: true) // awkwardly restage VDJ ref to enforce directory structure expected by cellranger vdj_reference = file( "${workDir}/vdj_reference" ) @@ -502,27 +502,27 @@ nextflow_process { // stage B cell FASTQ test data bcell_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_b_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_b_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/bcell/subsampled_sc5p_v2_hs_PBMC_10k_b_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/bcell/subsampled_sc5p_v2_hs_PBMC_10k_b_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def bcell_fastq_samplename_10k_pbmc = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage 5' gene expression FASTQ test data fivepgex_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5gex_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5gex_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5gex/subsampled_sc5p_v2_hs_PBMC_10k_5gex_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5gex/subsampled_sc5p_v2_hs_PBMC_10k_5gex_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def fivepgex_fastq_samplename_10k_pbmc = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage 5' feature barcode (antibody capture) FASTQ test data ab_fastqs_10k_pbmc = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5fb_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_5fb_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5fb/subsampled_sc5p_v2_hs_PBMC_10k_5fb_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/fastqs/5gex/5fb/subsampled_sc5p_v2_hs_PBMC_10k_5fb_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def fivepab_fastq_samplename_10k_pbmc = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage feature barcode reference for antibody capture - fb_reference_10k_pbmc = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_feature_ref_csv'], checkIfExists: true) + fb_reference_10k_pbmc = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc/sc5p_v2_hs_PBMC_10k_multi_5gex_5fb_b_t_feature_ref.csv', checkIfExists: true) /*******************************/ /*** end stage 10k PBMC data ***/ @@ -537,20 +537,20 @@ nextflow_process { // stage 3' CMO FASTQ test data cmo_fastqs_10k_pbmc_cmo = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_cmo_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_cmo_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/cmo/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_multiplexing_capture_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/cmo/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_multiplexing_capture_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def cmo_fastq_samplename_10k_pbmc_cmo = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage 3' gene expression FASTQ test data threepgex_fastqs_10k_pbmc_cmo = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/gex_1/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_gex_S2_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/fastqs/gex_1/subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K_1_gex_S2_L001_R2_001.fastq.gz', checkIfExists: true) ] def threepgex_fastq_samplename_10k_pbmc_cmo = "subsampled_SC3_v3_NextGem_DI_CellPlex_Human_PBMC_10K" // stage feature barcode reference for antibody capture - cmo_reference_10k_pbmc_cmo = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_10k_pbmc_cmo_feature_ref_csv'], checkIfExists: true) + cmo_reference_10k_pbmc_cmo = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/10k_pbmc_cmo/10k_pbmc_cmo_count_feature_reference.csv', checkIfExists: true) // CMO needs a barcode file cmo_barcodes_csv = file("cmo_barcodes.csv") @@ -569,27 +569,27 @@ nextflow_process { // stage antibody capture data ab_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_ab_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_ab_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/ab/subsampled_5k_human_antiCMV_T_TBNK_connect_AB_S2_L004_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/ab/subsampled_5k_human_antiCMV_T_TBNK_connect_AB_S2_L004_R2_001.fastq.gz', checkIfExists: true) ] def ab_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage GEX data gex_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_gex1_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/gex_1/subsampled_5k_human_antiCMV_T_TBNK_connect_GEX_1_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def gex_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage VDJ data vdj_fastqs_5k_cmvpos_tcells = [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] def vdj_fastq_samplename_5k_cmvpos_tcells = "subsampled_5k_human_antiCMV_T_TBNK_connect" // stage feature barcode reference for antibody capture - fb_reference_5k_cmvpos_tcells = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_feature_ref_csv'], checkIfExists: true) + fb_reference_5k_cmvpos_tcells = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/5k_human_antiCMV_T_TBNK_connect_Multiplex_count_feature_reference.csv', checkIfExists: true) /*************************************/ /*** end stage 5k CMV+ T-cell data ***/ @@ -602,8 +602,8 @@ nextflow_process { /***************************/ // will build this as done in cellranger count test - gex_ref_fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - gex_ref_gtf = file(params.test_data['homo_sapiens']['genome']['genome_gtf'] , checkIfExists: true) + gex_ref_fasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + gex_ref_gtf = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) def gex_ref_name = "homo_sapiens_chr22_reference" /*******************************/ @@ -615,9 +615,9 @@ nextflow_process { /*** stage VDJ reference ***/ /***************************/ - vdj_json = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_json'] , checkIfExists: true) - vdj_fasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_fasta'] , checkIfExists: true) - vdj_suppfasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_suppfasta'], checkIfExists: true) + vdj_json = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/reference.json', checkIfExists: true) + vdj_fasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/regions.fa', checkIfExists: true) + vdj_suppfasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/supp_regions.fa', checkIfExists: true) // awkwardly restage VDJ ref to enforce directory structure expected by cellranger vdj_reference = file( "${workDir}/vdj_reference" ) diff --git a/modules/nf-core/cellranger/vdj/tests/main.nf.test b/modules/nf-core/cellranger/vdj/tests/main.nf.test index 3c470ff12aa..7a8df889a68 100644 --- a/modules/nf-core/cellranger/vdj/tests/main.nf.test +++ b/modules/nf-core/cellranger/vdj/tests/main.nf.test @@ -15,9 +15,9 @@ nextflow_process { when { process { """ - reference_json = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_json'] , checkIfExists: true) - reference_fasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_fasta'] , checkIfExists: true) - reference_suppfasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_suppfasta'], checkIfExists: true) + reference_json = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/reference.json', checkIfExists: true) + reference_fasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/regions.fa', checkIfExists: true) + reference_suppfasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/supp_regions.fa', checkIfExists: true) reference_json.copyTo("${workDir}/vdj_reference/reference.json") reference_fasta.copyTo("${workDir}/vdj_reference/fasta/regions.fa") @@ -26,8 +26,8 @@ nextflow_process { input[0] = [ [ id:'subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ', single_end:false, strandedness:'auto' ], // meta map [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] ] input[1] = file("${workDir}/vdj_reference/") @@ -57,9 +57,9 @@ nextflow_process { when { process { """ - reference_json = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_json'] , checkIfExists: true) - reference_fasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_fasta'] , checkIfExists: true) - reference_suppfasta = file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_vdj_ref_suppfasta'], checkIfExists: true) + reference_json = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/reference.json', checkIfExists: true) + reference_fasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/regions.fa', checkIfExists: true) + reference_suppfasta = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/references/vdj/refdata-cellranger-vdj-GRCh38-alts-ensembl-5.0.0/fasta/supp_regions.fa', checkIfExists: true) reference_json.copyTo("${workDir}/vdj_reference/reference.json") reference_fasta.copyTo("${workDir}/vdj_reference/fasta/regions.fa") @@ -68,8 +68,8 @@ nextflow_process { input[0] = [ [ id:'subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ', single_end:false, strandedness:'auto' ], // meta map [ - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_1_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['10xgenomics']['cellranger']['test_10x_5k_cmvpos_tcells_vdj_fastq_2_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R1_001.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/cellranger/5k_cmvpos_tcells/fastqs/vdj/subsampled_5k_human_antiCMV_T_TBNK_connect_VDJ_S1_L001_R2_001.fastq.gz', checkIfExists: true) ] ] input[1] = file("${workDir}/vdj_reference/") diff --git a/modules/nf-core/cellrangerarc/mkgtf/main.nf b/modules/nf-core/cellrangerarc/mkgtf/main.nf index f304c6bc6ef..eb415e3631c 100644 --- a/modules/nf-core/cellrangerarc/mkgtf/main.nf +++ b/modules/nf-core/cellrangerarc/mkgtf/main.nf @@ -33,4 +33,15 @@ process CELLRANGERARC_MKGTF { cellrangerarc: \$(echo \$( cellranger-arc --version 2>&1) | sed 's/^.*[^0-9]\\([0-9]*\\.[0-9]*\\.[0-9]*\\).*\$/\\1/' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + """ + touch ${gtf.baseName}.filtered.gtf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cellrangerarc: \$(echo \$( cellranger-arc --version 2>&1) | sed 's/^.*[^0-9]\\([0-9]*\\.[0-9]*\\.[0-9]*\\).*\$/\\1/' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test b/modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test new file mode 100644 index 00000000000..1a386af0642 --- /dev/null +++ b/modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test @@ -0,0 +1,53 @@ + +nextflow_process { + + name "Test Process CELLRANGERARC_MKGTF" + script "../main.nf" + process "CELLRANGERARC_MKGTF" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "cellrangerarc" + tag "cellrangerarc/mkgtf" + + test("test-cellrangerarc-mkgtf") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/genome/chr19.filtered.gtf.gz', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cellrangerarc-mkgtf-stub") { + options '-stub' + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/genome/chr19.filtered.gtf.gz', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test.snap b/modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test.snap new file mode 100644 index 00000000000..63b09b7a9bb --- /dev/null +++ b/modules/nf-core/cellrangerarc/mkgtf/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "test-cellrangerarc-mkgtf": { + "content": [ + { + "0": [ + "chr19.filtered.gtf.filtered.gtf:md5,29ea9f8629c84868b4b0ce5cd4f57632" + ], + "1": [ + "versions.yml:md5,a36a0a8f0c505544cd1219878220a1dc" + ], + "gtf": [ + "chr19.filtered.gtf.filtered.gtf:md5,29ea9f8629c84868b4b0ce5cd4f57632" + ], + "versions": [ + "versions.yml:md5,a36a0a8f0c505544cd1219878220a1dc" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T10:51:58.139863" + }, + "test-cellrangerarc-mkgtf-stub": { + "content": [ + { + "0": [ + "chr19.filtered.gtf.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "versions.yml:md5,a36a0a8f0c505544cd1219878220a1dc" + ], + "gtf": [ + "chr19.filtered.gtf.filtered.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,a36a0a8f0c505544cd1219878220a1dc" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T10:52:04.615927" + } +} \ No newline at end of file diff --git a/modules/nf-core/cellrangerarc/mkgtf/tests/nextflow.config b/modules/nf-core/cellrangerarc/mkgtf/tests/nextflow.config new file mode 100644 index 00000000000..cd6b1d5ed40 --- /dev/null +++ b/modules/nf-core/cellrangerarc/mkgtf/tests/nextflow.config @@ -0,0 +1,25 @@ +process { + + withName: CELLRANGERARC_MKGTF { + ext.args = '--attribute=gene_biotype:protein_coding \ + --attribute=gene_biotype:lincRNA \ + --attribute=gene_biotype:antisense \ + --attribute=gene_biotype:IG_LV_gene \ + --attribute=gene_biotype:IG_V_gene \ + --attribute=gene_biotype:IG_V_pseudogene \ + --attribute=gene_biotype:IG_D_gene \ + --attribute=gene_biotype:IG_J_gene \ + --attribute=gene_biotype:IG_J_pseudogene \ + --attribute=gene_biotype:IG_C_gene \ + --attribute=gene_biotype:IG_C_pseudogene \ + --attribute=gene_biotype:TR_V_gene \ + --attribute=gene_biotype:TR_V_pseudogene \ + --attribute=gene_biotype:TR_D_gene \ + --attribute=gene_biotype:TR_J_gene \ + --attribute=gene_biotype:TR_J_pseudogene \ + --attribute=gene_biotype:TR_C_gene' + + + } + +} diff --git a/modules/nf-core/cellrangerarc/mkref/main.nf b/modules/nf-core/cellrangerarc/mkref/main.nf index 079776baee5..b030ae921d3 100644 --- a/modules/nf-core/cellrangerarc/mkref/main.nf +++ b/modules/nf-core/cellrangerarc/mkref/main.nf @@ -35,8 +35,9 @@ process CELLRANGERARC_MKREF { reference_name = "cellrangerarc_reference" } + // unlike cellranger mkref and spaceranger mkref, cellranger-arc mkref is not *yet* implemented in the + // 10x martian runtime. It is therefore not necessary to specify --localcores and --localmem """ - python3 < versions.yml diff --git a/modules/nf-core/cellrangeratac/count/environment.yml b/modules/nf-core/cellrangeratac/count/environment.yml index e8225b81a15..3cebeff05bf 100644 --- a/modules/nf-core/cellrangeratac/count/environment.yml +++ b/modules/nf-core/cellrangeratac/count/environment.yml @@ -1,5 +1,3 @@ -name: cellrangeratac_count channels: - conda-forge - bioconda - - defaults diff --git a/modules/nf-core/cellrangeratac/count/meta.yml b/modules/nf-core/cellrangeratac/count/meta.yml index dc422ad0eda..2bdef7f60d9 100644 --- a/modules/nf-core/cellrangeratac/count/meta.yml +++ b/modules/nf-core/cellrangeratac/count/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac documentation: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac tool_dev_url: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac - licence: 10x Genomics EULA + licence: ["10x Genomics EULA"] input: - meta: type: map diff --git a/modules/nf-core/cellrangeratac/mkfastq/environment.yml b/modules/nf-core/cellrangeratac/mkfastq/environment.yml index 50b7fc6c2b1..3cebeff05bf 100644 --- a/modules/nf-core/cellrangeratac/mkfastq/environment.yml +++ b/modules/nf-core/cellrangeratac/mkfastq/environment.yml @@ -1,5 +1,3 @@ -name: cellrangeratac_mkfastq channels: - conda-forge - bioconda - - defaults diff --git a/modules/nf-core/cellrangeratac/mkfastq/meta.yml b/modules/nf-core/cellrangeratac/mkfastq/meta.yml index 46b01ba7082..fcee368d1ac 100644 --- a/modules/nf-core/cellrangeratac/mkfastq/meta.yml +++ b/modules/nf-core/cellrangeratac/mkfastq/meta.yml @@ -12,7 +12,7 @@ tools: homepage: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac documentation: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac tool_dev_url: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac - licence: 10x Genomics EULA + licence: ["10x Genomics EULA"] input: - bcl: type: file diff --git a/modules/nf-core/cellrangeratac/mkref/environment.yml b/modules/nf-core/cellrangeratac/mkref/environment.yml index 53306bce288..3cebeff05bf 100644 --- a/modules/nf-core/cellrangeratac/mkref/environment.yml +++ b/modules/nf-core/cellrangeratac/mkref/environment.yml @@ -1,5 +1,3 @@ -name: cellrangeratac_mkref channels: - conda-forge - bioconda - - defaults diff --git a/modules/nf-core/cellrangeratac/mkref/meta.yml b/modules/nf-core/cellrangeratac/mkref/meta.yml index e1d755c402a..4baed308375 100644 --- a/modules/nf-core/cellrangeratac/mkref/meta.yml +++ b/modules/nf-core/cellrangeratac/mkref/meta.yml @@ -10,7 +10,7 @@ tools: homepage: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac documentation: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac tool_dev_url: https://support.10xgenomics.com/single-cell-atac/software/pipelines/latest/what-is-cell-ranger-atac - licence: 10x Genomics EULA + licence: ["10x Genomics EULA"] input: - fasta: type: file diff --git a/modules/nf-core/cellsnp/modea/environment.yml b/modules/nf-core/cellsnp/modea/environment.yml index 2a6f6cab965..c8b70f595e2 100644 --- a/modules/nf-core/cellsnp/modea/environment.yml +++ b/modules/nf-core/cellsnp/modea/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "cellsnp_modea" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::cellsnp-lite=1.2.3" diff --git a/modules/nf-core/centrifuge/build/environment.yml b/modules/nf-core/centrifuge/build/environment.yml index fc62576d9b0..42592891580 100644 --- a/modules/nf-core/centrifuge/build/environment.yml +++ b/modules/nf-core/centrifuge/build/environment.yml @@ -1,7 +1,5 @@ -name: centrifuge_build channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::centrifuge=1.0.4.1 diff --git a/modules/nf-core/centrifuge/build/tests/main.nf.test b/modules/nf-core/centrifuge/build/tests/main.nf.test index 35132631ba3..07d584fd461 100644 --- a/modules/nf-core/centrifuge/build/tests/main.nf.test +++ b/modules/nf-core/centrifuge/build/tests/main.nf.test @@ -14,10 +14,10 @@ nextflow_process { when { process { """ - input[0] = [ [id: 'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['metagenome']['seqid2taxid_map'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['metagenome']['nodes_dmp'], checkIfExists: true) - input[3] = file(params.test_data['sarscov2']['metagenome']['names_dmp'], checkIfExists: true) + input[0] = [ [id: 'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/seqid2taxid.map', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/nodes.dmp', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/names.dmp', checkIfExists: true) input[4] = [] """ } @@ -38,10 +38,10 @@ nextflow_process { when { process { """ - input[0] = [ [id: 'test'], file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['metagenome']['seqid2taxid_map'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['metagenome']['nodes_dmp'], checkIfExists: true) - input[3] = file(params.test_data['sarscov2']['metagenome']['names_dmp'], checkIfExists: true) + input[0] = [ [id: 'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/seqid2taxid.map', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/nodes.dmp', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/names.dmp', checkIfExists: true) input[4] = [] """ } diff --git a/modules/nf-core/centrifuge/centrifuge/environment.yml b/modules/nf-core/centrifuge/centrifuge/environment.yml index cf34dc0e9b7..42592891580 100644 --- a/modules/nf-core/centrifuge/centrifuge/environment.yml +++ b/modules/nf-core/centrifuge/centrifuge/environment.yml @@ -1,7 +1,5 @@ -name: centrifuge_centrifuge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::centrifuge=1.0.4.1 diff --git a/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test b/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test index d83b522abd2..f2713608572 100644 --- a/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test +++ b/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test @@ -42,10 +42,10 @@ nextflow_process { file(process.out.results[0][1]).name, file(process.out.fastq_mapped[0][1][0]).name, file(process.out.fastq_unmapped[0][1][0]).name, + process.out.versions ).match() } ) } - } test("sarscov2_fastq_pe") { @@ -56,8 +56,8 @@ nextflow_process { input[0] = [ [ id:'test', single_end:false ], // meta map [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] - ] + file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] + ] input[1] = UNTAR.out.untar.map{ it[1] } input[2] = true input[3] = true @@ -73,10 +73,10 @@ nextflow_process { file(process.out.results[0][1]).name, file(process.out.fastq_mapped[0][1][0]).name, file(process.out.fastq_unmapped[0][1][0]).name, + process.out.versions ).match() } ) } - } test("sarscov2_fastq_se_stub") { @@ -100,7 +100,5 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test.snap b/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test.snap index f8a2ef7b8b6..a981e51793f 100644 --- a/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test.snap +++ b/modules/nf-core/centrifuge/centrifuge/tests/main.nf.test.snap @@ -92,34 +92,40 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-02T07:47:36.886757827" + "timestamp": "2024-07-09T10:36:42.919054" }, "sarscov2_fastq_se": { "content": [ "test.report.txt", "test.results.txt", "", - "" + "", + [ + "versions.yml:md5,1ce028d9f968eca6df31586fe3b77c84" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-02T08:22:31.470316024" + "timestamp": "2024-07-09T10:36:23.087465" }, "sarscov2_fastq_pe": { "content": [ "test.report.txt", "test.results.txt", "test.mapped.fastq.1.gz", - "test.unmapped.fastq.1.gz" + "test.unmapped.fastq.1.gz", + [ + "versions.yml:md5,1ce028d9f968eca6df31586fe3b77c84" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-02T08:22:48.866073154" + "timestamp": "2024-07-09T10:36:33.471335" } } \ No newline at end of file diff --git a/modules/nf-core/centrifuge/kreport/environment.yml b/modules/nf-core/centrifuge/kreport/environment.yml index 5c8fb451b7a..42592891580 100644 --- a/modules/nf-core/centrifuge/kreport/environment.yml +++ b/modules/nf-core/centrifuge/kreport/environment.yml @@ -1,7 +1,5 @@ -name: centrifuge_kreport channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::centrifuge=1.0.4.1 diff --git a/modules/nf-core/centrifuge/kreport/tests/main.nf.test b/modules/nf-core/centrifuge/kreport/tests/main.nf.test index 6347bd7cc50..6d4bc6b1d2a 100644 --- a/modules/nf-core/centrifuge/kreport/tests/main.nf.test +++ b/modules/nf-core/centrifuge/kreport/tests/main.nf.test @@ -50,8 +50,9 @@ nextflow_process { { assert process.success }, { assert snapshot( file(process.out.kreport[0][1]).name, + process.out.versions ).match() } - ) + ) } } @@ -75,7 +76,5 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/centrifuge/kreport/tests/main.nf.test.snap b/modules/nf-core/centrifuge/kreport/tests/main.nf.test.snap index 4e0aaa79182..3d638acd8b9 100644 --- a/modules/nf-core/centrifuge/kreport/tests/main.nf.test.snap +++ b/modules/nf-core/centrifuge/kreport/tests/main.nf.test.snap @@ -30,18 +30,21 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-02T06:18:36.794405448" + "timestamp": "2024-07-09T10:37:05.883784" }, "sarscov2_fastq_se": { "content": [ - "test.txt" + "test.txt", + [ + "versions.yml:md5,43c766a19f2edf7e05d1a2a0b1816b13" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-02T06:28:20.461891873" + "timestamp": "2024-07-09T10:36:53.971559" } } \ No newline at end of file diff --git a/modules/nf-core/checkm/lineagewf/environment.yml b/modules/nf-core/checkm/lineagewf/environment.yml index 004267fae98..1b87050296b 100644 --- a/modules/nf-core/checkm/lineagewf/environment.yml +++ b/modules/nf-core/checkm/lineagewf/environment.yml @@ -1,7 +1,5 @@ -name: checkm_lineagewf channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::checkm-genome=1.2.2 + - bioconda::checkm-genome=1.2.3 diff --git a/modules/nf-core/checkm/lineagewf/main.nf b/modules/nf-core/checkm/lineagewf/main.nf index dbaab0b619e..c2183461b10 100644 --- a/modules/nf-core/checkm/lineagewf/main.nf +++ b/modules/nf-core/checkm/lineagewf/main.nf @@ -4,8 +4,8 @@ process CHECKM_LINEAGEWF { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/checkm-genome:1.2.2--pyhdfd78af_0' : - 'biocontainers/checkm-genome:1.2.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/checkm-genome:1.2.3--pyhdfd78af_0' : + 'biocontainers/checkm-genome:1.2.3--pyhdfd78af_0' }" input: tuple val(meta), path(fasta, stageAs: "input_bins/*") diff --git a/modules/nf-core/checkm/lineagewf/tests/main.nf.test b/modules/nf-core/checkm/lineagewf/tests/main.nf.test index 050bfd85fee..28dfb46f363 100644 --- a/modules/nf-core/checkm/lineagewf/tests/main.nf.test +++ b/modules/nf-core/checkm/lineagewf/tests/main.nf.test @@ -14,9 +14,9 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) - ] + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) + ] input[1] = 'fasta' input[2] = [] // Download CheckM database """ diff --git a/modules/nf-core/checkm/lineagewf/tests/main.nf.test.snap b/modules/nf-core/checkm/lineagewf/tests/main.nf.test.snap index 07db6bbf81a..524d40d5479 100644 --- a/modules/nf-core/checkm/lineagewf/tests/main.nf.test.snap +++ b/modules/nf-core/checkm/lineagewf/tests/main.nf.test.snap @@ -12,13 +12,13 @@ ] ], [ - "versions.yml:md5,fd7a8db316717ab0695e47d7d0a645ff" + "versions.yml:md5,08f99a3a9677aba1509cda63dcf5ce71" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.2" + "nextflow": "24.04.4" }, - "timestamp": "2024-05-22T19:13:13.504227996" + "timestamp": "2024-08-14T12:39:55.748324" } } \ No newline at end of file diff --git a/modules/nf-core/checkm/qa/environment.yml b/modules/nf-core/checkm/qa/environment.yml index 3937f98bfe4..06c5639e07d 100644 --- a/modules/nf-core/checkm/qa/environment.yml +++ b/modules/nf-core/checkm/qa/environment.yml @@ -1,7 +1,5 @@ -name: checkm_qa channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::checkm-genome=1.2.2 diff --git a/modules/nf-core/checkm2/databasedownload/environment.yml b/modules/nf-core/checkm2/databasedownload/environment.yml index 549ef9cee68..18fd1f51a80 100644 --- a/modules/nf-core/checkm2/databasedownload/environment.yml +++ b/modules/nf-core/checkm2/databasedownload/environment.yml @@ -1,7 +1,5 @@ -name: checkm2_databasedownload channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::checkm2=1.0.2 diff --git a/modules/nf-core/checkm2/predict/environment.yml b/modules/nf-core/checkm2/predict/environment.yml index 1d897ac0728..18fd1f51a80 100644 --- a/modules/nf-core/checkm2/predict/environment.yml +++ b/modules/nf-core/checkm2/predict/environment.yml @@ -1,7 +1,5 @@ -name: checkm2_predict channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::checkm2=1.0.2 diff --git a/modules/nf-core/checkm2/predict/tests/main.nf.test b/modules/nf-core/checkm2/predict/tests/main.nf.test index b380faa7856..cd7dda4ed25 100644 --- a/modules/nf-core/checkm2/predict/tests/main.nf.test +++ b/modules/nf-core/checkm2/predict/tests/main.nf.test @@ -23,7 +23,7 @@ nextflow_process { } process { """ - input[0] = [ [id: 'test'], [file(params.test_data['sarscov2']['illumina']['contigs_fasta'])] ] + input[0] = [ [id: 'test'], [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true)] ] input[1] = CHECKM2_DATABASEDOWNLOAD.out.database """ } diff --git a/modules/nf-core/checkqc/environment.yml b/modules/nf-core/checkqc/environment.yml new file mode 100644 index 00000000000..1a0541303d5 --- /dev/null +++ b/modules/nf-core/checkqc/environment.yml @@ -0,0 +1,10 @@ +channels: + - conda-forge + - bioconda +dependencies: + - python=3.8 + - numpy=1.26 + - pip + - pip: # FIXME https://github.com/nf-core/modules/issues/5814 + - checkqc==4.0.3 + - interop==1.3.2 diff --git a/modules/nf-core/checkqc/main.nf b/modules/nf-core/checkqc/main.nf new file mode 100644 index 00000000000..04fc8704739 --- /dev/null +++ b/modules/nf-core/checkqc/main.nf @@ -0,0 +1,56 @@ +process CHECKQC { + tag "$meta.id" + label 'process_single' + + container "community.wave.seqera.io/library/python_numpy_pip_checkqc_interop:b5301d9801b8e66b" + + input: + tuple val(meta), path(run_dir) + path(checkqc_config) + + output: + tuple val(meta), path("*checkqc_report.json"), emit: report + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "CheckQC module does not support Conda yet. Please use Docker / Singularity / Podman instead." + } + + def args = task.ext.args ?: '' + def config = checkqc_config ? "--config $checkqc_config" : '' + + """ + checkqc \ + $args \ + $config \ + --json \ + $run_dir > checkqc_report.json || true + + # Check if the output JSON file is empty + if [[ ! -s checkqc_report.json ]] ; then + echo "Error: Empty JSON files. Most likely due to missing files in run directory. See .command.log file for errors." + exit 1 + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + checkqc: \$( checkqc --version | sed -e "s/checkqc, version //g" ) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + """ + touch checkqc_report.json + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + checkqc: \$( checkqc --version | sed -e "s/checkqc, version //g" ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/checkqc/meta.yml b/modules/nf-core/checkqc/meta.yml new file mode 100644 index 00000000000..0c3d98ba916 --- /dev/null +++ b/modules/nf-core/checkqc/meta.yml @@ -0,0 +1,43 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json +name: "checkqc" +description: A simple program to parse Illumina NGS data and check it for quality criteria +keywords: + - QC + - Illumina + - genomics +tools: + - "checkqc": + description: "A simple program to parse Illumina NGS data and check it for quality criteria." + homepage: "https://github.com/Molmed/checkQC" + documentation: "http://checkqc.readthedocs.io/en/latest/" + doi: "10.21105/joss.00556" + licence: ["GPL v3"] + +input: + - run_dir: + type: file + description: | + Illumina sequencing run directory + Can be directory or a compressed tar (tar.gz) of the directory + - checkqc_config: + type: file + description: CheckQC configuration file + pattern: "*.{yml,yaml}" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - report: + type: file + description: CheckQC report in json format + pattern: "*checkqc_report.json" + - log: + type: file + description: CheckQC log in txt format + pattern: "*_log.txt" + +authors: + - "@matrulda" diff --git a/modules/nf-core/checkqc/tests/main.nf.test b/modules/nf-core/checkqc/tests/main.nf.test new file mode 100644 index 00000000000..c780f9c08b2 --- /dev/null +++ b/modules/nf-core/checkqc/tests/main.nf.test @@ -0,0 +1,116 @@ +nextflow_process { + + name "Test Process CHECKQC" + script "../main.nf" + process "CHECKQC" + tag "modules" + tag "modules_nfcore" + tag "untar" + tag "checkqc" + + test("homo_sapiens illumina test_interop_bcl2fastqstats_flowcell - QC OK") { + config "./nextflow.config" + + setup { + run("UNTAR") { + script "../../untar/main.nf" + process { + """ + input[0] = Channel.of([[id: 'test'], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/interop_bcl2fastqstats/test_flowcell_stats.tar.gz', checkIfExists: true)]) + """ + } + } + } + + when { + process { + """ + input[0] = UNTAR.out.untar + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.report }, + { assert process.out.report.size() == 1 }, + { assert process.out.report.get(0).get(1) ==~ ".*/checkqc_report.json" }, + { assert path(process.out.report.get(0).get(1)).json.exit_status == 0 }, + { assert path(process.out.report.get(0).get(1)).json.run_summary.instrument_and_reagent_type == "hiseq2500_rapidhighoutput_v4" } + ) + } + + } + test("homo_sapiens illumina test_miseq_noRunParameters - Log Error: no File") { + config "./nextflow.config" + + setup { + run("UNTAR") { + script "../../untar/main.nf" + process { + """ + input[0] = Channel.of([[id: 'test_no_xml'], file('https://github.com/nf-core/test-datasets/raw/demultiplex/testdata/MiSeq/220422_M11111_0222_000000000-K9H97.tar.gz', checkIfExists: true)]) + """ + } + } + } + + when { + process { + """ + input[0] = UNTAR.out.untar + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.failed }, + { assert process.stdout.any { it.contains("ERROR Could not find [R|r]unParameters.xml") } } + ) + } + + } + + test("homo_sapiens illumina test_interop_bcl2fastqstats_flowcell - QC Error") { + + setup { + run("UNTAR") { + script "../../untar/main.nf" + process { + """ + input[0] = Channel.of([[id: 'test_no_downgrade_errors'], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/interop_bcl2fastqstats/test_flowcell_stats.tar.gz', checkIfExists: true)]) + """ + } + } + } + + when { + process { + """ + input[0] = UNTAR.out.untar + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert process.out.report }, + { assert process.out.report.size() == 1 }, + { assert process.out.report.get(0).get(1) ==~ ".*/checkqc_report.json" }, + { assert path(process.out.report.get(0).get(1)).json.exit_status == 1 }, + { assert path(process.out.report.get(0).get(1)).json.run_summary.handlers.find { it.name == 'UndeterminedPercentageHandler' }.error == 9 } + ) + } + + } + } + + diff --git a/modules/nf-core/checkqc/tests/main.nf.test.snap b/modules/nf-core/checkqc/tests/main.nf.test.snap new file mode 100644 index 00000000000..0f08d58e38f --- /dev/null +++ b/modules/nf-core/checkqc/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "homo_sapiens illumina test_interop_bcl2fastqstats_flowcell - QC Error": { + "content": [ + { + "0": [ + [ + { + "id": "test_no_downgrade_errors" + }, + "checkqc_report.json:md5,c0c5655b8f09d848de97f79073b2eae0" + ] + ], + "1": [ + "versions.yml:md5,7c921c68a4de1cc3345edb1fd88444d1" + ], + "report": [ + [ + { + "id": "test_no_downgrade_errors" + }, + "checkqc_report.json:md5,c0c5655b8f09d848de97f79073b2eae0" + ] + ], + "versions": [ + "versions.yml:md5,7c921c68a4de1cc3345edb1fd88444d1" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-07T14:04:38.224420172" + }, + "homo_sapiens illumina test_interop_bcl2fastqstats_flowcell - QC OK": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "checkqc_report.json:md5,7e3ac9ce7163436cbd5f5420ca08ffcd" + ] + ], + "1": [ + "versions.yml:md5,7c921c68a4de1cc3345edb1fd88444d1" + ], + "report": [ + [ + { + "id": "test" + }, + "checkqc_report.json:md5,7e3ac9ce7163436cbd5f5420ca08ffcd" + ] + ], + "versions": [ + "versions.yml:md5,7c921c68a4de1cc3345edb1fd88444d1" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-07T14:03:38.019949361" + } +} \ No newline at end of file diff --git a/modules/nf-core/checkqc/tests/nextflow.config b/modules/nf-core/checkqc/tests/nextflow.config new file mode 100644 index 00000000000..50daa2d49ab --- /dev/null +++ b/modules/nf-core/checkqc/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: CHECKQC { + ext.args = '--downgrade-errors ReadsPerSampleHandler' + } +} diff --git a/modules/nf-core/checkqc/tests/tags.yml b/modules/nf-core/checkqc/tests/tags.yml new file mode 100644 index 00000000000..0604f6d014a --- /dev/null +++ b/modules/nf-core/checkqc/tests/tags.yml @@ -0,0 +1,2 @@ +checkqc: + - modules/nf-core/checkqc/** diff --git a/modules/nf-core/checkv/downloaddatabase/environment.yml b/modules/nf-core/checkv/downloaddatabase/environment.yml index 9dfdcd12c66..affce8dddbf 100644 --- a/modules/nf-core/checkv/downloaddatabase/environment.yml +++ b/modules/nf-core/checkv/downloaddatabase/environment.yml @@ -1,7 +1,5 @@ -name: checkv_downloaddatabase channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::checkv=1.0.1 diff --git a/modules/nf-core/checkv/endtoend/environment.yml b/modules/nf-core/checkv/endtoend/environment.yml index 2acd3851769..affce8dddbf 100644 --- a/modules/nf-core/checkv/endtoend/environment.yml +++ b/modules/nf-core/checkv/endtoend/environment.yml @@ -1,7 +1,5 @@ -name: checkv_endtoend channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::checkv=1.0.1 diff --git a/modules/nf-core/checkv/endtoend/tests/main.nf.test b/modules/nf-core/checkv/endtoend/tests/main.nf.test index 041638a5909..c3b6718cd42 100644 --- a/modules/nf-core/checkv/endtoend/tests/main.nf.test +++ b/modules/nf-core/checkv/endtoend/tests/main.nf.test @@ -33,7 +33,7 @@ nextflow_process { input[0] = Channel.of( [ [ id:'test' ], - file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) ] ) """ diff --git a/modules/nf-core/checkv/updatedatabase/environment.yml b/modules/nf-core/checkv/updatedatabase/environment.yml index 8b1eeaad0b0..affce8dddbf 100644 --- a/modules/nf-core/checkv/updatedatabase/environment.yml +++ b/modules/nf-core/checkv/updatedatabase/environment.yml @@ -1,7 +1,5 @@ -name: checkv_updatedatabase channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::checkv=1.0.1 diff --git a/modules/nf-core/checkv/updatedatabase/tests/main.nf.test b/modules/nf-core/checkv/updatedatabase/tests/main.nf.test index 2f59da973fa..5a82c80e539 100644 --- a/modules/nf-core/checkv/updatedatabase/tests/main.nf.test +++ b/modules/nf-core/checkv/updatedatabase/tests/main.nf.test @@ -48,6 +48,8 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd.log").exists() }, + { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd").exists() }, { assert snapshot( "${process.out.checkv_db.get(0).get(1).get(0)}", "${process.out.checkv_db.get(0).get(1).get(2)}", @@ -57,11 +59,10 @@ nextflow_process { "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.faa", "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.fna", "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.log", - "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.tsv" + "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.tsv", + process.out.versions ).match() }, - { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd.log").exists() }, - { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd").exists() } ) } } @@ -84,6 +85,8 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd.log").exists() }, + { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd").exists() }, { assert snapshot( "${process.out.checkv_db.get(0).get(1).get(0)}", "${process.out.checkv_db.get(0).get(1).get(2)}", @@ -93,11 +96,10 @@ nextflow_process { "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.faa", "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.fna", "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.log", - "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.tsv" + "${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.tsv", + process.out.versions ).match() - }, - { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd.log").exists() }, - { assert new File("${process.out.checkv_db.get(0).get(1).get(1)}/checkv_reps.dmnd").exists() } + } ) } } diff --git a/modules/nf-core/checkv/updatedatabase/tests/main.nf.test.snap b/modules/nf-core/checkv/updatedatabase/tests/main.nf.test.snap index e10cfce143e..d0a06a2713c 100644 --- a/modules/nf-core/checkv/updatedatabase/tests/main.nf.test.snap +++ b/modules/nf-core/checkv/updatedatabase/tests/main.nf.test.snap @@ -15,9 +15,16 @@ "checkv_reps.faa:md5,6f1e81fbab2d6f39367e3a037df1eec9", "checkv_reps.fna:md5,5f7b89beb65e7405ff2214c2a7c981ba", "checkv_reps.log:md5,ebd0238f4df0fa5f3a8af40cd2646f84", - "checkv_reps.tsv:md5,ccb5c738991f63618ecf9c20c9afa69c" + "checkv_reps.tsv:md5,ccb5c738991f63618ecf9c20c9afa69c", + [ + "versions.yml:md5,e2bdb90d427b1d7b5d3ff4555230cdcd" + ] ], - "timestamp": "2024-01-17T17:19:49.436344753" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-09T10:39:34.796067" }, "sarscov2 - genome - genome_fasta": { "content": [ @@ -35,8 +42,15 @@ "checkv_reps.faa:md5,6f1e81fbab2d6f39367e3a037df1eec9", "checkv_reps.fna:md5,5f7b89beb65e7405ff2214c2a7c981ba", "checkv_reps.log:md5,ebd0238f4df0fa5f3a8af40cd2646f84", - "checkv_reps.tsv:md5,ccb5c738991f63618ecf9c20c9afa69c" + "checkv_reps.tsv:md5,ccb5c738991f63618ecf9c20c9afa69c", + [ + "versions.yml:md5,e2bdb90d427b1d7b5d3ff4555230cdcd" + ] ], - "timestamp": "2023-12-11T15:51:27.123218646" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-09T10:39:17.749242" } } \ No newline at end of file diff --git a/modules/nf-core/chewbbaca/createschema/environment.yml b/modules/nf-core/chewbbaca/createschema/environment.yml new file mode 100644 index 00000000000..22fd2e2e842 --- /dev/null +++ b/modules/nf-core/chewbbaca/createschema/environment.yml @@ -0,0 +1,7 @@ +channels: + - conda-forge + - bioconda + +dependencies: + - bioconda::chewbbaca=3.3.5 + - libmamba diff --git a/modules/nf-core/chewbbaca/createschema/main.nf b/modules/nf-core/chewbbaca/createschema/main.nf new file mode 100644 index 00000000000..90ca4ae4532 --- /dev/null +++ b/modules/nf-core/chewbbaca/createschema/main.nf @@ -0,0 +1,69 @@ +process CHEWBBACA_CREATESCHEMA { + tag "$meta.id" + label 'process_low' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/chewbbaca:3.3.5--pyhdfd78af_0': + 'biocontainers/chewbbaca:3.3.5--pyhdfd78af_0' }" + + input: + tuple val(meta), path(fasta, stageAs: "input_genomes/*") + path prodigal_tf + path cds + + output: + tuple val(meta), path("results/$meta.id"), emit: schema + path "results/cds_coordinates.tsv" , emit: cds_coordinates + path "results/invalid_cds.txt" , emit: invalid_cds + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def schema = "--n ${prefix}" + def prodigal_tf = prodigal_tf ? "--ptf ${prodigal_tf}" : "" + def cds = cds ? "--cds ${cds}" : "" + + """ + find ./input_genomes/ -name "*.gz" | sed 's/.gz//' | xargs -I {} bash -c 'gzip -cdf {}.gz > {}' + + chewie \\ + CreateSchema \\ + -i input_genomes/ \\ + -o results \\ + $schema \\ + $args \\ + $prodigal_tf \\ + $cds \\ + --cpu $task.cpus + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + chewbbaca: \$(echo \$(chewie --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def schema = "--n ${prefix}" + + """ + mkdir -p results/$meta.id/short/ + touch results/$meta.id/contigs-protein{1..*}.fasta + touch results/$meta.id/.genes_list + touch results/$meta.id/.schema_config + touch results/$meta.id/short/contigs-protein{1..*}_short.fasta + touch results/cds_coordinates.tsv + touch results/invalid_cds.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + chewbbaca: \$(echo \$(chewie --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/chewbbaca/createschema/meta.yml b/modules/nf-core/chewbbaca/createschema/meta.yml new file mode 100644 index 00000000000..1c7be66e2ea --- /dev/null +++ b/modules/nf-core/chewbbaca/createschema/meta.yml @@ -0,0 +1,66 @@ +name: chewbbaca_createschema +description: Create a schema to determine the allelic profiles of a genome +keywords: + - cgMLST + - WGS + - genomics +tools: + - chewbbaca: + description: "A complete suite for gene-by-gene schema creation and strain identification." + homepage: "https://chewbbaca.readthedocs.io/en/latest/index.html" + documentation: "https://chewbbaca.readthedocs.io/en/latest/index.html" + tool_dev_url: "https://github.com/B-UMMI/chewBBACA" + doi: "10.1099/mgen.0.000166" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + + - fasta: + type: directory + description: One or multiple FASTA files to create schema from + pattern: "*.{fasta,fa,fas,fna,fasta.gz,fa.gz,fas.gz,fna.gz}" + + - prodigal_tf: + type: file + description: File containing the prodigal training file + pattern: "*.ptf" + + - cds: + type: file + description: File containing the prodigal cds file + pattern: "*.cds" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + + - schema: + type: directory + description: Schema directory + pattern: "*/" + + - cds_coordinates: + type: file + description: File containing the coordinates of the CDS in the input sample + pattern: "*_cds_coordinates.tsv" + + - invalid_cds: + type: file + description: File containing the list of alleles predicted by Prodigal that were excluded + pattern: "*_invalid_cds.txt" + +authors: + - "@anwarMZ" diff --git a/modules/nf-core/chewbbaca/createschema/tests/main.nf.test b/modules/nf-core/chewbbaca/createschema/tests/main.nf.test new file mode 100644 index 00000000000..0cac4c3fb0f --- /dev/null +++ b/modules/nf-core/chewbbaca/createschema/tests/main.nf.test @@ -0,0 +1,120 @@ +nextflow_process { + + name "Test Process CHEWBBACA_CREATESCHEMA" + script "../main.nf" + process "CHEWBBACA_CREATESCHEMA" + + tag "modules" + tag "modules_nfcore" + tag "chewbbaca" + tag "chewbbaca/createschema" + + test("sarscov2 illumina contigs [fasta]") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) + ] + input[1] = [] // ptf + input[2] = [] //cds + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.schema[0][1]).list().sort().findAll { file(it).name != ".genes_list" }, + process.out.cds_coordinates, + process.out.invalid_cds, + process.out.versions).match() } + ) + } + } + + test("sarscov2 illumina contigs & genome [fasta]") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[1] = [] // ptf + input[2] = [] // cds + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.schema[0][1]).list().sort().findAll { file(it).name != ".genes_list" }, + process.out.cds_coordinates, + process.out.invalid_cds, + process.out.versions).match() } + ) + } + } + + test("sarscov2 illumina contigs [fasta] & genome [fasta_gz]") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[1] = [] // ptf + input[2] = [] // cds + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.schema[0][1]).list().sort().findAll { file(it).name != ".genes_list" }, + process.out.cds_coordinates, + process.out.invalid_cds, + process.out.versions).match() } + ) + } + } + + test("sarscov2 illumina contigs [fasta] & genome [fasta_gz] - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[1] = [] // ptf + input[2] = [] // cds + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.schema[0][1]).list().sort().findAll { file(it).name != ".genes_list" }, + process.out.cds_coordinates, + process.out.invalid_cds, + process.out.versions).match() } + ) + } + } +} diff --git a/modules/nf-core/chewbbaca/createschema/tests/main.nf.test.snap b/modules/nf-core/chewbbaca/createschema/tests/main.nf.test.snap new file mode 100644 index 00000000000..85e63be9af5 --- /dev/null +++ b/modules/nf-core/chewbbaca/createschema/tests/main.nf.test.snap @@ -0,0 +1,139 @@ +{ + "sarscov2 illumina contigs [fasta]": { + "content": [ + [ + ".schema_config", + "contigs-protein1.fasta", + "contigs-protein10.fasta", + "contigs-protein11.fasta", + "contigs-protein13.fasta", + "contigs-protein14.fasta", + "contigs-protein16.fasta", + "contigs-protein17.fasta", + "contigs-protein18.fasta", + "contigs-protein19.fasta", + "contigs-protein2.fasta", + "contigs-protein20.fasta", + "contigs-protein4.fasta", + "contigs-protein6.fasta", + "contigs-protein7.fasta", + "contigs-protein8.fasta", + "contigs-protein9.fasta", + "short" + ], + [ + "cds_coordinates.tsv:md5,7fef49207aa024b68f465e986f4c7444" + ], + [ + "invalid_cds.txt:md5,0d1ae99b034deaca2b04e64ed7548d18" + ], + [ + "versions.yml:md5,a957a2c9e352caa39f8e12608b287810" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-11T09:38:07.580722145" + }, + "sarscov2 illumina contigs [fasta] & genome [fasta_gz]": { + "content": [ + [ + ".schema_config", + "contigs-protein1.fasta", + "contigs-protein10.fasta", + "contigs-protein11.fasta", + "contigs-protein13.fasta", + "contigs-protein14.fasta", + "contigs-protein16.fasta", + "contigs-protein17.fasta", + "contigs-protein18.fasta", + "contigs-protein19.fasta", + "contigs-protein2.fasta", + "contigs-protein20.fasta", + "contigs-protein4.fasta", + "contigs-protein6.fasta", + "contigs-protein7.fasta", + "contigs-protein8.fasta", + "contigs-protein9.fasta", + "short" + ], + [ + "cds_coordinates.tsv:md5,7fef49207aa024b68f465e986f4c7444" + ], + [ + "invalid_cds.txt:md5,0d1ae99b034deaca2b04e64ed7548d18" + ], + [ + "versions.yml:md5,a957a2c9e352caa39f8e12608b287810" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-11T09:38:46.431200697" + }, + "sarscov2 illumina contigs [fasta] & genome [fasta_gz] - stub": { + "content": [ + [ + ".schema_config", + "contigs-protein{1..*}.fasta", + "short" + ], + [ + "cds_coordinates.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "invalid_cds.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + [ + "versions.yml:md5,a957a2c9e352caa39f8e12608b287810" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-11T09:39:14.063620184" + }, + "sarscov2 illumina contigs & genome [fasta]": { + "content": [ + [ + ".schema_config", + "contigs-protein1.fasta", + "contigs-protein10.fasta", + "contigs-protein11.fasta", + "contigs-protein13.fasta", + "contigs-protein14.fasta", + "contigs-protein16.fasta", + "contigs-protein17.fasta", + "contigs-protein18.fasta", + "contigs-protein19.fasta", + "contigs-protein2.fasta", + "contigs-protein20.fasta", + "contigs-protein4.fasta", + "contigs-protein6.fasta", + "contigs-protein7.fasta", + "contigs-protein8.fasta", + "contigs-protein9.fasta", + "short" + ], + [ + "cds_coordinates.tsv:md5,7fef49207aa024b68f465e986f4c7444" + ], + [ + "invalid_cds.txt:md5,0d1ae99b034deaca2b04e64ed7548d18" + ], + [ + "versions.yml:md5,a957a2c9e352caa39f8e12608b287810" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-11T09:38:24.00163744" + } +} \ No newline at end of file diff --git a/modules/nf-core/chewbbaca/createschema/tests/tags.yml b/modules/nf-core/chewbbaca/createschema/tests/tags.yml new file mode 100644 index 00000000000..c611ab64aeb --- /dev/null +++ b/modules/nf-core/chewbbaca/createschema/tests/tags.yml @@ -0,0 +1,2 @@ +chewbbaca/createschema: + - "modules/nf-core/chewbbaca/createschema/**" diff --git a/modules/nf-core/chopper/environment.yml b/modules/nf-core/chopper/environment.yml index ef9aaa425a2..e80840e1514 100644 --- a/modules/nf-core/chopper/environment.yml +++ b/modules/nf-core/chopper/environment.yml @@ -1,7 +1,5 @@ -name: chopper channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::chopper=0.3.0 diff --git a/modules/nf-core/chopper/meta.yml b/modules/nf-core/chopper/meta.yml index 34d19abba2f..9d8093d66bc 100644 --- a/modules/nf-core/chopper/meta.yml +++ b/modules/nf-core/chopper/meta.yml @@ -17,7 +17,7 @@ tools: documentation: "https://github.com/wdecoster/chopper" tool_dev_url: "https://github.com/wdecoster/chopper" doi: "10.1093/bioinformatics/bty149" - licence: "['MIT']" + licence: ["MIT"] args_id: "$args2" - "gzip": description: "Gzip reduces the size of the named files using Lempel-Ziv coding (LZ77)." diff --git a/modules/nf-core/chopper/tests/main.nf.test b/modules/nf-core/chopper/tests/main.nf.test index bec60ec253e..ee195b5f720 100644 --- a/modules/nf-core/chopper/tests/main.nf.test +++ b/modules/nf-core/chopper/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { """ input[0] = [ [id:'test_out' ], // meta map - file(params.test_data['sarscov2']['nanopore']['test_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/nanopore/fastq/test.fastq.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/chromap/chromap/environment.yml b/modules/nf-core/chromap/chromap/environment.yml index a630f9c5b61..a59614c03c4 100644 --- a/modules/nf-core/chromap/chromap/environment.yml +++ b/modules/nf-core/chromap/chromap/environment.yml @@ -1,8 +1,6 @@ -name: chromap_chromap channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::chromap=0.2.4 - - bioconda::samtools=1.16.1 + - bioconda::chromap=0.2.6 + - bioconda::samtools=1.20 diff --git a/modules/nf-core/chromap/chromap/main.nf b/modules/nf-core/chromap/chromap/main.nf index 2cc09a43b63..1a00acbb616 100644 --- a/modules/nf-core/chromap/chromap/main.nf +++ b/modules/nf-core/chromap/chromap/main.nf @@ -4,8 +4,8 @@ process CHROMAP_CHROMAP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-1f09f39f20b1c4ee36581dc81cc323c70e661633:5b2e433ab8b3d1ef098fc944b567fd98caa23f56-0' : - 'biocontainers/mulled-v2-1f09f39f20b1c4ee36581dc81cc323c70e661633:5b2e433ab8b3d1ef098fc944b567fd98caa23f56-0' }" + 'https://depot.galaxyproject.org/singularity/mulled-v2-1f09f39f20b1c4ee36581dc81cc323c70e661633:6500f0fa0c9536821177168555632d9811670937-0' : + 'biocontainers/mulled-v2-1f09f39f20b1c4ee36581dc81cc323c70e661633:6500f0fa0c9536821177168555632d9811670937-0' }" input: tuple val(meta), path(reads) @@ -92,4 +92,19 @@ process CHROMAP_CHROMAP { END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | gzip > ${prefix}.bed.gz + touch ${prefix}.bam + echo "" | gzip > ${prefix}.tagAlign.gz + echo "" | gzip > ${prefix}.pairs.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + chromap: \$(echo \$(chromap --version 2>&1)) + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/chromap/chromap/tests/main.nf.test b/modules/nf-core/chromap/chromap/tests/main.nf.test index c57e740ffde..a20382f9bef 100644 --- a/modules/nf-core/chromap/chromap/tests/main.nf.test +++ b/modules/nf-core/chromap/chromap/tests/main.nf.test @@ -10,30 +10,36 @@ nextflow_process { tag "chromap/chromap" tag "chromap/index" - test("test_chromap_chromap_single_end") { - - setup { - run("CHROMAP_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } + setup { + + run("CHROMAP_INDEX") { + + script "../../index/main.nf" + + process { + """ + input[0] = [ + [:], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ } } + } + + test("sarscov2 - single_end") { when { process { """ - input[0] = Channel.of([ + input[0] = [ [ id:'test', single_end:true ], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true)] - ]) - input[1] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [:], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] input[2] = CHROMAP_INDEX.out.index input[3] = [] input[4] = [] @@ -51,33 +57,22 @@ nextflow_process { } } - test("test_chromap_chromap_paired_end") { - - setup { - run("CHROMAP_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } + test("sarscov2 - paired_end ") { when { process { """ - input[0] = Channel.of([ + input[0] = [ [ id:'test', single_end:false ], // meta map [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - input[1] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) + ] + input[1] = [ + [:], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] input[2] = CHROMAP_INDEX.out.index input[3] = [] input[4] = [] @@ -96,34 +91,25 @@ nextflow_process { } - test("test_chromap_chromap_paired_bam") { - - setup { - run("CHROMAP_INDEX") { - script "../../index/main.nf" - process { - """ - input[0] = Channel.of([ - [:], // meta map - [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] - ]) - """ - } - } - } + test("sarscov2 - paired_end - bam") { when { + config "./nextflow.config" + process { """ - input[0] = Channel.of([ + input[0] = [ [ id:'test', single_end:false ], // meta map - [ - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] - ]) - input[1] = Channel.of([[:], [file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)]]) + ] + input[1] = [ + [:], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] input[2] = CHROMAP_INDEX.out.index input[3] = [] input[4] = [] @@ -136,10 +122,47 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.versions).match("versions") }, - { assert snapshot(file(process.out.bam[0][1]).name).match() } + { + assert snapshot( + bam(process.out.bam[0][1]).getHeaderMD5(), + bam(process.out.bam[0][1]).getReadsMD5(), + process.out.versions + ) + } ) } } + + test("sarscov2 - single_end - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ] + input[1] = [ + [:], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = CHROMAP_INDEX.out.index + input[3] = [] + input[4] = [] + input[5] = [] + input[6] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/chromap/chromap/tests/main.nf.test.snap b/modules/nf-core/chromap/chromap/tests/main.nf.test.snap index e3a184deb6a..1f06dc9e837 100644 --- a/modules/nf-core/chromap/chromap/tests/main.nf.test.snap +++ b/modules/nf-core/chromap/chromap/tests/main.nf.test.snap @@ -1,14 +1,14 @@ { - "test_chromap_chromap_paired_end": { + "sarscov2 - single_end": { "content": [ { "0": [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.bed.gz:md5,54c1feb6f714b72f73befae8435e242b" + "test.bed.gz:md5,b23aa9dae812fe84c308df6e18d850be" ] ], "1": [ @@ -21,7 +21,7 @@ ], "4": [ - "versions.yml:md5,80647c2956e504334ad25ce31d33b539" + "versions.yml:md5,e3ece11a3651bd28b0ea714f94f09da7" ], "bam": [ @@ -30,9 +30,9 @@ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.bed.gz:md5,54c1feb6f714b72f73befae8435e242b" + "test.bed.gz:md5,b23aa9dae812fe84c308df6e18d850be" ] ], "pairs": [ @@ -42,36 +42,26 @@ ], "versions": [ - "versions.yml:md5,80647c2956e504334ad25ce31d33b539" + "versions.yml:md5,e3ece11a3651bd28b0ea714f94f09da7" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-22T19:08:55.497043" + "timestamp": "2024-08-05T17:49:22.798324749" }, - "test_chromap_chromap_paired_bam": { - "content": [ - "test.bam" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" - }, - "timestamp": "2024-05-22T19:09:02.957218" - }, - "test_chromap_chromap_single_end": { + "sarscov2 - paired_end ": { "content": [ { "0": [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.bed.gz:md5,c45f5bb1c6eb56359760ce3827bfe3f4" + "test.bed.gz:md5,f658c1e94adef751ad08e132aac92712" ] ], "1": [ @@ -84,7 +74,7 @@ ], "4": [ - "versions.yml:md5,80647c2956e504334ad25ce31d33b539" + "versions.yml:md5,e3ece11a3651bd28b0ea714f94f09da7" ], "bam": [ @@ -93,9 +83,9 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.bed.gz:md5,c45f5bb1c6eb56359760ce3827bfe3f4" + "test.bed.gz:md5,f658c1e94adef751ad08e132aac92712" ] ], "pairs": [ @@ -105,26 +95,103 @@ ], "versions": [ - "versions.yml:md5,80647c2956e504334ad25ce31d33b539" + "versions.yml:md5,e3ece11a3651bd28b0ea714f94f09da7" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-22T19:08:47.822066" + "timestamp": "2024-08-05T17:49:29.530097947" }, - "versions": { + "sarscov2 - single_end - stub": { "content": [ - [ - "versions.yml:md5,80647c2956e504334ad25ce31d33b539" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.tagAlign.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.pairs.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "4": [ + "versions.yml:md5,e3ece11a3651bd28b0ea714f94f09da7" + ], + "bam": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bed": [ + [ + { + "id": "test", + "single_end": true + }, + "test.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "pairs": [ + [ + { + "id": "test", + "single_end": true + }, + "test.pairs.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "tagAlign": [ + [ + { + "id": "test", + "single_end": true + }, + "test.tagAlign.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,e3ece11a3651bd28b0ea714f94f09da7" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-22T19:09:02.94685" + "timestamp": "2024-08-05T17:49:42.086410229" } -} +} \ No newline at end of file diff --git a/modules/nf-core/chromap/index/environment.yml b/modules/nf-core/chromap/index/environment.yml index 602863ab594..1eb3f8703d6 100644 --- a/modules/nf-core/chromap/index/environment.yml +++ b/modules/nf-core/chromap/index/environment.yml @@ -1,7 +1,5 @@ -name: chromap_index channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::chromap=0.2.5 + - bioconda::chromap=0.2.6 diff --git a/modules/nf-core/chromap/index/main.nf b/modules/nf-core/chromap/index/main.nf index 43125bc3336..41bd99fddcc 100644 --- a/modules/nf-core/chromap/index/main.nf +++ b/modules/nf-core/chromap/index/main.nf @@ -4,8 +4,8 @@ process CHROMAP_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/chromap:0.2.5--hd03093a_0' : - 'biocontainers/chromap:0.2.5--hd03093a_0' }" + 'https://depot.galaxyproject.org/singularity/chromap:0.2.6--hdcf5f25_0' : + 'biocontainers/chromap:0.2.6--hdcf5f25_0' }" input: tuple val(meta), path(fasta) @@ -19,7 +19,7 @@ process CHROMAP_INDEX { script: def args = task.ext.args ?: '' - def prefix = fasta.baseName + def prefix = task.ext.prefix ?: "${fasta.baseName}" """ chromap \\ -i \\ @@ -33,4 +33,15 @@ process CHROMAP_INDEX { chromap: \$(echo \$(chromap --version 2>&1)) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${fasta.baseName}" + """ + touch ${prefix}.index + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + chromap: \$(echo \$(chromap --version 2>&1)) + END_VERSIONS + """ } diff --git a/modules/nf-core/chromap/index/tests/main.nf.test b/modules/nf-core/chromap/index/tests/main.nf.test index b3661c1aa0c..619e085bbd9 100644 --- a/modules/nf-core/chromap/index/tests/main.nf.test +++ b/modules/nf-core/chromap/index/tests/main.nf.test @@ -9,13 +9,15 @@ nextflow_process { tag "chromap" tag "chromap/index" - test("test_chromap_idx") { + test("sarscov2 - fasta") { when { process { """ - input[0] = [ [ id:'test' ], // meta map - file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] """ } } @@ -23,8 +25,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.versions).match("versions") }, - { assert snapshot(file(process.out.index[0][1]).name).match() } + { assert snapshot(file(process.out.index[0][1]).name, + process.out.versions) + .match() + } + ) + } + } + + test("sarscov2 - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/chromap/index/tests/main.nf.test.snap b/modules/nf-core/chromap/index/tests/main.nf.test.snap index 547caf01c25..02fd2a93c1a 100644 --- a/modules/nf-core/chromap/index/tests/main.nf.test.snap +++ b/modules/nf-core/chromap/index/tests/main.nf.test.snap @@ -1,24 +1,48 @@ { - "versions": { + "sarscov2 - fasta - stub": { "content": [ - [ - "versions.yml:md5,f808af347b4a6bdbaa9a0e7243354a94" - ] + { + "0": [ + [ + { + "id": "test" + }, + "genome.index:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,d558de01f835d2a4e3c09262bf40d2d5" + ], + "index": [ + [ + { + "id": "test" + }, + "genome.index:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d558de01f835d2a4e3c09262bf40d2d5" + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-22T10:47:29.768048005" + "timestamp": "2024-08-05T17:51:53.156411807" }, - "test_chromap_idx": { + "sarscov2 - fasta": { "content": [ - "genome.index" + "genome.index", + [ + "versions.yml:md5,d558de01f835d2a4e3c09262bf40d2d5" + ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.2" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-05-22T10:25:37.494678917" + "timestamp": "2024-08-05T17:51:48.457842431" } } \ No newline at end of file diff --git a/modules/nf-core/chromograph/environment.yml b/modules/nf-core/chromograph/environment.yml index 4fe69462af4..47881b1fb6f 100644 --- a/modules/nf-core/chromograph/environment.yml +++ b/modules/nf-core/chromograph/environment.yml @@ -1,7 +1,5 @@ -name: chromograph channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::chromograph=1.3.1 diff --git a/modules/nf-core/chromograph/tests/main.nf.test b/modules/nf-core/chromograph/tests/main.nf.test index caba882961d..8643afe3a6d 100644 --- a/modules/nf-core/chromograph/tests/main.nf.test +++ b/modules/nf-core/chromograph/tests/main.nf.test @@ -20,7 +20,7 @@ nextflow_process { input[5] = [[:],[]] input[6] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['genome']['updsites_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/updsites.bed', checkIfExists: true) ] """ } diff --git a/modules/nf-core/circexplorer2/annotate/environment.yml b/modules/nf-core/circexplorer2/annotate/environment.yml index def886e9359..c703b088a04 100644 --- a/modules/nf-core/circexplorer2/annotate/environment.yml +++ b/modules/nf-core/circexplorer2/annotate/environment.yml @@ -1,7 +1,5 @@ -name: circexplorer2_annotate channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::circexplorer2=2.3.8 diff --git a/modules/nf-core/circexplorer2/annotate/meta.yml b/modules/nf-core/circexplorer2/annotate/meta.yml index e11df81c2fc..aac031ce3db 100644 --- a/modules/nf-core/circexplorer2/annotate/meta.yml +++ b/modules/nf-core/circexplorer2/annotate/meta.yml @@ -1,6 +1,7 @@ name: "circexplorer2_annotate" description: Annotate circRNAs detected in the output from CIRCexplorer2 parse keywords: + - rna - circrna - annotate tools: @@ -9,7 +10,7 @@ tools: homepage: "https://github.com/YangLab/CIRCexplorer2/" documentation: "https://circexplorer2.readthedocs.io/en/latest/" doi: "10.1101/gr.202895.115" - licence: "['MIT License']" + licence: ["MIT License"] input: - meta: type: map diff --git a/modules/nf-core/circexplorer2/annotate/tests/main.nf.test b/modules/nf-core/circexplorer2/annotate/tests/main.nf.test new file mode 100644 index 00000000000..3ad614a4f27 --- /dev/null +++ b/modules/nf-core/circexplorer2/annotate/tests/main.nf.test @@ -0,0 +1,73 @@ + +nextflow_process { + + name "Test Process CIRCEXPLORER2_ANNOTATE" + script "../main.nf" + process "CIRCEXPLORER2_ANNOTATE" + + tag "modules" + tag "modules_nfcore" + tag "circexplorer2" + tag "circexplorer2/annotate" + + test("test-circexplorer2-annotate") { + + when { + process { + """ + input[0] = [ + [ id:'fust1_3' ], + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/circexplorer2/fust1_3.junction.bed") + ] + input[1] = [ + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/reference/chrI.fa") + ] + input[2] = [ + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/reference/chrI.txt") + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.txt[0][1]).readLines()[3..7], + process.out.versions + ).match() + } + ) + } + } + + test("test-circexplorer2-annotate-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'fust1_3' ], + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/circexplorer2/fust1_3.junction.bed") + ] + input[1] = [ + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/reference/chrI.fa") + ] + input[2] = [ + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/reference/chrI.txt") + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/circexplorer2/annotate/tests/main.nf.test.snap b/modules/nf-core/circexplorer2/annotate/tests/main.nf.test.snap new file mode 100644 index 00000000000..4d06b8a1a95 --- /dev/null +++ b/modules/nf-core/circexplorer2/annotate/tests/main.nf.test.snap @@ -0,0 +1,54 @@ +{ + "test-circexplorer2-annotate": { + "content": [ + [ + "chrI\t1166228\t1167979\tcircular_RNA/3\t0\t-\t1166228\t1166228\t0,0,0\t3\t100,206,325\t0,152,1426\t3\tcircRNA\thaf-6\tNM_001306301\t6,5,4\tchrI:1164729-1166228|chrI:1167979-1169559", + "chrI\t1212576\t1222830\tcircular_RNA/1\t0\t+\t1212576\t1212576\t0,0,0\t4\t200,193,198,151\t0,1213,8473,10103\t1\tcircRNA\therc-1\tNM_058433\t2,3,4,5\tchrI:1211591-1212576|chrI:1222830-1232374", + "chrI\t1221049\t1234675\tcircular_RNA/2\t0\t+\t1221049\t1221049\t0,0,0\t5\t198,151,262,107,181\t0,1630,11325,12729,13445\t2\tcircRNA\therc-1\tNM_058433\t4,5,6,7,8\tchrI:1213982-1221049|chrI:1234675-1236164", + "chrI\t1225178\t1225538\tcircular_RNA/1\t0\t-\t1225178\t1225178\t0,0,0\t1\t360\t0\t1\tcircRNA\tY48G8AL.13\tNM_058435\t2\tchrI:1224781-1225178|chrI:1225538-1226621", + "chrI\t1247364\t1247592\tcircular_RNA/1\t0\t+\t1247364\t1247364\t0,0,0\t1\t228\t0\t1\tcircRNA\therc-1\tNM_058433\t15\tchrI:1245394-1247364|chrI:1247592-1247780" + ], + [ + "versions.yml:md5,a7b0ad80540b92d95b487df458960438" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:44:26.322638" + }, + "test-circexplorer2-annotate-stub": { + "content": [ + { + "0": [ + [ + { + "id": "fust1_3" + }, + "fust1_3.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,a7b0ad80540b92d95b487df458960438" + ], + "txt": [ + [ + { + "id": "fust1_3" + }, + "fust1_3.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,a7b0ad80540b92d95b487df458960438" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:44:35.023305" + } +} \ No newline at end of file diff --git a/modules/nf-core/circexplorer2/parse/environment.yml b/modules/nf-core/circexplorer2/parse/environment.yml index 52e172e7edd..c703b088a04 100644 --- a/modules/nf-core/circexplorer2/parse/environment.yml +++ b/modules/nf-core/circexplorer2/parse/environment.yml @@ -1,7 +1,5 @@ -name: circexplorer2_parse channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::circexplorer2=2.3.8 diff --git a/modules/nf-core/circexplorer2/parse/meta.yml b/modules/nf-core/circexplorer2/parse/meta.yml index ef3ebf85643..83e6e9d35b4 100644 --- a/modules/nf-core/circexplorer2/parse/meta.yml +++ b/modules/nf-core/circexplorer2/parse/meta.yml @@ -10,7 +10,7 @@ tools: homepage: "https://github.com/YangLab/CIRCexplorer2/" documentation: "https://circexplorer2.readthedocs.io/en/latest/" doi: "10.1101/gr.202895.115" - licence: "['MIT License']" + licence: ["MIT License"] input: - meta: type: map diff --git a/modules/nf-core/circexplorer2/parse/tests/main.nf.test b/modules/nf-core/circexplorer2/parse/tests/main.nf.test new file mode 100644 index 00000000000..4768ab5ddbc --- /dev/null +++ b/modules/nf-core/circexplorer2/parse/tests/main.nf.test @@ -0,0 +1,62 @@ + +nextflow_process { + + name "Test Process CIRCEXPLORER2_PARSE" + script "../main.nf" + process "CIRCEXPLORER2_PARSE" + + tag "modules" + tag "modules_nfcore" + tag "circexplorer2" + tag "circexplorer2/parse" + + test("test-circexplorer2-parse") { + + when { + process { + """ + input[0] = [ + [ id:'fust1_3' ], + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/circexplorer2/fust1_3.Chimeric.out.junction") + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert file(process.out.junction[0][1]).text.contains('FUSIONJUNC') }, + { assert snapshot( + file(process.out.junction[0][1]).name, // unstable + process.out.versions + ).match() + } + ) + } + } + + test("test-circexplorer2-parse-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'fust1_3' ], + file("https://raw.githubusercontent.com/nf-core/test-datasets/circrna/circexplorer2/fust1_3.Chimeric.out.junction") + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/circexplorer2/parse/tests/main.nf.test.snap b/modules/nf-core/circexplorer2/parse/tests/main.nf.test.snap new file mode 100644 index 00000000000..f9b6869f771 --- /dev/null +++ b/modules/nf-core/circexplorer2/parse/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "test-circexplorer2-parse-stub": { + "content": [ + { + "0": [ + [ + { + "id": "fust1_3" + }, + "fust1_3.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,6490a204cc08154871418e5fbb3aff17" + ], + "junction": [ + [ + { + "id": "fust1_3" + }, + "fust1_3.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6490a204cc08154871418e5fbb3aff17" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T21:58:38.034614" + }, + "test-circexplorer2-parse": { + "content": [ + "fust1_3.bed", + [ + "versions.yml:md5,6490a204cc08154871418e5fbb3aff17" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T14:53:55.470118" + } +} \ No newline at end of file diff --git a/modules/nf-core/circularmapper/circulargenerator/environment.yml b/modules/nf-core/circularmapper/circulargenerator/environment.yml index f1e1201ef44..39e62b9baac 100644 --- a/modules/nf-core/circularmapper/circulargenerator/environment.yml +++ b/modules/nf-core/circularmapper/circulargenerator/environment.yml @@ -1,9 +1,7 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "circularmapper_circulargenerator" channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::circularmapper=1.93.5 diff --git a/modules/nf-core/circularmapper/circulargenerator/main.nf b/modules/nf-core/circularmapper/circulargenerator/main.nf index b1664d03222..9463ec49715 100644 --- a/modules/nf-core/circularmapper/circulargenerator/main.nf +++ b/modules/nf-core/circularmapper/circulargenerator/main.nf @@ -1,5 +1,5 @@ // This module does the following: -//creating a modified reference genome, with an elongation of the an specified amount of bases +//creating a modified reference genome, with an elongation_factoration of the an specified amount of bases process CIRCULARMAPPER_CIRCULARGENERATOR { tag "$meta.id" @@ -12,11 +12,13 @@ process CIRCULARMAPPER_CIRCULARGENERATOR { input: tuple val(meta), path(reference) - val(elong) + tuple val(meta2), val(elongation_factor) + tuple val(meta3), val(target) output: - tuple val(meta), path("*_${elong}.fasta"), emit: fasta - path "versions.yml" , emit: versions + tuple val(meta), path("*_${elongation_factor}.fasta") , emit: fasta + tuple val(meta), path("*${elongation_factor}_elongated") , emit: elongated + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -24,12 +26,20 @@ process CIRCULARMAPPER_CIRCULARGENERATOR { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def full_extension = reference.getName().replaceFirst(reference.getSimpleName(), "") """ - circulargenerator -e ${elong} \ + circulargenerator \ + -e ${elongation_factor} \ -i ${reference} \ - -s ${prefix} \ + -s ${target} \ $args + ## circulargenerator has a hardcoded output name. Rename if necessary to use prefix. + if [[ "${reference.getSimpleName()}_${elongation_factor}${full_extension}" != "${prefix}_${elongation_factor}.fasta" ]]; then + mv ${reference.getSimpleName()}_${elongation_factor}${full_extension} ${prefix}_${elongation_factor}.fasta + mv ${reference}_${elongation_factor}_elongated ${prefix}.fasta_${elongation_factor}_elongated + fi + cat <<-END_VERSIONS > versions.yml "${task.process}": circulargenerator: \$(circulargenerator -h | grep 'usage' | sed 's/usage: CircularGenerator//') @@ -40,7 +50,8 @@ process CIRCULARMAPPER_CIRCULARGENERATOR { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}_${elong}.fasta + touch ${prefix}_${elongation_factor}.fasta + touch ${prefix}.fasta_${elongation_factor}_elongated cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/circularmapper/circulargenerator/meta.yml b/modules/nf-core/circularmapper/circulargenerator/meta.yml index 3e6a51ada51..baa39e74b90 100644 --- a/modules/nf-core/circularmapper/circulargenerator/meta.yml +++ b/modules/nf-core/circularmapper/circulargenerator/meta.yml @@ -14,42 +14,52 @@ tools: tool_dev_url: "https://github.com/apeltzer/CircularMapper" doi: "no DOI available" licence: ["GPL v3"] - input: - meta: type: map description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - + Groovy Map containing reference information + e.g. `[ id:'sample1' ]` - reference: type: file description: Genome fasta file pattern: "*.fasta" - - - elong: + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'sample1' ]` + - elongation_factor: type: integer description: The number of bases that the ends of the target chromosome in the reference genome should be elongated by - + - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'sample1' ]` + - target: + type: string + description: The name of the chromosome in the reference genome that should be elongated output: - #Only when we have meta - meta: type: map description: | Groovy Map containing sample information e.g. `[ id:'sample1', single_end:false ]` - - versions: type: file description: File containing software versions pattern: "versions.yml" - - fasta: type: file description: Genome fasta file pattern: "*.fasta" - + - elongated: + type: file + description: File listing the chromosomes that were elongated + pattern: "*_elongated" authors: - "@apalleja" + - "@TCLamnidis" maintainers: - "" diff --git a/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test b/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test index fb5740c0094..b95471884b9 100644 --- a/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test +++ b/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test @@ -15,9 +15,10 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - input[1] = 500 + input[1] = [ [ id:'test' ], 500 ] + input[2] = [ [ id:'test' ], "MT192765.1" ] """ } } @@ -40,9 +41,10 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - input[1] = 500 + input[1] = [ [ id:'test' ], 500 ] + input[2] = [ [ id:'test' ], "MT192765.1" ] """ } } diff --git a/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test.snap b/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test.snap index 54bbc138c88..b7a02d31cda 100644 --- a/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test.snap +++ b/modules/nf-core/circularmapper/circulargenerator/tests/main.nf.test.snap @@ -7,18 +7,34 @@ { "id": "test" }, - "genome_500.fasta:md5,6e9fe4042a72f2345f644f239272b7e6" + "test_500.fasta:md5,2e454d6187b10dfe43e67b121e099ab6" ] ], "1": [ + [ + { + "id": "test" + }, + "test.fasta_500_elongated:md5,3a9ea6d336e113a74d7fdca5e7b623fc" + ] + ], + "2": [ "versions.yml:md5,c9b19cf8d643e948e7ae0131937f99e8" ], + "elongated": [ + [ + { + "id": "test" + }, + "test.fasta_500_elongated:md5,3a9ea6d336e113a74d7fdca5e7b623fc" + ] + ], "fasta": [ [ { "id": "test" }, - "genome_500.fasta:md5,6e9fe4042a72f2345f644f239272b7e6" + "test_500.fasta:md5,2e454d6187b10dfe43e67b121e099ab6" ] ], "versions": [ @@ -28,9 +44,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.4" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-20T14:22:33.315636" + "timestamp": "2024-08-06T15:41:03.363753" }, "sarscov2 - genome_fasta - stub": { "content": [ @@ -44,8 +60,24 @@ ] ], "1": [ + [ + { + "id": "test" + }, + "test.fasta_500_elongated:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ "versions.yml:md5,c9b19cf8d643e948e7ae0131937f99e8" ], + "elongated": [ + [ + { + "id": "test" + }, + "test.fasta_500_elongated:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "fasta": [ [ { @@ -61,8 +93,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.04.4" + "nextflow": "23.10.1" }, - "timestamp": "2024-03-20T14:22:45.628047" + "timestamp": "2024-08-06T15:42:26.656757" } } \ No newline at end of file diff --git a/modules/nf-core/circularmapper/realignsamfile/environment.yml b/modules/nf-core/circularmapper/realignsamfile/environment.yml index d9beb5ae1fb..ad2c5988126 100644 --- a/modules/nf-core/circularmapper/realignsamfile/environment.yml +++ b/modules/nf-core/circularmapper/realignsamfile/environment.yml @@ -1,7 +1,5 @@ -name: circularmapper_realignsamfile channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::circularmapper=1.93.5 diff --git a/modules/nf-core/circularmapper/realignsamfile/main.nf b/modules/nf-core/circularmapper/realignsamfile/main.nf index 579815df0ef..6363b8d257a 100644 --- a/modules/nf-core/circularmapper/realignsamfile/main.nf +++ b/modules/nf-core/circularmapper/realignsamfile/main.nf @@ -10,7 +10,10 @@ process CIRCULARMAPPER_REALIGNSAMFILE { input: tuple val(meta), path(bam) tuple val(meta2), path(fasta) - val(elongation_factor) + tuple val(meta3), val(elongation_factor) + tuple val(meta4), path(elongated_chr_list) + // NOTE: The elongated_chr_list is not used in the script, but is an implicit input that realignsamfile requires when using the `-f true` option. + // In its absence, when `-f true` is set, realignsamfile will remove all @SQ tags from the BAM header, breaking the bamfile. output: tuple val(meta), path("*_realigned.bam") , emit: bam diff --git a/modules/nf-core/circularmapper/realignsamfile/meta.yml b/modules/nf-core/circularmapper/realignsamfile/meta.yml index bc417375418..94f74069e56 100644 --- a/modules/nf-core/circularmapper/realignsamfile/meta.yml +++ b/modules/nf-core/circularmapper/realignsamfile/meta.yml @@ -35,9 +35,23 @@ input: - fasta: type: file description: Input elongated genome fasta + - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'test' ]` - elongation_factor: type: integer description: The elongation factor used when running circulargenerator, i.e. the number of bases that the ends of the target chromosome in the reference genome was elongated by + - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'test' ]` + - elongated_chr_list: + type: file + description: File listing the chromosomes that were elongated + pattern: "*_elongated" output: - meta: type: map diff --git a/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test b/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test index a3e0f12ce92..2ec30b73f7a 100644 --- a/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test +++ b/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test @@ -23,9 +23,10 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - input[1] = 500 + input[1] = [ [ id:'test' ], 500 ] + input[2] = [ [ id:'test' ], "MT192765.1" ] """ } } @@ -45,7 +46,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] input [1] = BWA_INDEX.out.index """ @@ -58,7 +59,7 @@ nextflow_process { """ fastq = Channel.of([ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ]) input[0] = fastq.join(BWA_ALN.out.sai) @@ -74,9 +75,10 @@ nextflow_process { input[0] = BWA_SAMSE.out.bam input[1] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - input[2] = 500 + input[2] = [ [ id:'test' ], 500 ] + input[3] = CIRCULARMAPPER_CIRCULARGENERATOR.out.elongated """ } } @@ -99,13 +101,17 @@ nextflow_process { """ input[0] = [ [ id: "test" ], //meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.bam', checkIfExists: true) ] input[1] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ [ id:'test' ], 500 ] + input[3] = [ + [ id:'test' ], // meta map + [] ] - input[2] = 500 """ } } diff --git a/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test.snap b/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test.snap index cd2b6d4093d..43f7de13404 100644 --- a/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test.snap +++ b/modules/nf-core/circularmapper/realignsamfile/tests/main.nf.test.snap @@ -28,9 +28,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nextflow": "23.10.1" }, - "timestamp": "2024-06-07T13:00:43.381103362" + "timestamp": "2024-08-06T15:09:21.887522" }, "sarscov2 - bam - fasta": { "content": [ @@ -41,7 +41,7 @@ "id": "test", "single_end": true }, - "test_realigned.bam:md5,558cdd3e744b672eedeb4c4c124d9a58" + "test_realigned.bam:md5,273c109218afe49c56029e3098c19476" ] ], "1": [ @@ -53,7 +53,7 @@ "id": "test", "single_end": true }, - "test_realigned.bam:md5,558cdd3e744b672eedeb4c4c124d9a58" + "test_realigned.bam:md5,273c109218afe49c56029e3098c19476" ] ], "versions": [ @@ -63,8 +63,8 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nextflow": "23.10.1" }, - "timestamp": "2024-06-07T13:00:32.540016673" + "timestamp": "2024-08-06T15:42:48.538258" } } \ No newline at end of file diff --git a/modules/nf-core/clame/environment.yml b/modules/nf-core/clame/environment.yml index 365b97c44ab..4a4f0722745 100644 --- a/modules/nf-core/clame/environment.yml +++ b/modules/nf-core/clame/environment.yml @@ -1,7 +1,5 @@ -name: clame channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::clame=1.0 diff --git a/modules/nf-core/clame/tests/main.nf.test b/modules/nf-core/clame/tests/main.nf.test index 97b13783c77..a11c74f2dda 100644 --- a/modules/nf-core/clame/tests/main.nf.test +++ b/modules/nf-core/clame/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test1', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/clippy/environment.yml b/modules/nf-core/clippy/environment.yml index 31f239754b5..4fe9b8860ce 100644 --- a/modules/nf-core/clippy/environment.yml +++ b/modules/nf-core/clippy/environment.yml @@ -1,7 +1,5 @@ -name: clippy channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::clippy=1.5.0 diff --git a/modules/nf-core/clippy/meta.yml b/modules/nf-core/clippy/meta.yml index 547bf39bc0e..cdb9f00b843 100644 --- a/modules/nf-core/clippy/meta.yml +++ b/modules/nf-core/clippy/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://github.com/ulelab/clippy" tool_dev_url: "https://github.com/ulelab/clippy" doi: "10.7554/eLife.84034" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/clonalframeml/environment.yml b/modules/nf-core/clonalframeml/environment.yml index 97b5467cd6e..f6e2a73cdf8 100644 --- a/modules/nf-core/clonalframeml/environment.yml +++ b/modules/nf-core/clonalframeml/environment.yml @@ -1,7 +1,5 @@ -name: clonalframeml channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::clonalframeml=1.12 diff --git a/modules/nf-core/clonalframeml/tests/main.nf.test b/modules/nf-core/clonalframeml/tests/main.nf.test new file mode 100644 index 00000000000..15a1154c945 --- /dev/null +++ b/modules/nf-core/clonalframeml/tests/main.nf.test @@ -0,0 +1,35 @@ + +nextflow_process { + + name "Test Process CLONALFRAMEML" + script "../main.nf" + process "CLONALFRAMEML" + + tag "modules" + tag "modules_nfcore" + tag "clonalframeml" + + test("test-clonalframeml") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/haemophilus_influenzae/genome/genome.aln.nwk', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/haemophilus_influenzae/genome/genome.aln.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/clonalframeml/tests/main.nf.test.snap b/modules/nf-core/clonalframeml/tests/main.nf.test.snap new file mode 100644 index 00000000000..f80974a7058 --- /dev/null +++ b/modules/nf-core/clonalframeml/tests/main.nf.test.snap @@ -0,0 +1,105 @@ +{ + "test-clonalframeml": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test" + }, + "test.em.txt:md5,5439d59897a9a90390bb175207bf2b9b" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.importation_status.txt:md5,6ce9dbc7746b1c884af042fa02311fba" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.labelled_tree.newick:md5,aa47754eea8a3b6bab56bd7c83ba78db" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.ML_sequence.fasta:md5,1b75cdaea78f5920ebb92125422a2589" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.position_cross_reference.txt:md5,8ff60768b348fc6f7a1e787aca72f596" + ] + ], + "6": [ + "versions.yml:md5,74b5049856fb92e63f4d77c990e7ca2e" + ], + "em": [ + [ + { + "id": "test" + }, + "test.em.txt:md5,5439d59897a9a90390bb175207bf2b9b" + ] + ], + "emsim": [ + + ], + "fasta": [ + [ + { + "id": "test" + }, + "test.ML_sequence.fasta:md5,1b75cdaea78f5920ebb92125422a2589" + ] + ], + "newick": [ + [ + { + "id": "test" + }, + "test.labelled_tree.newick:md5,aa47754eea8a3b6bab56bd7c83ba78db" + ] + ], + "pos_ref": [ + [ + { + "id": "test" + }, + "test.position_cross_reference.txt:md5,8ff60768b348fc6f7a1e787aca72f596" + ] + ], + "status": [ + [ + { + "id": "test" + }, + "test.importation_status.txt:md5,6ce9dbc7746b1c884af042fa02311fba" + ] + ], + "versions": [ + "versions.yml:md5,74b5049856fb92e63f4d77c990e7ca2e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T10:59:50.38919" + } +} \ No newline at end of file diff --git a/modules/nf-core/clustalo/align/environment.yml b/modules/nf-core/clustalo/align/environment.yml index be1eef95ebf..80bc6a5ad2f 100644 --- a/modules/nf-core/clustalo/align/environment.yml +++ b/modules/nf-core/clustalo/align/environment.yml @@ -1,8 +1,6 @@ -name: clustalo_align channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::clustalo=1.2.4 - conda-forge::pigz=2.8 diff --git a/modules/nf-core/clustalo/align/tests/main.nf.test b/modules/nf-core/clustalo/align/tests/main.nf.test index 3edd36a21c0..6e20610e1ae 100644 --- a/modules/nf-core/clustalo/align/tests/main.nf.test +++ b/modules/nf-core/clustalo/align/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] input[1] = [[:],[]] input[2] = false @@ -41,7 +41,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] input[1] = [[:],[]] input[2] = true @@ -68,7 +68,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] """ } @@ -79,7 +79,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] input[1] = CLUSTALO_GUIDETREE.out.tree.collect{ meta, tree -> tree }.map{ tree -> [[ id: 'test_summary'], tree]} input[2] = true diff --git a/modules/nf-core/clustalo/guidetree/environment.yml b/modules/nf-core/clustalo/guidetree/environment.yml index 38b2f5b92fc..ef4d67285cd 100644 --- a/modules/nf-core/clustalo/guidetree/environment.yml +++ b/modules/nf-core/clustalo/guidetree/environment.yml @@ -1,7 +1,5 @@ -name: clustalo_guidetree channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::clustalo=1.2.4 diff --git a/modules/nf-core/clustalo/guidetree/tests/main.nf.test b/modules/nf-core/clustalo/guidetree/tests/main.nf.test index d670ae0395d..67bdeb7ed2f 100644 --- a/modules/nf-core/clustalo/guidetree/tests/main.nf.test +++ b/modules/nf-core/clustalo/guidetree/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/cmseq/polymut/environment.yml b/modules/nf-core/cmseq/polymut/environment.yml index 01309aa4ca9..d4417bb1904 100644 --- a/modules/nf-core/cmseq/polymut/environment.yml +++ b/modules/nf-core/cmseq/polymut/environment.yml @@ -1,7 +1,5 @@ -name: cmseq_polymut channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cmseq=1.0.4 diff --git a/modules/nf-core/cmseq/polymut/main.nf b/modules/nf-core/cmseq/polymut/main.nf index 5f2a72dc2c3..a1a69272d29 100644 --- a/modules/nf-core/cmseq/polymut/main.nf +++ b/modules/nf-core/cmseq/polymut/main.nf @@ -37,4 +37,16 @@ process CMSEQ_POLYMUT { cmseq: $VERSION END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '1.0.4' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cmseq: $VERSION + END_VERSIONS + """ } diff --git a/modules/nf-core/cmseq/polymut/tests/main.nf.test b/modules/nf-core/cmseq/polymut/tests/main.nf.test new file mode 100644 index 00000000000..ab34f70b376 --- /dev/null +++ b/modules/nf-core/cmseq/polymut/tests/main.nf.test @@ -0,0 +1,114 @@ + +nextflow_process { + + name "Test Process CMSEQ_POLYMUT" + script "../main.nf" + process "CMSEQ_POLYMUT" + + tag "modules" + tag "modules_nfcore" + tag "cmseq" + tag "cmseq/polymut" + + test("test-cmseq-polymut-1") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + [], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true), + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cmseq-polymut-2") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true), + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cmseq-polymut-3") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cmseq-polymut-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cmseq/polymut/tests/main.nf.test.snap b/modules/nf-core/cmseq/polymut/tests/main.nf.test.snap new file mode 100644 index 00000000000..855953f7ac6 --- /dev/null +++ b/modules/nf-core/cmseq/polymut/tests/main.nf.test.snap @@ -0,0 +1,142 @@ +{ + "test-cmseq-polymut-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ], + "polymut": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T10:57:13.805052" + }, + "test-cmseq-polymut-3": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,fd325c1724ee23d132a9115c64494efc" + ] + ], + "1": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ], + "polymut": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,fd325c1724ee23d132a9115c64494efc" + ] + ], + "versions": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T10:58:40.740644" + }, + "test-cmseq-polymut-2": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,fd325c1724ee23d132a9115c64494efc" + ] + ], + "1": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ], + "polymut": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,fd325c1724ee23d132a9115c64494efc" + ] + ], + "versions": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T10:58:35.352592" + }, + "test-cmseq-polymut-1": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,fd325c1724ee23d132a9115c64494efc" + ] + ], + "1": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ], + "polymut": [ + [ + { + "id": "test", + "single_end": false + }, + "test.txt:md5,fd325c1724ee23d132a9115c64494efc" + ] + ], + "versions": [ + "versions.yml:md5,d79fc5c3cbd8f5e5d15adda25c681092" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T10:58:29.996122" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvkit/access/environment.yml b/modules/nf-core/cnvkit/access/environment.yml index 8c435f16992..152af54d19d 100644 --- a/modules/nf-core/cnvkit/access/environment.yml +++ b/modules/nf-core/cnvkit/access/environment.yml @@ -1,7 +1,5 @@ -name: cnvkit_access channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.10 diff --git a/modules/nf-core/cnvkit/access/tests/main.nf.test b/modules/nf-core/cnvkit/access/tests/main.nf.test new file mode 100644 index 00000000000..63bf79f1dee --- /dev/null +++ b/modules/nf-core/cnvkit/access/tests/main.nf.test @@ -0,0 +1,94 @@ + +nextflow_process { + + name "Test Process CNVKIT_ACCESS" + script "../main.nf" + process "CNVKIT_ACCESS" + + tag "modules" + tag "modules_nfcore" + tag "cnvkit" + tag "cnvkit/access" + + test("test-cnvkit-access") { + + when { + process { + """ + input[0] = [ + [ id: "test" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[1] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvkit-access-no-exclude") { + + when { + process { + """ + input[0] = [ + [ id: "test" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[1] = [ + [ id:'test' ], // meta map + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvkit-access-multiple-exclude") { + + when { + process { + """ + input[0] = [ + [ id: "test" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true) + ] + input[1] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.antitarget.bed', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cnvkit/access/tests/main.nf.test.snap b/modules/nf-core/cnvkit/access/tests/main.nf.test.snap new file mode 100644 index 00000000000..b370cd6ad99 --- /dev/null +++ b/modules/nf-core/cnvkit/access/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "test-cnvkit-access-no-exclude": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,9c6cc178da8c2c27364be9f25c9df96d" + ] + ], + "1": [ + "versions.yml:md5,79d243f72a736decdb312f1ffc27bcf2" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,9c6cc178da8c2c27364be9f25c9df96d" + ] + ], + "versions": [ + "versions.yml:md5,79d243f72a736decdb312f1ffc27bcf2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:10:28.909451" + }, + "test-cnvkit-access-multiple-exclude": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,cf323598a6eb8ec5d91c92dc442ada69" + ] + ], + "1": [ + "versions.yml:md5,79d243f72a736decdb312f1ffc27bcf2" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,cf323598a6eb8ec5d91c92dc442ada69" + ] + ], + "versions": [ + "versions.yml:md5,79d243f72a736decdb312f1ffc27bcf2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:10:45.907542" + }, + "test-cnvkit-access": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,d6af7ce3841d2d6201bfe7ef9e35a2a5" + ] + ], + "1": [ + "versions.yml:md5,79d243f72a736decdb312f1ffc27bcf2" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,d6af7ce3841d2d6201bfe7ef9e35a2a5" + ] + ], + "versions": [ + "versions.yml:md5,79d243f72a736decdb312f1ffc27bcf2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:10:09.380154" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvkit/antitarget/environment.yml b/modules/nf-core/cnvkit/antitarget/environment.yml index a33a12e23c3..b683406cc53 100644 --- a/modules/nf-core/cnvkit/antitarget/environment.yml +++ b/modules/nf-core/cnvkit/antitarget/environment.yml @@ -1,7 +1,5 @@ -name: cnvkit_antitarget channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.11 diff --git a/modules/nf-core/cnvkit/batch/environment.yml b/modules/nf-core/cnvkit/batch/environment.yml index 10c5d6b7538..5d793601194 100644 --- a/modules/nf-core/cnvkit/batch/environment.yml +++ b/modules/nf-core/cnvkit/batch/environment.yml @@ -1,11 +1,8 @@ -name: cnvkit_batch - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.10 - - bioconda::htslib=1.19.1 - - bioconda::samtools=1.19.2 + - bioconda::htslib=1.17 # Matched with the container + - bioconda::samtools=1.17 # Matched with the container diff --git a/modules/nf-core/cnvkit/batch/tests/main.nf.test b/modules/nf-core/cnvkit/batch/tests/main.nf.test index b2c0a9b7201..f191a4b952c 100644 --- a/modules/nf-core/cnvkit/batch/tests/main.nf.test +++ b/modules/nf-core/cnvkit/batch/tests/main.nf.test @@ -18,12 +18,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_single_end_sorted_bam'], checkIfExists: true) - ] - input[1] = [[:],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[2] = [[:],[]] - input[3] = [[:],file(params.test_data['sarscov2']['genome']['baits_bed'], checkIfExists: true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/baits.bed', checkIfExists: true)] input[4] = [[:],[]] input[5] = false """ @@ -34,7 +34,7 @@ nextflow_process { println process.out.bed[0][1] assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -49,10 +49,10 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] input[2] = [[:],[]] input[3] = [[:],[]] input[4] = [[:],[]] @@ -64,7 +64,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -79,11 +79,11 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true) - ] - input[1] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - input[2] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true)] + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test2.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true) + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)] input[3] = [[:],[]] input[4] = [[:],[]] input[5] = false @@ -94,7 +94,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -109,13 +109,13 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_recalibrated_sorted_bam'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.recalibrated.sorted.bam', checkIfExists: true), [] - ] + ] input[1] = [[:],[]] input[2] = [[:],[]] input[3] = [[:],[]] - input[4] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_21_reference_cnn'], checkIfExists: true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/reference_chr21.cnn', checkIfExists: true)] input[5] = false """ } @@ -124,7 +124,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -139,13 +139,13 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_recalibrated_sorted_cram'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test2.paired_end.recalibrated.sorted.cram', checkIfExists: true), [] - ] - input[1] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] input[2] = [[:],[]] input[3] = [[:],[]] - input[4] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_21_reference_cnn'], checkIfExists: true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/reference_chr21.cnn', checkIfExists: true)] input[5] = false """ } @@ -154,7 +154,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -168,11 +168,11 @@ nextflow_process { input[0] = [ [ id:'test'], // meta map [], - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_recalibrated_sorted_cram'], checkIfExists: true) - ] - input[1] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_21_fasta'], checkIfExists: true)] - input[2] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_21_fasta_fai'], checkIfExists: true)] - input[3] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_21_multi_interval_bed'], checkIfExists: true)] + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test2.paired_end.recalibrated.sorted.cram', checkIfExists: true) + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/multi_intervals.bed', checkIfExists: true)] input[4] = [[:],[]] input[5] = false """ @@ -182,7 +182,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -195,13 +195,13 @@ nextflow_process { process { """ input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_single_end_sorted_bam'], checkIfExists: true) - ] - input[1] = [[:],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[2] = [[:],[]] - input[3] = [[:],file(params.test_data['sarscov2']['genome']['baits_bed'], checkIfExists: true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/baits.bed', checkIfExists: true)] input[4] = [[:],[]] input[5] = false """ @@ -211,7 +211,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -228,11 +228,12 @@ nextflow_process { input[0] = [ [ id:'test'], // meta map [], - [file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_sorted_bam'], checkIfExists: true) + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) ] - ] - input[1] = [[:],file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] input[2] = [[:],[]] input[3] = [[:],[]] input[4] = [[:],[]] @@ -244,7 +245,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match() } + { assert snapshot(process.out.versions).match() } ) } @@ -260,12 +261,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_single_end_sorted_bam'], checkIfExists: true) - ] - input[1] = [[:],file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true)] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true) + ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)] input[2] = [[:],[]] - input[3] = [[:],file(params.test_data['sarscov2']['genome']['baits_bed'], checkIfExists: true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/baits.bed', checkIfExists: true)] input[4] = [[:],[]] input[5] = false """ @@ -275,7 +276,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.bed).match() } + { assert snapshot( + process.out.bed, + process.out.versions + ).match() + } ) } diff --git a/modules/nf-core/cnvkit/batch/tests/main.nf.test.snap b/modules/nf-core/cnvkit/batch/tests/main.nf.test.snap index 5d7cb143e97..205d43f8d02 100644 --- a/modules/nf-core/cnvkit/batch/tests/main.nf.test.snap +++ b/modules/nf-core/cnvkit/batch/tests/main.nf.test.snap @@ -1,19 +1,27 @@ { "cnvkit batch tumouronly mode - bam": { - "content": null, + "content": [ + [ + "versions.yml:md5,5737e02065ca6359586a4078708c73e6" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:30:55.150317561" + "timestamp": "2024-08-07T10:07:07.53837" }, "cnvkit batch tumouronly mode - cram": { - "content": null, + "content": [ + [ + "versions.yml:md5,0310a792526148b05f434944a1167835" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:31:31.039652656" + "timestamp": "2024-08-07T10:07:48.900117" }, "cnvkit batch - bam - stub": { "content": [ @@ -27,60 +35,87 @@ "baits.target.bed:md5,26d25ff2d6c45b6d92169b3559c6acdb" ] ] + ], + [ + "versions.yml:md5,5737e02065ca6359586a4078708c73e6" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:33:25.790391941" + "timestamp": "2024-08-07T10:09:40.098703" }, "cnvkit batch wgs - bam": { - "content": null, + "content": [ + [ + "versions.yml:md5,5737e02065ca6359586a4078708c73e6" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:30:10.677690173" + "timestamp": "2024-08-07T10:06:25.023798" }, "cnvkit batch germline hybrid mode - bam": { - "content": null, + "content": [ + [ + "versions.yml:md5,5737e02065ca6359586a4078708c73e6" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:32:50.217076532" + "timestamp": "2024-08-07T10:09:19.191221" }, "cnvkit batch hybrid mode - bam": { - "content": null, + "content": [ + [ + "versions.yml:md5,5737e02065ca6359586a4078708c73e6" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T13:54:41.69602289" + "timestamp": "2024-08-07T10:06:10.438545" }, "cnvkit batch wgs - cram": { - "content": null, + "content": [ + [ + "versions.yml:md5,0310a792526148b05f434944a1167835" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:30:27.271060826" + "timestamp": "2024-08-07T10:06:39.492881" }, "cnvkit batch pon mode - bam": { - "content": null, + "content": [ + [ + "versions.yml:md5,5737e02065ca6359586a4078708c73e6" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:33:06.391306794" + "timestamp": "2024-08-07T10:09:29.636924" }, "cnvkit batch germline mode - cram": { - "content": null, + "content": [ + [ + "versions.yml:md5,0310a792526148b05f434944a1167835" + ] + ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.3" }, - "timestamp": "2024-03-20T14:32:23.38326412" + "timestamp": "2024-08-07T10:09:07.307311" } } \ No newline at end of file diff --git a/modules/nf-core/cnvkit/call/environment.yml b/modules/nf-core/cnvkit/call/environment.yml index 3b96de7008f..152af54d19d 100644 --- a/modules/nf-core/cnvkit/call/environment.yml +++ b/modules/nf-core/cnvkit/call/environment.yml @@ -1,7 +1,5 @@ -name: cnvkit_call channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.10 diff --git a/modules/nf-core/cnvkit/call/main.nf b/modules/nf-core/cnvkit/call/main.nf index fade6df0fd1..06d51e857ec 100644 --- a/modules/nf-core/cnvkit/call/main.nf +++ b/modules/nf-core/cnvkit/call/main.nf @@ -33,4 +33,15 @@ process CNVKIT_CALL { cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.cns + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cnvkit: \$(cnvkit.py version | sed -e 's/cnvkit v//g') + END_VERSIONS + """ } diff --git a/modules/nf-core/cnvkit/call/tests/main.nf.test b/modules/nf-core/cnvkit/call/tests/main.nf.test new file mode 100644 index 00000000000..6012ef137f7 --- /dev/null +++ b/modules/nf-core/cnvkit/call/tests/main.nf.test @@ -0,0 +1,83 @@ + +nextflow_process { + + name "Test Process CNVKIT_CALL" + script "../main.nf" + process "CNVKIT_CALL" + + tag "modules" + tag "modules_nfcore" + tag "cnvkit" + tag "cnvkit/call" + + test("test-cnvkit-call") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file('https://raw.githubusercontent.com/etal/cnvkit/v0.9.9/test/formats/amplicon.cns', checkIfExists: true), + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvkit-call-with-vcf") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file('https://raw.githubusercontent.com/etal/cnvkit/v0.9.9/test/formats/amplicon.cns', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvkit-call-with-vcf-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file('https://raw.githubusercontent.com/etal/cnvkit/v0.9.9/test/formats/amplicon.cns', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gvcf/test.genome.vcf.gz', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cnvkit/call/tests/main.nf.test.snap b/modules/nf-core/cnvkit/call/tests/main.nf.test.snap new file mode 100644 index 00000000000..844a415ecf6 --- /dev/null +++ b/modules/nf-core/cnvkit/call/tests/main.nf.test.snap @@ -0,0 +1,107 @@ +{ + "test-cnvkit-call": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cns:md5,7746029caf9ecc134a075a2d50be269f" + ] + ], + "1": [ + "versions.yml:md5,f47253e21b991f72a741d6b5c9a351a5" + ], + "cns": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cns:md5,7746029caf9ecc134a075a2d50be269f" + ] + ], + "versions": [ + "versions.yml:md5,f47253e21b991f72a741d6b5c9a351a5" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T22:24:41.048386" + }, + "test-cnvkit-call-with-vcf": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cns:md5,2a4b3da8a8131a4ed4ae902a9f96a405" + ] + ], + "1": [ + "versions.yml:md5,f47253e21b991f72a741d6b5c9a351a5" + ], + "cns": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cns:md5,2a4b3da8a8131a4ed4ae902a9f96a405" + ] + ], + "versions": [ + "versions.yml:md5,f47253e21b991f72a741d6b5c9a351a5" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T22:24:50.134984" + }, + "test-cnvkit-call-with-vcf-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cns:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,f47253e21b991f72a741d6b5c9a351a5" + ], + "cns": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cns:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,f47253e21b991f72a741d6b5c9a351a5" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T22:24:56.743954" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvkit/export/environment.yml b/modules/nf-core/cnvkit/export/environment.yml index a61b2765f62..152af54d19d 100644 --- a/modules/nf-core/cnvkit/export/environment.yml +++ b/modules/nf-core/cnvkit/export/environment.yml @@ -1,7 +1,5 @@ -name: cnvkit_export channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.10 diff --git a/modules/nf-core/cnvkit/genemetrics/environment.yml b/modules/nf-core/cnvkit/genemetrics/environment.yml index 14deb0ef739..152af54d19d 100644 --- a/modules/nf-core/cnvkit/genemetrics/environment.yml +++ b/modules/nf-core/cnvkit/genemetrics/environment.yml @@ -1,7 +1,5 @@ -name: cnvkit_genemetrics channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.10 diff --git a/modules/nf-core/cnvkit/genemetrics/main.nf b/modules/nf-core/cnvkit/genemetrics/main.nf old mode 100755 new mode 100644 diff --git a/modules/nf-core/cnvkit/genemetrics/meta.yml b/modules/nf-core/cnvkit/genemetrics/meta.yml old mode 100755 new mode 100644 diff --git a/modules/nf-core/cnvkit/genemetrics/tests/main.nf.test b/modules/nf-core/cnvkit/genemetrics/tests/main.nf.test new file mode 100644 index 00000000000..a2d8b4580cf --- /dev/null +++ b/modules/nf-core/cnvkit/genemetrics/tests/main.nf.test @@ -0,0 +1,59 @@ + +nextflow_process { + + name "Test Process CNVKIT_GENEMETRICS" + script "../main.nf" + process "CNVKIT_GENEMETRICS" + + tag "modules" + tag "modules_nfcore" + tag "cnvkit" + tag "cnvkit/genemetrics" + + test("test-cnvkit-genemetrics-with-cns") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file('https://raw.githubusercontent.com/etal/cnvkit/v0.9.9/test/formats/amplicon.cnr', checkIfExists: true), + file('https://raw.githubusercontent.com/etal/cnvkit/v0.9.9/test/formats/amplicon.cns', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvkit-genemetrics-without-cns") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file('https://raw.githubusercontent.com/etal/cnvkit/v0.9.9/test/formats/amplicon.cnr', checkIfExists: true), + [] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cnvkit/genemetrics/tests/main.nf.test.snap b/modules/nf-core/cnvkit/genemetrics/tests/main.nf.test.snap new file mode 100644 index 00000000000..53ed81f3707 --- /dev/null +++ b/modules/nf-core/cnvkit/genemetrics/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-cnvkit-genemetrics-without-cns": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,622e154a107301da6f456b4b3196b79d" + ] + ], + "1": [ + "versions.yml:md5,d3f23da560774564afa9c69e2d171e5f" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,622e154a107301da6f456b4b3196b79d" + ] + ], + "versions": [ + "versions.yml:md5,d3f23da560774564afa9c69e2d171e5f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:17:13.604558" + }, + "test-cnvkit-genemetrics-with-cns": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,2a18eca552ea33faab1d39795d9e051c" + ] + ], + "1": [ + "versions.yml:md5,d3f23da560774564afa9c69e2d171e5f" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,2a18eca552ea33faab1d39795d9e051c" + ] + ], + "versions": [ + "versions.yml:md5,d3f23da560774564afa9c69e2d171e5f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:17:04.195978" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvkit/reference/environment.yml b/modules/nf-core/cnvkit/reference/environment.yml index e3070044d07..b683406cc53 100644 --- a/modules/nf-core/cnvkit/reference/environment.yml +++ b/modules/nf-core/cnvkit/reference/environment.yml @@ -1,7 +1,5 @@ -name: cnvkit_reference channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.11 diff --git a/modules/nf-core/cnvkit/target/environment.yml b/modules/nf-core/cnvkit/target/environment.yml index ca4159b5ac7..152af54d19d 100644 --- a/modules/nf-core/cnvkit/target/environment.yml +++ b/modules/nf-core/cnvkit/target/environment.yml @@ -1,7 +1,5 @@ -name: cnvkit_target channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvkit=0.9.10 diff --git a/modules/nf-core/cnvkit/target/main.nf b/modules/nf-core/cnvkit/target/main.nf index 30326600b34..7edb2641a1e 100644 --- a/modules/nf-core/cnvkit/target/main.nf +++ b/modules/nf-core/cnvkit/target/main.nf @@ -35,4 +35,15 @@ process CNVKIT_TARGET { cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bed + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cnvkit: \$(cnvkit.py version | sed -e "s/cnvkit v//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/cnvkit/target/tests/main.nf.test b/modules/nf-core/cnvkit/target/tests/main.nf.test new file mode 100644 index 00000000000..fb2161a2db9 --- /dev/null +++ b/modules/nf-core/cnvkit/target/tests/main.nf.test @@ -0,0 +1,89 @@ + +nextflow_process { + + name "Test Process CNVKIT_TARGET" + script "../main.nf" + process "CNVKIT_TARGET" + + tag "modules" + tag "modules_nfcore" + tag "cnvkit" + tag "cnvkit/target" + + test("test-cnvkit-target") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = [ [:], [] ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvkit-target-with-gff3") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = [ + [ id: "annotations" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gff3', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvkit-target-with-gff3-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = [ + [ id: "annotations" ], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gff3', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cnvkit/target/tests/main.nf.test.snap b/modules/nf-core/cnvkit/target/tests/main.nf.test.snap new file mode 100644 index 00000000000..f91674e05fe --- /dev/null +++ b/modules/nf-core/cnvkit/target/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "test-cnvkit-target": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,c206fd9dc2a001ff3ca3e88e5a8e9d1b" + ] + ], + "1": [ + "versions.yml:md5,39b464327e665e120ff83f714f3e290a" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,c206fd9dc2a001ff3ca3e88e5a8e9d1b" + ] + ], + "versions": [ + "versions.yml:md5,39b464327e665e120ff83f714f3e290a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:02:14.374382" + }, + "test-cnvkit-target-with-gff3": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,c206fd9dc2a001ff3ca3e88e5a8e9d1b" + ] + ], + "1": [ + "versions.yml:md5,39b464327e665e120ff83f714f3e290a" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,c206fd9dc2a001ff3ca3e88e5a8e9d1b" + ] + ], + "versions": [ + "versions.yml:md5,39b464327e665e120ff83f714f3e290a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:02:24.865772" + }, + "test-cnvkit-target-with-gff3-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,39b464327e665e120ff83f714f3e290a" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,39b464327e665e120ff83f714f3e290a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:02:31.731449" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvnator/cnvnator/environment.yml b/modules/nf-core/cnvnator/cnvnator/environment.yml index 8b7ecaef9c3..9cd8ebf353e 100644 --- a/modules/nf-core/cnvnator/cnvnator/environment.yml +++ b/modules/nf-core/cnvnator/cnvnator/environment.yml @@ -1,7 +1,5 @@ -name: cnvnator_cnvnator channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvnator=0.4.1 diff --git a/modules/nf-core/cnvnator/cnvnator/meta.yml b/modules/nf-core/cnvnator/cnvnator/meta.yml index 2afbacdea1d..627b76b993d 100644 --- a/modules/nf-core/cnvnator/cnvnator/meta.yml +++ b/modules/nf-core/cnvnator/cnvnator/meta.yml @@ -10,7 +10,7 @@ tools: homepage: "https://github.com/abyzovlab/CNVnator" documentation: "https://github.com/abyzovlab/CNVnator/blob/master/README.md" tool_dev_url: "https://github.com/abyzovlab/CNVnator" - licence: "['MIT']" + licence: ["MIT"] input: - meta: type: map diff --git a/modules/nf-core/cnvnator/convert2vcf/environment.yml b/modules/nf-core/cnvnator/convert2vcf/environment.yml index d324fb04541..9cd8ebf353e 100644 --- a/modules/nf-core/cnvnator/convert2vcf/environment.yml +++ b/modules/nf-core/cnvnator/convert2vcf/environment.yml @@ -1,7 +1,5 @@ -name: cnvnator_convert2vcf channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvnator=0.4.1 diff --git a/modules/nf-core/cnvnator/convert2vcf/meta.yml b/modules/nf-core/cnvnator/convert2vcf/meta.yml index 8e8c80064c8..b7d269e0480 100644 --- a/modules/nf-core/cnvnator/convert2vcf/meta.yml +++ b/modules/nf-core/cnvnator/convert2vcf/meta.yml @@ -10,7 +10,7 @@ tools: homepage: "https://github.com/abyzovlab/CNVnator" documentation: "https://github.com/abyzovlab/CNVnator/blob/master/README.md" tool_dev_url: "https://github.com/abyzovlab/CNVnator" - licence: "['MIT']" + licence: ["MIT"] input: - meta: type: map diff --git a/modules/nf-core/cnvpytor/callcnvs/environment.yml b/modules/nf-core/cnvpytor/callcnvs/environment.yml index 24a5455cc55..e66cc1fc8e3 100644 --- a/modules/nf-core/cnvpytor/callcnvs/environment.yml +++ b/modules/nf-core/cnvpytor/callcnvs/environment.yml @@ -1,7 +1,5 @@ -name: cnvpytor_callcnvs channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvpytor=1.2.1 diff --git a/modules/nf-core/cnvpytor/callcnvs/main.nf b/modules/nf-core/cnvpytor/callcnvs/main.nf index d4e160b8aa2..164138d7d69 100644 --- a/modules/nf-core/cnvpytor/callcnvs/main.nf +++ b/modules/nf-core/cnvpytor/callcnvs/main.nf @@ -19,15 +19,15 @@ process CNVPYTOR_CALLCNVS { task.ext.when == null || task.ext.when script: - def bins = bin_sizes ?: '1000' + def bins = bin_sizes ? "-call $bin_sizes" : '-call 1000' """ cnvpytor \\ -root $pytor \\ - -call $bin_sizes + $bin_sizes cat <<-END_VERSIONS > versions.yml "${task.process}": - cnvpytor: \$(echo \$(cnvpytor --version 2>&1) | sed 's/CNVpytor //' ) + cnvpytor: \$(cnvpytor --version | sed -n 's/.*CNVpytor \\(.*\\)/\\1/p') END_VERSIONS """ @@ -37,7 +37,7 @@ process CNVPYTOR_CALLCNVS { cat <<-END_VERSIONS > versions.yml "${task.process}": - cnvpytor: \$(echo \$(cnvpytor --version 2>&1) | sed 's/CNVpytor //' ) + cnvpytor: \$(cnvpytor --version | sed -n 's/.*CNVpytor \\(.*\\)/\\1/p') END_VERSIONS """ } diff --git a/modules/nf-core/cnvpytor/callcnvs/meta.yml b/modules/nf-core/cnvpytor/callcnvs/meta.yml index 211cb6079cb..25e22941c7e 100644 --- a/modules/nf-core/cnvpytor/callcnvs/meta.yml +++ b/modules/nf-core/cnvpytor/callcnvs/meta.yml @@ -1,7 +1,9 @@ name: cnvpytor_callcnvs -description: command line tool for calling CNVs in whole genome sequencing data +description: Command line tool for calling CNVs in whole genome sequencing data keywords: - - CNV calling + - CNV + - call + - wgs tools: - cnvpytor: description: calling CNVs using read depth diff --git a/modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test b/modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test new file mode 100644 index 00000000000..f6dd8da5195 --- /dev/null +++ b/modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test @@ -0,0 +1,59 @@ + +nextflow_process { + + name "Test Process CNVPYTOR_CALLCNVS" + script "../main.nf" + process "CNVPYTOR_CALLCNVS" + + tag "modules" + tag "modules_nfcore" + tag "cnvpytor" + tag "cnvpytor/callcnvs" + + test("test-cnvpytor-callcnvs") { + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/pytor/test.pytor', checkIfExists: true) + ] + input[1] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvpytor-callcnvs-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/pytor/test.pytor', checkIfExists: true) + ] + input[1] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test.snap b/modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test.snap new file mode 100644 index 00000000000..812f09eb1b2 --- /dev/null +++ b/modules/nf-core/cnvpytor/callcnvs/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "test-cnvpytor-callcnvs": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pytor:md5,aa03a8fa15b39f77816705a48e10312a" + ] + ], + "1": [ + "versions.yml:md5,8a460e9b1f58c95e8044fa2e9b6d7675" + ], + "pytor": [ + [ + { + "id": "test" + }, + "test.pytor:md5,aa03a8fa15b39f77816705a48e10312a" + ] + ], + "versions": [ + "versions.yml:md5,8a460e9b1f58c95e8044fa2e9b6d7675" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:31:01.533078" + }, + "test-cnvpytor-callcnvs-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pytor:md5,aa03a8fa15b39f77816705a48e10312a" + ] + ], + "1": [ + "versions.yml:md5,8a460e9b1f58c95e8044fa2e9b6d7675" + ], + "pytor": [ + [ + { + "id": "test" + }, + "test.pytor:md5,aa03a8fa15b39f77816705a48e10312a" + ] + ], + "versions": [ + "versions.yml:md5,8a460e9b1f58c95e8044fa2e9b6d7675" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:31:07.340376" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvpytor/histogram/environment.yml b/modules/nf-core/cnvpytor/histogram/environment.yml index 21032cdfcf9..e66cc1fc8e3 100644 --- a/modules/nf-core/cnvpytor/histogram/environment.yml +++ b/modules/nf-core/cnvpytor/histogram/environment.yml @@ -1,7 +1,5 @@ -name: cnvpytor_histogram channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvpytor=1.2.1 diff --git a/modules/nf-core/cnvpytor/histogram/meta.yml b/modules/nf-core/cnvpytor/histogram/meta.yml index 69f0c49396d..e8fcedd47f6 100644 --- a/modules/nf-core/cnvpytor/histogram/meta.yml +++ b/modules/nf-core/cnvpytor/histogram/meta.yml @@ -3,6 +3,7 @@ description: calculates read depth histograms keywords: - cnv calling - histogram + - read depth tools: - cnvpytor: description: calling CNVs using read depth diff --git a/modules/nf-core/cnvpytor/importreaddepth/environment.yml b/modules/nf-core/cnvpytor/importreaddepth/environment.yml index e42dfdef33d..cff5d1cd6f0 100644 --- a/modules/nf-core/cnvpytor/importreaddepth/environment.yml +++ b/modules/nf-core/cnvpytor/importreaddepth/environment.yml @@ -1,7 +1,6 @@ -name: cnvpytor_importreaddepth channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::cnvpytor=1.2.1 + - bioconda::cnvpytor=1.3.1 + - conda-forge::numpy=1.24.3 # Locked from container diff --git a/modules/nf-core/cnvpytor/importreaddepth/main.nf b/modules/nf-core/cnvpytor/importreaddepth/main.nf index bfc9044463a..1238a48f19f 100644 --- a/modules/nf-core/cnvpytor/importreaddepth/main.nf +++ b/modules/nf-core/cnvpytor/importreaddepth/main.nf @@ -4,8 +4,8 @@ process CNVPYTOR_IMPORTREADDEPTH { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cnvpytor:1.2.1--pyhdfd78af_0': - 'biocontainers/cnvpytor:1.2.1--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/cnvpytor:1.3.1--pyhdfd78af_1': + 'biocontainers/cnvpytor:1.3.1--pyhdfd78af_1' }" input: tuple val(meta), path(input_file), path(index) @@ -32,7 +32,7 @@ process CNVPYTOR_IMPORTREADDEPTH { cat <<-END_VERSIONS > versions.yml "${task.process}": - cnvpytor: \$(echo \$(cnvpytor --version 2>&1) | sed 's/CNVpytor //' ) + cnvpytor: \$(cnvpytor --version | sed -n 's/.*CNVpytor \\(.*\\)/\\1/p') END_VERSIONS """ @@ -43,7 +43,7 @@ process CNVPYTOR_IMPORTREADDEPTH { cat <<-END_VERSIONS > versions.yml "${task.process}": - cnvpytor: \$(echo \$(cnvpytor --version 2>&1) | sed 's/CNVpytor //' ) + cnvpytor: \$(cnvpytor --version | sed -n 's/.*CNVpytor \\(.*\\)/\\1/p') END_VERSIONS """ } diff --git a/modules/nf-core/cnvpytor/importreaddepth/meta.yml b/modules/nf-core/cnvpytor/importreaddepth/meta.yml index 009fad37013..660a7bdd77a 100644 --- a/modules/nf-core/cnvpytor/importreaddepth/meta.yml +++ b/modules/nf-core/cnvpytor/importreaddepth/meta.yml @@ -2,7 +2,9 @@ name: cnvpytor_importreaddepth description: command line tool for CNV/CNA analysis. This step imports the read depth data into a root pytor file. keywords: - read depth - - cnv calling + - cnv + - cna + - call tools: - cnvpytor -rd: description: calling CNVs using read depth diff --git a/modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test b/modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test new file mode 100644 index 00000000000..316afecb149 --- /dev/null +++ b/modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test @@ -0,0 +1,97 @@ + +nextflow_process { + + name "Test Process CNVPYTOR_IMPORTREADDEPTH" + script "../main.nf" + process "CNVPYTOR_IMPORTREADDEPTH" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "cnvpytor" + tag "cnvpytor/importreaddepth" + + test("test-cnvpytor-importreaddepth") { + + when { + process { + """ + input[0] = [ + [ id: 'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.pytor[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-cnvpytor-importreaddepth-cram") { + + when { + process { + """ + input[0] = [ + [ id: 'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.pytor[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-cnvpytor-importreaddepth-cram-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id: 'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test.snap b/modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test.snap new file mode 100644 index 00000000000..0339e3824e3 --- /dev/null +++ b/modules/nf-core/cnvpytor/importreaddepth/tests/main.nf.test.snap @@ -0,0 +1,61 @@ +{ + "test-cnvpytor-importreaddepth": { + "content": [ + "test.pytor", + [ + "versions.yml:md5,8b48cc59a72c589feb7e51e10f589b27" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T14:03:16.865191" + }, + "test-cnvpytor-importreaddepth-cram-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.pytor:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,8b48cc59a72c589feb7e51e10f589b27" + ], + "pytor": [ + [ + { + "id": "test" + }, + "test.pytor:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,8b48cc59a72c589feb7e51e10f589b27" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T14:03:34.286753" + }, + "test-cnvpytor-importreaddepth-cram": { + "content": [ + "test.pytor", + [ + "versions.yml:md5,8b48cc59a72c589feb7e51e10f589b27" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T14:03:27.674852" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvpytor/importreaddepth/tests/nextflow.config b/modules/nf-core/cnvpytor/importreaddepth/tests/nextflow.config new file mode 100644 index 00000000000..23b0ad2bbbb --- /dev/null +++ b/modules/nf-core/cnvpytor/importreaddepth/tests/nextflow.config @@ -0,0 +1,8 @@ +process { + withName: CNVPYTOR_IMPORTREADDEPTH { + ext.args = {params.cnvpytor_chr ? "-chrom ${params.cnvpytor_chr}" : '' } + } +} +params { + cnvpytor_chr = null // specifies chromosome name(s) the same way as they are described in the sam/bam/cram header e.g. '1 2' or 'chr1 chr2'. + } diff --git a/modules/nf-core/cnvpytor/partition/environment.yml b/modules/nf-core/cnvpytor/partition/environment.yml index b4349622929..e66cc1fc8e3 100644 --- a/modules/nf-core/cnvpytor/partition/environment.yml +++ b/modules/nf-core/cnvpytor/partition/environment.yml @@ -1,7 +1,5 @@ -name: cnvpytor_partition channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvpytor=1.2.1 diff --git a/modules/nf-core/cnvpytor/partition/meta.yml b/modules/nf-core/cnvpytor/partition/meta.yml index 5775fa76de2..c9a04d30516 100644 --- a/modules/nf-core/cnvpytor/partition/meta.yml +++ b/modules/nf-core/cnvpytor/partition/meta.yml @@ -3,6 +3,7 @@ description: partitioning read depth histograms keywords: - cnv calling - partition histograms + - read depth tools: - cnvpytor: description: calling CNVs using read depth diff --git a/modules/nf-core/cnvpytor/view/environment.yml b/modules/nf-core/cnvpytor/view/environment.yml index 4190901fa86..e66cc1fc8e3 100644 --- a/modules/nf-core/cnvpytor/view/environment.yml +++ b/modules/nf-core/cnvpytor/view/environment.yml @@ -1,7 +1,5 @@ -name: cnvpytor_view channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cnvpytor=1.2.1 diff --git a/modules/nf-core/cnvpytor/view/main.nf b/modules/nf-core/cnvpytor/view/main.nf index 3d465e8906e..c4db67e23de 100644 --- a/modules/nf-core/cnvpytor/view/main.nf +++ b/modules/nf-core/cnvpytor/view/main.nf @@ -42,7 +42,7 @@ process CNVPYTOR_VIEW { cat <<-END_VERSIONS > versions.yml "${task.process}": - cnvpytor: \$(echo \$(cnvpytor --version 2>&1) | sed 's/CNVpytor //' ) + cnvpytor: \$(cnvpytor --version | sed -n 's/.*CNVpytor \\(.*\\)/\\1/p') END_VERSIONS """ @@ -54,7 +54,7 @@ process CNVPYTOR_VIEW { cat <<-END_VERSIONS > versions.yml "${task.process}": - cnvpytor: \$(echo \$(cnvpytor --version 2>&1) | sed 's/CNVpytor //' ) + cnvpytor: \$(cnvpytor --version | sed -n 's/.*CNVpytor \\(.*\\)/\\1/p') END_VERSIONS """ } diff --git a/modules/nf-core/cnvpytor/view/meta.yml b/modules/nf-core/cnvpytor/view/meta.yml index 64eaddbd2ce..7c2088b4c35 100644 --- a/modules/nf-core/cnvpytor/view/meta.yml +++ b/modules/nf-core/cnvpytor/view/meta.yml @@ -1,7 +1,9 @@ name: cnvpytor_view description: view function to generate vcfs keywords: - - cnv calling + - cnv + - calling + - vcf tools: - cnvpytor: description: calling CNVs using read depth diff --git a/modules/nf-core/cnvpytor/view/tests/main.nf.test b/modules/nf-core/cnvpytor/view/tests/main.nf.test new file mode 100644 index 00000000000..2d6f9fb49bd --- /dev/null +++ b/modules/nf-core/cnvpytor/view/tests/main.nf.test @@ -0,0 +1,90 @@ + +nextflow_process { + + name "Test Process CNVPYTOR_VIEW" + script "../main.nf" + process "CNVPYTOR_VIEW" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "cnvpytor" + tag "cnvpytor/view" + + test("test-cnvpytor-view") { + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/pytor/test.pytor', checkIfExists: true) ] + ] + input[1] = "10000 100000" + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cnvpytor-view-tsvout") { + + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/pytor/test.pytor', checkIfExists: true) ] + ] + input[1] = [] + input[2] = "tsv" + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.tsv[0][1]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-cnvpytor-view-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test'], // meta map + [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/pytor/test.pytor', checkIfExists: true) ] + ] + input[1] = [] + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cnvpytor/view/tests/main.nf.test.snap b/modules/nf-core/cnvpytor/view/tests/main.nf.test.snap new file mode 100644 index 00000000000..71ac35ef589 --- /dev/null +++ b/modules/nf-core/cnvpytor/view/tests/main.nf.test.snap @@ -0,0 +1,111 @@ +{ + "test-cnvpytor-view-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,6ba16b8ff3afcf5a3581d0c734fbb125" + ], + "tsv": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6ba16b8ff3afcf5a3581d0c734fbb125" + ], + "xls": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T16:48:13.498098" + }, + "test-cnvpytor-view-tsvout": { + "content": [ + "test_1000.tsv", + [ + "versions.yml:md5,6ba16b8ff3afcf5a3581d0c734fbb125" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T17:07:43.139611" + }, + "test-cnvpytor-view": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test_10000.vcf:md5,814dbf5611265bff440efb4e4082aab4", + "test_100000.vcf:md5,814dbf5611265bff440efb4e4082aab4" + ] + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,6ba16b8ff3afcf5a3581d0c734fbb125" + ], + "tsv": [ + + ], + "vcf": [ + [ + { + "id": "test" + }, + [ + "test_10000.vcf:md5,814dbf5611265bff440efb4e4082aab4", + "test_100000.vcf:md5,814dbf5611265bff440efb4e4082aab4" + ] + ] + ], + "versions": [ + "versions.yml:md5,6ba16b8ff3afcf5a3581d0c734fbb125" + ], + "xls": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-21T16:48:00.412849" + } +} \ No newline at end of file diff --git a/modules/nf-core/cnvpytor/view/tests/nextflow.config b/modules/nf-core/cnvpytor/view/tests/nextflow.config new file mode 100644 index 00000000000..6b0a9b0af58 --- /dev/null +++ b/modules/nf-core/cnvpytor/view/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: CNVPYTOR_VIEW { + ext.args = '10000 100000' + } +} diff --git a/modules/nf-core/cobrameta/environment.yml b/modules/nf-core/cobrameta/environment.yml index ecb9058319d..6e473af8d40 100644 --- a/modules/nf-core/cobrameta/environment.yml +++ b/modules/nf-core/cobrameta/environment.yml @@ -1,7 +1,5 @@ -name: cobrameta channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::cobra-meta=1.2.3" diff --git a/modules/nf-core/cobs/classicconstruct/environment.yml b/modules/nf-core/cobs/classicconstruct/environment.yml index 187c6b09a18..d1f296a1c0d 100644 --- a/modules/nf-core/cobs/classicconstruct/environment.yml +++ b/modules/nf-core/cobs/classicconstruct/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "cobs_classicconstruct" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::cobs=0.3.0" diff --git a/modules/nf-core/cobs/classicconstruct/main.nf b/modules/nf-core/cobs/classicconstruct/main.nf index c207ba497a4..a9937c61d40 100644 --- a/modules/nf-core/cobs/classicconstruct/main.nf +++ b/modules/nf-core/cobs/classicconstruct/main.nf @@ -11,8 +11,8 @@ process COBS_CLASSICCONSTRUCT { tuple val(meta), path(input) output: - tuple val(meta), path("*.index.cobs_classic"), emit: index - path "versions.yml" , emit: versions + tuple val(meta), path("*.index.cobs_classic") , emit: index + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/cobs/classicconstruct/tests/main.nf.test b/modules/nf-core/cobs/classicconstruct/tests/main.nf.test index 49af6b41b21..5c172d3244e 100644 --- a/modules/nf-core/cobs/classicconstruct/tests/main.nf.test +++ b/modules/nf-core/cobs/classicconstruct/tests/main.nf.test @@ -14,7 +14,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -34,7 +34,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -42,7 +42,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.index[0][1]).name).match() } + { assert snapshot( + file(process.out.index[0][1]).name, + process.out.versions + ).match() + } ) } } diff --git a/modules/nf-core/cobs/classicconstruct/tests/main.nf.test.snap b/modules/nf-core/cobs/classicconstruct/tests/main.nf.test.snap index f0f81754a85..3ae71185deb 100644 --- a/modules/nf-core/cobs/classicconstruct/tests/main.nf.test.snap +++ b/modules/nf-core/cobs/classicconstruct/tests/main.nf.test.snap @@ -26,12 +26,23 @@ ] } ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, "timestamp": "2023-12-12T20:31:31.866203" }, "sarscov2 - genome - fasta - stub": { "content": [ - "test.index.cobs_classic" + "test.index.cobs_classic", + [ + "versions.yml:md5,c7f4addaabb22c98031762d886b4e9fa" + ] ], - "timestamp": "2023-12-12T20:31:40.908184" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-07T10:15:57.199285" } } \ No newline at end of file diff --git a/modules/nf-core/cobs/compactconstruct/environment.yml b/modules/nf-core/cobs/compactconstruct/environment.yml index daec31ae5f3..d1f296a1c0d 100644 --- a/modules/nf-core/cobs/compactconstruct/environment.yml +++ b/modules/nf-core/cobs/compactconstruct/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "cobs_compactconstruct" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::cobs=0.3.0" diff --git a/modules/nf-core/cobs/compactconstruct/tests/main.nf.test b/modules/nf-core/cobs/compactconstruct/tests/main.nf.test index 5894a66ddd4..75df99c4f8c 100644 --- a/modules/nf-core/cobs/compactconstruct/tests/main.nf.test +++ b/modules/nf-core/cobs/compactconstruct/tests/main.nf.test @@ -14,7 +14,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -34,7 +34,7 @@ nextflow_process { """ input[0] = [ [ id:'test'], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/concoct/concoct/environment.yml b/modules/nf-core/concoct/concoct/environment.yml index af1c59f06f9..7db6566e476 100644 --- a/modules/nf-core/concoct/concoct/environment.yml +++ b/modules/nf-core/concoct/concoct/environment.yml @@ -1,7 +1,5 @@ -name: concoct_concoct channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::concoct=1.1.0 diff --git a/modules/nf-core/concoct/concoct/main.nf b/modules/nf-core/concoct/concoct/main.nf index aaafd4db57e..958defd80fd 100644 --- a/modules/nf-core/concoct/concoct/main.nf +++ b/modules/nf-core/concoct/concoct/main.nf @@ -5,8 +5,8 @@ process CONCOCT_CONCOCT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py311h245ed52_4': - 'biocontainers/concoct:1.1.0--py311h245ed52_4' }" + 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py312h245ed52_6': + 'biocontainers/concoct:1.1.0--py312h245ed52_6' }" input: tuple val(meta), path(coverage_file), path(fasta) @@ -39,4 +39,21 @@ process CONCOCT_CONCOCT { concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}_args.txt + touch ${prefix}_clustering_gt1000.csv + touch ${prefix}_log.txt + touch ${prefix}_original_data_gt1000.csv + touch ${prefix}_PCA_components_data_gt1000.csv + touch ${prefix}_PCA_transformed_data_gt1000.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/concoct/concoct/meta.yml b/modules/nf-core/concoct/concoct/meta.yml index b815705a128..d92455cf850 100644 --- a/modules/nf-core/concoct/concoct/meta.yml +++ b/modules/nf-core/concoct/concoct/meta.yml @@ -17,14 +17,14 @@ tools: documentation: "https://concoct.readthedocs.io/en/latest/index.html" tool_dev_url: "https://github.com/BinPro/CONCOCT" doi: "10.1038/nmeth.3103" - licence: "['FreeBSD']" + licence: ["FreeBSD"] input: - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - coverage: + - coverage_file: type: file description: Subcontig coverage TSV table (typically generated with concoct_coverage_table.py) pattern: "*.tsv" diff --git a/modules/nf-core/concoct/concoct/tests/main.nf.test b/modules/nf-core/concoct/concoct/tests/main.nf.test new file mode 100644 index 00000000000..a979ebe37ce --- /dev/null +++ b/modules/nf-core/concoct/concoct/tests/main.nf.test @@ -0,0 +1,105 @@ +nextflow_process { + + name "Test Process CONCOCT_CONCOCT" + script "../main.nf" + process "CONCOCT_CONCOCT" + + tag "modules" + tag "modules_nfcore" + tag "concoct" + tag "concoct/concoct" + tag "concoct/cutupfasta" + tag "concoct/concoctcoveragetable" + + setup { + run("CONCOCT_CUTUPFASTA") { + script "../../cutupfasta/main.nf" + process { + """ + input[0] = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[1] = true + """ + } + } + + run("CONCOCT_CONCOCTCOVERAGETABLE") { + script "../../concoctcoveragetable/main.nf" + process { + """ + ch_bam_input = Channel + .fromList([ + [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + ] + ]) + + + input[0] = CONCOCT_CUTUPFASTA.out.bed.join( ch_bam_input ) + """ + } + } + } + + test("sarscov2 - bam") { + + when { + process { + """ + ch_input_for_concoctconcoct = CONCOCT_CONCOCTCOVERAGETABLE.out.tsv + .join(CONCOCT_CUTUPFASTA.out.fasta) + + input[0] = ch_input_for_concoctconcoct + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.args_txt, + process.out.clustering_csv, + process.out.original_data_csv, + process.out.pca_components_csv, + process.out.pca_transformed_csv, + process.out.versions, + file(process.out.log_txt[0][1]).readLines().last().contains("CONCOCT Finished, the log shows how it went.") + ).match() } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [id: 'test'], [], [] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/concoct/concoct/tests/main.nf.test.snap b/modules/nf-core/concoct/concoct/tests/main.nf.test.snap new file mode 100644 index 00000000000..6ff6ac9748f --- /dev/null +++ b/modules/nf-core/concoct/concoct/tests/main.nf.test.snap @@ -0,0 +1,173 @@ +{ + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_args.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_clustering_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test_log.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test_original_data_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test_PCA_components_data_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test_PCA_transformed_data_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + "versions.yml:md5,ed583fb0862e060844ceffee6bf0eeb7" + ], + "args_txt": [ + [ + { + "id": "test" + }, + "test_args.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "clustering_csv": [ + [ + { + "id": "test" + }, + "test_clustering_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log_txt": [ + [ + { + "id": "test" + }, + "test_log.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "original_data_csv": [ + [ + { + "id": "test" + }, + "test_original_data_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pca_components_csv": [ + [ + { + "id": "test" + }, + "test_PCA_components_data_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pca_transformed_csv": [ + [ + { + "id": "test" + }, + "test_PCA_transformed_data_gt1000.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ed583fb0862e060844ceffee6bf0eeb7" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-24T08:39:53.759611572" + }, + "sarscov2 - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_args.txt:md5,277d8a15f732ae1bd4d6839fd768113e" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_clustering_gt1000.csv:md5,8cb3e6901075bf07966d08e1816762ce" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_original_data_gt1000.csv:md5,7474c6a670a608c2c9c9b9edde724074" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_PCA_components_data_gt1000.csv:md5,e69fd8a810563e62cb0c3998842b3659" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test_PCA_transformed_data_gt1000.csv:md5,558a35f720a9bfa54cbf7cdf099fd367" + ] + ], + [ + "versions.yml:md5,ed583fb0862e060844ceffee6bf0eeb7" + ], + true + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T20:25:56.619830843" + } +} \ No newline at end of file diff --git a/modules/nf-core/concoct/concoct/tests/tags.yml b/modules/nf-core/concoct/concoct/tests/tags.yml new file mode 100644 index 00000000000..905033188ad --- /dev/null +++ b/modules/nf-core/concoct/concoct/tests/tags.yml @@ -0,0 +1,2 @@ +concoct/concoct: + - "modules/nf-core/concoct/concoct/**" diff --git a/modules/nf-core/concoct/concoctcoveragetable/environment.yml b/modules/nf-core/concoct/concoctcoveragetable/environment.yml index 4152605fdd4..7db6566e476 100644 --- a/modules/nf-core/concoct/concoctcoveragetable/environment.yml +++ b/modules/nf-core/concoct/concoctcoveragetable/environment.yml @@ -1,7 +1,5 @@ -name: concoct_concoctcoveragetable channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::concoct=1.1.0 diff --git a/modules/nf-core/concoct/concoctcoveragetable/main.nf b/modules/nf-core/concoct/concoctcoveragetable/main.nf index 6560e035c6f..65a814544a0 100644 --- a/modules/nf-core/concoct/concoctcoveragetable/main.nf +++ b/modules/nf-core/concoct/concoctcoveragetable/main.nf @@ -5,8 +5,8 @@ process CONCOCT_CONCOCTCOVERAGETABLE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py311h245ed52_4': - 'biocontainers/concoct:1.1.0--py311h245ed52_4' }" + 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py312h245ed52_6': + 'biocontainers/concoct:1.1.0--py312h245ed52_6' }" input: tuple val(meta), path(bed), path(bamfiles), path(baifiles) @@ -33,4 +33,16 @@ process CONCOCT_CONCOCTCOVERAGETABLE { concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/concoct/concoctcoveragetable/meta.yml b/modules/nf-core/concoct/concoctcoveragetable/meta.yml index c6413c7434e..26b9793c9c8 100644 --- a/modules/nf-core/concoct/concoctcoveragetable/meta.yml +++ b/modules/nf-core/concoct/concoctcoveragetable/meta.yml @@ -16,7 +16,7 @@ tools: documentation: "https://concoct.readthedocs.io/en/latest/index.html" tool_dev_url: "https://github.com/BinPro/CONCOCT" doi: "10.1038/nmeth.3103" - licence: "['FreeBSD']" + licence: ["FreeBSD"] input: - meta: type: map diff --git a/modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test b/modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test new file mode 100644 index 00000000000..dc378b52d43 --- /dev/null +++ b/modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test @@ -0,0 +1,84 @@ +nextflow_process { + + name "Test Process CONCOCT_CONCOCTCOVERAGETABLE" + script "../main.nf" + process "CONCOCT_CONCOCTCOVERAGETABLE" + + tag "modules" + tag "modules_nfcore" + tag "concoct" + tag "concoct/concoctcoveragetable" + tag "concoct/cutupfasta" + + setup { + run("CONCOCT_CUTUPFASTA") { + script "../../cutupfasta/main.nf" + process { + """ + input[0] = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[1] = true + """ + } + } + } + + test("sarscov2 - bam") { + + when { + process { + """ + ch_bam_input = Channel + .fromList([ + [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + ] + ]) + + + input[0] = CONCOCT_CUTUPFASTA.out.bed.join( ch_bam_input ) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [id:'test'], [], [] ,[] ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test.snap b/modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test.snap new file mode 100644 index 00000000000..e92af4b2d72 --- /dev/null +++ b/modules/nf-core/concoct/concoctcoveragetable/tests/main.nf.test.snap @@ -0,0 +1,70 @@ +{ + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,156a9a23e05b34188d03d52b39fae343" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,156a9a23e05b34188d03d52b39fae343" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-24T08:41:27.166202038" + }, + "sarscov2 - bam": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,0183c95ec03d2a6c83a4ca82935308a4" + ] + ], + "1": [ + "versions.yml:md5,156a9a23e05b34188d03d52b39fae343" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,0183c95ec03d2a6c83a4ca82935308a4" + ] + ], + "versions": [ + "versions.yml:md5,156a9a23e05b34188d03d52b39fae343" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T15:59:09.328659542" + } +} \ No newline at end of file diff --git a/modules/nf-core/concoct/concoctcoveragetable/tests/tags.yml b/modules/nf-core/concoct/concoctcoveragetable/tests/tags.yml new file mode 100644 index 00000000000..204808969d3 --- /dev/null +++ b/modules/nf-core/concoct/concoctcoveragetable/tests/tags.yml @@ -0,0 +1,2 @@ +concoct/concoctcoveragetable: + - "modules/nf-core/concoct/concoctcoveragetable/**" diff --git a/modules/nf-core/concoct/cutupfasta/environment.yml b/modules/nf-core/concoct/cutupfasta/environment.yml index c69271975cf..7db6566e476 100644 --- a/modules/nf-core/concoct/cutupfasta/environment.yml +++ b/modules/nf-core/concoct/cutupfasta/environment.yml @@ -1,7 +1,5 @@ -name: concoct_cutupfasta channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::concoct=1.1.0 diff --git a/modules/nf-core/concoct/cutupfasta/main.nf b/modules/nf-core/concoct/cutupfasta/main.nf index 2742761746a..9a69e72c157 100644 --- a/modules/nf-core/concoct/cutupfasta/main.nf +++ b/modules/nf-core/concoct/cutupfasta/main.nf @@ -5,8 +5,8 @@ process CONCOCT_CUTUPFASTA { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py311h245ed52_4': - 'biocontainers/concoct:1.1.0--py311h245ed52_4' }" + 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py312h245ed52_6': + 'biocontainers/concoct:1.1.0--py312h245ed52_6' }" input: tuple val(meta), path(fasta) @@ -37,4 +37,18 @@ process CONCOCT_CUTUPFASTA { concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def bedfile = bed ? "-b ${prefix}.bed" : "" + if ("$fasta" == "${prefix}.fasta") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ + touch ${prefix}.fasta + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/concoct/cutupfasta/meta.yml b/modules/nf-core/concoct/cutupfasta/meta.yml index 5d4a8a2d064..44a28723300 100644 --- a/modules/nf-core/concoct/cutupfasta/meta.yml +++ b/modules/nf-core/concoct/cutupfasta/meta.yml @@ -15,7 +15,7 @@ tools: documentation: "https://concoct.readthedocs.io/en/latest/index.html" tool_dev_url: "https://github.com/BinPro/CONCOCT" doi: "10.1038/nmeth.3103" - licence: "['FreeBSD']" + licence: ["FreeBSD"] input: - meta: type: map diff --git a/modules/nf-core/concoct/cutupfasta/tests/main.nf.test b/modules/nf-core/concoct/cutupfasta/tests/main.nf.test new file mode 100644 index 00000000000..0c395ee2381 --- /dev/null +++ b/modules/nf-core/concoct/cutupfasta/tests/main.nf.test @@ -0,0 +1,60 @@ +nextflow_process { + + name "Test Process CONCOCT_CUTUPFASTA" + script "../main.nf" + process "CONCOCT_CUTUPFASTA" + + tag "modules" + tag "modules_nfcore" + tag "concoct" + tag "concoct/cutupfasta" + + test("sarscov2 - genome - fasta") { + + when { + process { + """ + input[0] = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - genome - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/concoct/cutupfasta/tests/main.nf.test.snap b/modules/nf-core/concoct/cutupfasta/tests/main.nf.test.snap new file mode 100644 index 00000000000..74be0e7a9cf --- /dev/null +++ b/modules/nf-core/concoct/cutupfasta/tests/main.nf.test.snap @@ -0,0 +1,84 @@ +{ + "sarscov2 - genome - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fasta:md5,b7d972e6efa0b306e02e46a685310c7f" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,9785f4f0f5f6e8d020a52a9e2c4fa3e0" + ], + "bed": [ + + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fasta:md5,b7d972e6efa0b306e02e46a685310c7f" + ] + ], + "versions": [ + "versions.yml:md5,9785f4f0f5f6e8d020a52a9e2c4fa3e0" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T15:13:08.126117371" + }, + "sarscov2 - genome - fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,9785f4f0f5f6e8d020a52a9e2c4fa3e0" + ], + "bed": [ + + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,9785f4f0f5f6e8d020a52a9e2c4fa3e0" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T15:13:20.929503446" + } +} \ No newline at end of file diff --git a/modules/nf-core/concoct/cutupfasta/tests/tags.yml b/modules/nf-core/concoct/cutupfasta/tests/tags.yml new file mode 100644 index 00000000000..84a0432ca15 --- /dev/null +++ b/modules/nf-core/concoct/cutupfasta/tests/tags.yml @@ -0,0 +1,2 @@ +concoct/cutupfasta: + - "modules/nf-core/concoct/cutupfasta/**" diff --git a/modules/nf-core/concoct/extractfastabins/environment.yml b/modules/nf-core/concoct/extractfastabins/environment.yml index e31d2e86039..7db6566e476 100644 --- a/modules/nf-core/concoct/extractfastabins/environment.yml +++ b/modules/nf-core/concoct/extractfastabins/environment.yml @@ -1,7 +1,5 @@ -name: concoct_extractfastabins channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::concoct=1.1.0 diff --git a/modules/nf-core/concoct/extractfastabins/main.nf b/modules/nf-core/concoct/extractfastabins/main.nf index 893cc718e2f..add94c93747 100644 --- a/modules/nf-core/concoct/extractfastabins/main.nf +++ b/modules/nf-core/concoct/extractfastabins/main.nf @@ -4,8 +4,8 @@ process CONCOCT_EXTRACTFASTABINS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py311h245ed52_4': - 'biocontainers/concoct:1.1.0--py311h245ed52_4' }" + 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py312h245ed52_6': + 'biocontainers/concoct:1.1.0--py312h245ed52_6' }" input: tuple val(meta), path(original_fasta), path(csv) @@ -40,4 +40,17 @@ process CONCOCT_EXTRACTFASTABINS { concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir -p ${prefix} + echo "" | gzip > ${prefix}/${prefix}.fa.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/concoct/extractfastabins/meta.yml b/modules/nf-core/concoct/extractfastabins/meta.yml index 39309b01037..a9ac00a304c 100644 --- a/modules/nf-core/concoct/extractfastabins/meta.yml +++ b/modules/nf-core/concoct/extractfastabins/meta.yml @@ -17,7 +17,7 @@ tools: documentation: "https://concoct.readthedocs.io/en/latest/index.html" tool_dev_url: "https://github.com/BinPro/CONCOCT" doi: "10.1038/nmeth.3103" - licence: "['FreeBSD']" + licence: ["FreeBSD"] input: - meta: type: map diff --git a/modules/nf-core/concoct/extractfastabins/tests/main.nf.test b/modules/nf-core/concoct/extractfastabins/tests/main.nf.test new file mode 100644 index 00000000000..ce14d726dad --- /dev/null +++ b/modules/nf-core/concoct/extractfastabins/tests/main.nf.test @@ -0,0 +1,124 @@ +nextflow_process { + + name "Test Process CONCOCT_EXTRACTFASTABINS" + script "../main.nf" + process "CONCOCT_EXTRACTFASTABINS" + tag "modules" + tag "modules_nfcore" + tag "concoct" + tag "concoct/extractfastabins" + tag "concoct/cutupfasta" + tag "concoct/concoctcoveragetable" + tag "concoct/concoct" + tag "concoct/mergecutupclustering" + + setup { + run("CONCOCT_CUTUPFASTA") { + script "../../cutupfasta/main.nf" + process { + """ + input[0] = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[1] = true + """ + } + } + + run("CONCOCT_CONCOCTCOVERAGETABLE") { + script "../../concoctcoveragetable/main.nf" + process { + """ + ch_bam_input = Channel + .fromList([ + [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + ] + ]) + + + input[0] = CONCOCT_CUTUPFASTA.out.bed.join( ch_bam_input ) + """ + } + } + + run("CONCOCT_CONCOCT") { + script "../../concoct/main.nf" + process { + """ + ch_input_for_concoctconcoct = CONCOCT_CONCOCTCOVERAGETABLE.out.tsv + .join(CONCOCT_CUTUPFASTA.out.fasta) + + input[0] = ch_input_for_concoctconcoct + """ + } + } + + run("CONCOCT_MERGECUTUPCLUSTERING") { + script "../../mergecutupclustering/main.nf" + process { + """ + input[0] = CONCOCT_CONCOCT.out.clustering_csv + """ + } + } + } + + test("sarscov2 - bam") { + + when { + process { + """ + fasta = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[0] = Channel.of(fasta).join(CONCOCT_MERGECUTUPCLUSTERING.out.csv) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/concoct/extractfastabins/tests/main.nf.test.snap b/modules/nf-core/concoct/extractfastabins/tests/main.nf.test.snap new file mode 100644 index 00000000000..5af33a37c87 --- /dev/null +++ b/modules/nf-core/concoct/extractfastabins/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,768f307345c2552b0613b946fca44873" + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,768f307345c2552b0613b946fca44873" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-24T08:33:53.38186154" + }, + "sarscov2 - bam": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_3.fa.gz:md5,483f4a5dfe60171c86ee9b7e6dff908b" + ] + ], + "1": [ + "versions.yml:md5,768f307345c2552b0613b946fca44873" + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "test_3.fa.gz:md5,483f4a5dfe60171c86ee9b7e6dff908b" + ] + ], + "versions": [ + "versions.yml:md5,768f307345c2552b0613b946fca44873" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T21:05:15.805714717" + } +} \ No newline at end of file diff --git a/modules/nf-core/concoct/extractfastabins/tests/tags.yml b/modules/nf-core/concoct/extractfastabins/tests/tags.yml new file mode 100644 index 00000000000..6db649a22e8 --- /dev/null +++ b/modules/nf-core/concoct/extractfastabins/tests/tags.yml @@ -0,0 +1,2 @@ +concoct/extractfastabins: + - "modules/nf-core/concoct/extractfastabins/**" diff --git a/modules/nf-core/concoct/mergecutupclustering/environment.yml b/modules/nf-core/concoct/mergecutupclustering/environment.yml index 459d65c740b..7db6566e476 100644 --- a/modules/nf-core/concoct/mergecutupclustering/environment.yml +++ b/modules/nf-core/concoct/mergecutupclustering/environment.yml @@ -1,7 +1,5 @@ -name: concoct_mergecutupclustering channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::concoct=1.1.0 diff --git a/modules/nf-core/concoct/mergecutupclustering/main.nf b/modules/nf-core/concoct/mergecutupclustering/main.nf index 6acd72a279b..01e2e46daf4 100644 --- a/modules/nf-core/concoct/mergecutupclustering/main.nf +++ b/modules/nf-core/concoct/mergecutupclustering/main.nf @@ -4,8 +4,8 @@ process CONCOCT_MERGECUTUPCLUSTERING { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py311h245ed52_4': - 'biocontainers/concoct:1.1.0--py311h245ed52_4' }" + 'https://depot.galaxyproject.org/singularity/concoct:1.1.0--py312h245ed52_6': + 'biocontainers/concoct:1.1.0--py312h245ed52_6' }" input: tuple val(meta), path(clustering_csv) @@ -32,4 +32,17 @@ process CONCOCT_MERGECUTUPCLUSTERING { concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if ("$clustering_csv" == "${prefix}.csv") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + """ + touch ${prefix}.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + concoct: \$(echo \$(concoct --version 2>&1) | sed 's/concoct //g' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/concoct/mergecutupclustering/meta.yml b/modules/nf-core/concoct/mergecutupclustering/meta.yml index 88b39f91ff6..e34a423c22b 100644 --- a/modules/nf-core/concoct/mergecutupclustering/meta.yml +++ b/modules/nf-core/concoct/mergecutupclustering/meta.yml @@ -16,7 +16,7 @@ tools: documentation: "https://concoct.readthedocs.io/en/latest/index.html" tool_dev_url: "https://github.com/BinPro/CONCOCT" doi: "10.1038/nmeth.3103" - licence: "['FreeBSD']" + licence: ["FreeBSD"] input: - meta: type: map diff --git a/modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test b/modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test new file mode 100644 index 00000000000..b888c2fadc9 --- /dev/null +++ b/modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test @@ -0,0 +1,107 @@ +nextflow_process { + + name "Test Process CONCOCT_MERGECUTUPCLUSTERING" + script "../main.nf" + process "CONCOCT_MERGECUTUPCLUSTERING" + + tag "modules" + tag "modules_nfcore" + tag "concoct" + tag "concoct/mergecutupclustering" + tag "concoct/cutupfasta" + tag "concoct/concoctcoveragetable" + tag "concoct/concoct" + + setup { + run("CONCOCT_CUTUPFASTA") { + script "../../cutupfasta/main.nf" + process { + """ + input[0] = [ + [id: 'test', single_end: false], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + input[1] = true + """ + } + } + + run("CONCOCT_CONCOCTCOVERAGETABLE") { + script "../../concoctcoveragetable/main.nf" + process { + """ + ch_bam_input = Channel + .fromList([ + [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.single_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + ] + ]) + + + input[0] = CONCOCT_CUTUPFASTA.out.bed.join( ch_bam_input ) + """ + } + } + + run("CONCOCT_CONCOCT") { + script "../../concoct/main.nf" + process { + """ + ch_input_for_concoctconcoct = CONCOCT_CONCOCTCOVERAGETABLE.out.tsv + .join(CONCOCT_CUTUPFASTA.out.fasta) + + input[0] = ch_input_for_concoctconcoct + """ + } + } + } + + test("sarscov2 - bam") { + + when { + process { + """ + input[0] = CONCOCT_CONCOCT.out.clustering_csv + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("sarscov2 - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [id: 'test'], []] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test.snap b/modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test.snap new file mode 100644 index 00000000000..fd4e6813ff1 --- /dev/null +++ b/modules/nf-core/concoct/mergecutupclustering/tests/main.nf.test.snap @@ -0,0 +1,70 @@ +{ + "sarscov2 - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,bf584483f6d21a4c6b34a4c517c88283" + ], + "csv": [ + [ + { + "id": "test" + }, + "test.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,bf584483f6d21a4c6b34a4c517c88283" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-24T08:41:05.313757446" + }, + "sarscov2 - bam": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csv:md5,ac57fce859cd28f5d18e1f4bbe056a35" + ] + ], + "1": [ + "versions.yml:md5,bf584483f6d21a4c6b34a4c517c88283" + ], + "csv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csv:md5,ac57fce859cd28f5d18e1f4bbe056a35" + ] + ], + "versions": [ + "versions.yml:md5,bf584483f6d21a4c6b34a4c517c88283" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-21T20:35:39.630679488" + } +} \ No newline at end of file diff --git a/modules/nf-core/concoct/mergecutupclustering/tests/tags.yml b/modules/nf-core/concoct/mergecutupclustering/tests/tags.yml new file mode 100644 index 00000000000..0fc6dc6e103 --- /dev/null +++ b/modules/nf-core/concoct/mergecutupclustering/tests/tags.yml @@ -0,0 +1,2 @@ +concoct/mergecutupclustering: + - "modules/nf-core/concoct/mergecutupclustering/**" diff --git a/modules/nf-core/conifer/environment.yml b/modules/nf-core/conifer/environment.yml index ab1703d4ab0..387668d754f 100644 --- a/modules/nf-core/conifer/environment.yml +++ b/modules/nf-core/conifer/environment.yml @@ -1,7 +1,5 @@ -name: conifer channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::conifer=1.0.2 diff --git a/modules/nf-core/controlfreec/assesssignificance/environment.yml b/modules/nf-core/controlfreec/assesssignificance/environment.yml index 94d4d2275a0..f6b64529bce 100644 --- a/modules/nf-core/controlfreec/assesssignificance/environment.yml +++ b/modules/nf-core/controlfreec/assesssignificance/environment.yml @@ -1,7 +1,5 @@ -name: controlfreec_assesssignificance channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::control-freec=11.6b diff --git a/modules/nf-core/controlfreec/freec/environment.yml b/modules/nf-core/controlfreec/freec/environment.yml index cb76c6ba933..f6b64529bce 100644 --- a/modules/nf-core/controlfreec/freec/environment.yml +++ b/modules/nf-core/controlfreec/freec/environment.yml @@ -1,7 +1,5 @@ -name: controlfreec_freec channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::control-freec=11.6b diff --git a/modules/nf-core/controlfreec/freec/tests/main.nf.test b/modules/nf-core/controlfreec/freec/tests/main.nf.test index 90312aebc80..8e38becdfdc 100644 --- a/modules/nf-core/controlfreec/freec/tests/main.nf.test +++ b/modules/nf-core/controlfreec/freec/tests/main.nf.test @@ -70,9 +70,9 @@ nextflow_process { path(process.out.BAF.get(0).get(1)).readLines()[0], path(process.out.ratio.get(0).get(1)).readLines()[0], path(process.out.config.get(0).get(1)).readLines()[0], - path(process.out.info.get(0).get(1)).readLines()[0] - ).match() }, - { assert snapshot(process.out.versions).match("version") } + path(process.out.info.get(0).get(1)).readLines()[0], + process.out.versions + ).match() } ) } @@ -159,7 +159,5 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } - } diff --git a/modules/nf-core/controlfreec/freec/tests/main.nf.test.snap b/modules/nf-core/controlfreec/freec/tests/main.nf.test.snap index 39850d02564..eb0c468ae65 100644 --- a/modules/nf-core/controlfreec/freec/tests/main.nf.test.snap +++ b/modules/nf-core/controlfreec/freec/tests/main.nf.test.snap @@ -178,21 +178,9 @@ ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-26T13:42:56.629043" - }, - "version": { - "content": [ - [ - "versions.yml:md5,e704fc0e6d1ac333dc419498fa128769" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.0" - }, - "timestamp": "2024-03-27T10:01:40.977048" + "timestamp": "2024-07-09T10:41:07.003311" }, "human - mpileup": { "content": [ @@ -201,12 +189,15 @@ "Chromosome\tPosition\tBAF\tFittedA\tFittedB\tA\tB\tuncertainty", "Chromosome\tStart\tRatio\tMedianRatio\tCopyNumber\tBAF\testimatedBAF\tGenotype\tUncertaintyOfGT", "[general]", - "Program_Version\tv11.6" + "Program_Version\tv11.6", + [ + "versions.yml:md5,e704fc0e6d1ac333dc419498fa128769" + ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-27T10:14:50.936823" + "timestamp": "2024-07-09T10:40:42.538035" } } \ No newline at end of file diff --git a/modules/nf-core/controlfreec/freec2bed/environment.yml b/modules/nf-core/controlfreec/freec2bed/environment.yml index 12601ffa556..f6b64529bce 100644 --- a/modules/nf-core/controlfreec/freec2bed/environment.yml +++ b/modules/nf-core/controlfreec/freec2bed/environment.yml @@ -1,7 +1,5 @@ -name: controlfreec_freec2bed channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::control-freec=11.6b diff --git a/modules/nf-core/controlfreec/freec2circos/environment.yml b/modules/nf-core/controlfreec/freec2circos/environment.yml index 1915abfd7f4..f6b64529bce 100644 --- a/modules/nf-core/controlfreec/freec2circos/environment.yml +++ b/modules/nf-core/controlfreec/freec2circos/environment.yml @@ -1,7 +1,5 @@ -name: controlfreec_freec2circos channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::control-freec=11.6b diff --git a/modules/nf-core/controlfreec/makegraph/environment.yml b/modules/nf-core/controlfreec/makegraph/environment.yml index 897eadf3bd4..f6b64529bce 100644 --- a/modules/nf-core/controlfreec/makegraph/environment.yml +++ b/modules/nf-core/controlfreec/makegraph/environment.yml @@ -1,7 +1,5 @@ -name: controlfreec_makegraph channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::control-freec=11.6b diff --git a/modules/nf-core/controlfreec/makegraph2/environment.yml b/modules/nf-core/controlfreec/makegraph2/environment.yml index 720c2e950eb..f6b64529bce 100644 --- a/modules/nf-core/controlfreec/makegraph2/environment.yml +++ b/modules/nf-core/controlfreec/makegraph2/environment.yml @@ -1,7 +1,5 @@ -name: controlfreec_makegraph2 channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::control-freec=11.6b diff --git a/modules/nf-core/cooler/balance/environment.yml b/modules/nf-core/cooler/balance/environment.yml index b39304dee23..f8165ca96f0 100644 --- a/modules/nf-core/cooler/balance/environment.yml +++ b/modules/nf-core/cooler/balance/environment.yml @@ -1,7 +1,5 @@ -name: cooler_balance channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cooler=0.9.2 diff --git a/modules/nf-core/cooler/cload/environment.yml b/modules/nf-core/cooler/cload/environment.yml index 03abee73254..f8165ca96f0 100644 --- a/modules/nf-core/cooler/cload/environment.yml +++ b/modules/nf-core/cooler/cload/environment.yml @@ -1,7 +1,5 @@ -name: cooler_cload channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cooler=0.9.2 diff --git a/modules/nf-core/cooler/digest/environment.yml b/modules/nf-core/cooler/digest/environment.yml index 2b374d5ee55..f8165ca96f0 100644 --- a/modules/nf-core/cooler/digest/environment.yml +++ b/modules/nf-core/cooler/digest/environment.yml @@ -1,7 +1,5 @@ -name: cooler_digest channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cooler=0.9.2 diff --git a/modules/nf-core/cooler/digest/tests/main.nf.test b/modules/nf-core/cooler/digest/tests/main.nf.test new file mode 100644 index 00000000000..c919f36a3c4 --- /dev/null +++ b/modules/nf-core/cooler/digest/tests/main.nf.test @@ -0,0 +1,34 @@ + +nextflow_process { + + name "Test Process COOLER_DIGEST" + script "../main.nf" + process "COOLER_DIGEST" + + tag "modules" + tag "modules_nfcore" + tag "cooler" + tag "cooler/digest" + + test("test-cooler-digest") { + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.sizes', checkIfExists: true) + input[2] = "CviQI" + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cooler/digest/tests/main.nf.test.snap b/modules/nf-core/cooler/digest/tests/main.nf.test.snap new file mode 100644 index 00000000000..6a31f51d300 --- /dev/null +++ b/modules/nf-core/cooler/digest/tests/main.nf.test.snap @@ -0,0 +1,25 @@ +{ + "test-cooler-digest": { + "content": [ + { + "0": [ + "genome_CviQI.bed:md5,f02d3cfaf642b27d4cc197209845e096" + ], + "1": [ + "versions.yml:md5,bdb841d6785c97ecce32656c1923eccc" + ], + "bed": [ + "genome_CviQI.bed:md5,f02d3cfaf642b27d4cc197209845e096" + ], + "versions": [ + "versions.yml:md5,bdb841d6785c97ecce32656c1923eccc" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:44:09.185756" + } +} \ No newline at end of file diff --git a/modules/nf-core/cooler/dump/environment.yml b/modules/nf-core/cooler/dump/environment.yml index b4d88e92cb7..45f3b64be0c 100644 --- a/modules/nf-core/cooler/dump/environment.yml +++ b/modules/nf-core/cooler/dump/environment.yml @@ -1,7 +1,5 @@ -name: cooler_dump channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::cooler=0.9.2 + - bioconda::cooler=0.10.2 diff --git a/modules/nf-core/cooler/dump/main.nf b/modules/nf-core/cooler/dump/main.nf index 3bb6162c84e..0cf527f36e2 100644 --- a/modules/nf-core/cooler/dump/main.nf +++ b/modules/nf-core/cooler/dump/main.nf @@ -4,8 +4,8 @@ process COOLER_DUMP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/cooler:0.9.2--pyh7cba7a3_0' : - 'biocontainers/cooler:0.9.2--pyh7cba7a3_0' }" + 'https://depot.galaxyproject.org/singularity/cooler:0.10.2--pyhdfd78af_0' : + 'biocontainers/cooler:0.10.2--pyhdfd78af_0' }" input: tuple val(meta), path(cool), val(resolution) @@ -32,4 +32,16 @@ process COOLER_DUMP { cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //') END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bedpe + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cooler: \$(cooler --version 2>&1 | sed 's/cooler, version //') + END_VERSIONS + """ } diff --git a/modules/nf-core/cooler/dump/tests/main.nf.test b/modules/nf-core/cooler/dump/tests/main.nf.test new file mode 100644 index 00000000000..fc5a2249e41 --- /dev/null +++ b/modules/nf-core/cooler/dump/tests/main.nf.test @@ -0,0 +1,60 @@ + +nextflow_process { + + name "Test Process COOLER_DUMP" + script "../main.nf" + process "COOLER_DUMP" + + tag "modules" + tag "modules_nfcore" + tag "cooler" + tag "cooler/dump" + + test("test-cooler-dump") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file("https://raw.githubusercontent.com/open2c/cooler/master/tests/data/toy.asymm.16.cool", checkIfExists: true), + [:] // resolution if any + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-cooler-dump-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file("https://raw.githubusercontent.com/open2c/cooler/master/tests/data/toy.asymm.16.cool", checkIfExists: true), + [:] // resolution if any + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cooler/dump/tests/main.nf.test.snap b/modules/nf-core/cooler/dump/tests/main.nf.test.snap new file mode 100644 index 00000000000..e415486d59d --- /dev/null +++ b/modules/nf-core/cooler/dump/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "test-cooler-dump-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bedpe:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,af2717b7d684ac9de4d3729d85bfc82f" + ], + "bedpe": [ + [ + { + "id": "test" + }, + "test.bedpe:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,af2717b7d684ac9de4d3729d85bfc82f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T15:27:00.895925" + }, + "test-cooler-dump": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bedpe:md5,38e9b0b8cc74f55a15e8ab01023048bd" + ] + ], + "1": [ + "versions.yml:md5,af2717b7d684ac9de4d3729d85bfc82f" + ], + "bedpe": [ + [ + { + "id": "test" + }, + "test.bedpe:md5,38e9b0b8cc74f55a15e8ab01023048bd" + ] + ], + "versions": [ + "versions.yml:md5,af2717b7d684ac9de4d3729d85bfc82f" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T15:26:53.676822" + } +} \ No newline at end of file diff --git a/modules/nf-core/cooler/makebins/environment.yml b/modules/nf-core/cooler/makebins/environment.yml index e48b3a17519..f8165ca96f0 100644 --- a/modules/nf-core/cooler/makebins/environment.yml +++ b/modules/nf-core/cooler/makebins/environment.yml @@ -1,7 +1,5 @@ -name: cooler_makebins channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cooler=0.9.2 diff --git a/modules/nf-core/cooler/makebins/tests/main.nf.test b/modules/nf-core/cooler/makebins/tests/main.nf.test new file mode 100644 index 00000000000..8a779304792 --- /dev/null +++ b/modules/nf-core/cooler/makebins/tests/main.nf.test @@ -0,0 +1,36 @@ + +nextflow_process { + + name "Test Process COOLER_MAKEBINS" + script "../main.nf" + process "COOLER_MAKEBINS" + + tag "modules" + tag "modules_nfcore" + tag "cooler" + tag "cooler/makebins" + + test("test-cooler-makebins") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/cooler/cload/hg19/hg19.chrom.sizes', checkIfExists: true), + "1000000" + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/cooler/makebins/tests/main.nf.test.snap b/modules/nf-core/cooler/makebins/tests/main.nf.test.snap new file mode 100644 index 00000000000..42cb0763a18 --- /dev/null +++ b/modules/nf-core/cooler/makebins/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-cooler-makebins": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bed:md5,99e887ba1237ebcdcf31954476ab0adf" + ] + ], + "1": [ + "versions.yml:md5,29321a7bd10f4931a11dfdc571b74d16" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,99e887ba1237ebcdcf31954476ab0adf" + ] + ], + "versions": [ + "versions.yml:md5,29321a7bd10f4931a11dfdc571b74d16" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T11:49:39.722465" + } +} \ No newline at end of file diff --git a/modules/nf-core/cooler/merge/environment.yml b/modules/nf-core/cooler/merge/environment.yml index 1b3ea8da82a..f8165ca96f0 100644 --- a/modules/nf-core/cooler/merge/environment.yml +++ b/modules/nf-core/cooler/merge/environment.yml @@ -1,7 +1,5 @@ -name: cooler_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cooler=0.9.2 diff --git a/modules/nf-core/cooler/zoomify/environment.yml b/modules/nf-core/cooler/zoomify/environment.yml index 2288f376262..f8165ca96f0 100644 --- a/modules/nf-core/cooler/zoomify/environment.yml +++ b/modules/nf-core/cooler/zoomify/environment.yml @@ -1,7 +1,5 @@ -name: cooler_zoomify channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cooler=0.9.2 diff --git a/modules/nf-core/coreograph/environment.yml b/modules/nf-core/coreograph/environment.yml index 0ee4a964b04..3cebeff05bf 100644 --- a/modules/nf-core/coreograph/environment.yml +++ b/modules/nf-core/coreograph/environment.yml @@ -1,5 +1,3 @@ -name: coreograph channels: - conda-forge - bioconda - - defaults diff --git a/modules/nf-core/coreograph/meta.yml b/modules/nf-core/coreograph/meta.yml index cbff776e19e..fa61fec708e 100644 --- a/modules/nf-core/coreograph/meta.yml +++ b/modules/nf-core/coreograph/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://mcmicro.org/troubleshooting/tuning/coreograph.html" tool_dev_url: "https://github.com/HMS-IDAC/UNetCoreograph" doi: 10.1038/s41592-021-01308-y - licence: "MIT License" + license: ["MIT License"] input: - image: type: file diff --git a/modules/nf-core/crabz/compress/environment.yml b/modules/nf-core/crabz/compress/environment.yml index 65ce81e02da..bce375204f0 100644 --- a/modules/nf-core/crabz/compress/environment.yml +++ b/modules/nf-core/crabz/compress/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "crabz_compress" channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::crabz=0.9.0 diff --git a/modules/nf-core/crabz/decompress/environment.yml b/modules/nf-core/crabz/decompress/environment.yml index 158559c9db5..bce375204f0 100644 --- a/modules/nf-core/crabz/decompress/environment.yml +++ b/modules/nf-core/crabz/decompress/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "crabz_decompress" channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::crabz=0.9.0 diff --git a/modules/nf-core/crisprcleanr/normalize/environment.yml b/modules/nf-core/crisprcleanr/normalize/environment.yml index b183c62dcae..7bd19960033 100644 --- a/modules/nf-core/crisprcleanr/normalize/environment.yml +++ b/modules/nf-core/crisprcleanr/normalize/environment.yml @@ -1,7 +1,5 @@ -name: crisprcleanr_normalize channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::r-crisprcleanr=3.0.0 diff --git a/modules/nf-core/crisprcleanr/normalize/meta.yml b/modules/nf-core/crisprcleanr/normalize/meta.yml index e76a414fa33..f20492fd744 100644 --- a/modules/nf-core/crisprcleanr/normalize/meta.yml +++ b/modules/nf-core/crisprcleanr/normalize/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://github.com/francescojm/CRISPRcleanR/blob/master/Quick_start.pdf" tool_dev_url: "https://github.com/francescojm/CRISPRcleanR/tree/v3.0.0" doi: "10.1186/s12864-018-4989-y" - licence: "['MIT']" + licence: ["MIT"] input: - meta: type: map diff --git a/modules/nf-core/crumble/environment.yml b/modules/nf-core/crumble/environment.yml index de739022aec..80d35678bfa 100644 --- a/modules/nf-core/crumble/environment.yml +++ b/modules/nf-core/crumble/environment.yml @@ -1,7 +1,5 @@ -name: crumble channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::crumble=0.9.1 diff --git a/modules/nf-core/crumble/main.nf b/modules/nf-core/crumble/main.nf index 70cc1808e71..7eee3d5e0d3 100644 --- a/modules/nf-core/crumble/main.nf +++ b/modules/nf-core/crumble/main.nf @@ -28,7 +28,7 @@ process CRUMBLE { def extension = args.contains("-O sam") ? "sam" : args.contains("-O bam") ? "bam" : args.contains("-O cram") ? "cram" : - "sam" + "bam" def bedin = keepbed ? "-R ${keepbed}" : "" def bedout = bedout ? "-b ${prefix}.out.bed" : "" if ("$input" == "${prefix}.${extension}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" @@ -47,4 +47,25 @@ process CRUMBLE { crumble: $CRUMBLE_VERSION END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("-O sam") ? "sam" : + args.contains("-O bam") ? "bam" : + args.contains("-O cram") ? "cram" : + "bam" + def bedout = bedout ? "touch ${prefix}.out.bed" : '' + if ("$input" == "${prefix}.${extension}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + + def CRUMBLE_VERSION = '0.9.1' //WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${prefix}.${extension} + $bedout + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + crumble: $CRUMBLE_VERSION + END_VERSIONS + """ } diff --git a/modules/nf-core/crumble/meta.yml b/modules/nf-core/crumble/meta.yml index 59d7a79643f..66665f127f6 100644 --- a/modules/nf-core/crumble/meta.yml +++ b/modules/nf-core/crumble/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://github.com/jkbonfield/crumble" tool_dev_url: "https://github.com/jkbonfield/crumble" doi: "10.1093/bioinformatics/bty608" - licence: "['multiple BSD style licenses']" + licence: ["multiple BSD style licenses"] input: - meta: type: map diff --git a/modules/nf-core/crumble/tests/main.nf.test b/modules/nf-core/crumble/tests/main.nf.test new file mode 100644 index 00000000000..ee520a4a00b --- /dev/null +++ b/modules/nf-core/crumble/tests/main.nf.test @@ -0,0 +1,100 @@ + +nextflow_process { + + name "Test Process CRUMBLE" + script "../main.nf" + process "CRUMBLE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "crumble" + + test("test-crumble") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.bam, + bam(process.out.cram[0][1]).getHeaderMD5(), + process.out.sam, + process.out.bed, + process.out.versions + ).match() + } + ) + } + } + + test("test-crumble-bedout") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + input[1] = [] + input[2] = true + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.bam, + bam(process.out.cram[0][1]).getHeaderMD5(), + process.out.sam, + file(process.out.bed[0][1]).name, // empty + process.out.versions + ).match() + } + ) + } + } + + test("test-crumble-bedout-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam', checkIfExists: true) + ] + input[1] = [] + input[2] = true + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/crumble/tests/main.nf.test.snap b/modules/nf-core/crumble/tests/main.nf.test.snap new file mode 100644 index 00000000000..8e4f8327b40 --- /dev/null +++ b/modules/nf-core/crumble/tests/main.nf.test.snap @@ -0,0 +1,105 @@ +{ + "test-crumble-bedout-stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test" + }, + "test.out.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,42f81b0ca409a32457bf2e2017dcf8da" + ], + "bam": [ + + ], + "bed": [ + [ + { + "id": "test" + }, + "test.out.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + + ], + "versions": [ + "versions.yml:md5,42f81b0ca409a32457bf2e2017dcf8da" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:34:15.281434" + }, + "test-crumble": { + "content": [ + [ + + ], + "12375c4b3bcdf1fc3d246a1238e37d7c", + [ + + ], + [ + + ], + [ + "versions.yml:md5,42f81b0ca409a32457bf2e2017dcf8da" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:37:35.746591" + }, + "test-crumble-bedout": { + "content": [ + [ + + ], + "36e5cf603a948d5a1217d86242cba41a", + [ + + ], + "test.out.bed", + [ + "versions.yml:md5,42f81b0ca409a32457bf2e2017dcf8da" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:37:40.842672" + } +} \ No newline at end of file diff --git a/modules/nf-core/crumble/tests/nextflow.config b/modules/nf-core/crumble/tests/nextflow.config new file mode 100644 index 00000000000..ef7b3992ba9 --- /dev/null +++ b/modules/nf-core/crumble/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: CRUMBLE { + ext.args = "-O cram" + } +} diff --git a/modules/nf-core/csvtk/concat/environment.yml b/modules/nf-core/csvtk/concat/environment.yml index ac58390c39b..5b97e54e7b3 100644 --- a/modules/nf-core/csvtk/concat/environment.yml +++ b/modules/nf-core/csvtk/concat/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "csvtk_concat" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::csvtk=0.30.0" diff --git a/modules/nf-core/csvtk/join/environment.yml b/modules/nf-core/csvtk/join/environment.yml index 5b6c6468f4a..ea951bdb74c 100644 --- a/modules/nf-core/csvtk/join/environment.yml +++ b/modules/nf-core/csvtk/join/environment.yml @@ -1,7 +1,5 @@ -name: csvtk_join channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::csvtk=0.30.0 diff --git a/modules/nf-core/csvtk/split/environment.yml b/modules/nf-core/csvtk/split/environment.yml index ec08bb43908..ea951bdb74c 100644 --- a/modules/nf-core/csvtk/split/environment.yml +++ b/modules/nf-core/csvtk/split/environment.yml @@ -1,7 +1,5 @@ -name: csvtk_split channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::csvtk=0.30.0 diff --git a/modules/nf-core/custom/catadditionalfasta/environment.yml b/modules/nf-core/custom/catadditionalfasta/environment.yml index 5e757bf4ce1..1d80d11a940 100644 --- a/modules/nf-core/custom/catadditionalfasta/environment.yml +++ b/modules/nf-core/custom/catadditionalfasta/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "custom_catadditionalfasta" channels: - conda-forge - bioconda - - defaults dependencies: - - conda-forge::python=3.9.5" + - conda-forge::python=3.9.5 diff --git a/modules/nf-core/custom/catadditionalfasta/main.nf b/modules/nf-core/custom/catadditionalfasta/main.nf index 7289976e0c4..88ce4954bb2 100644 --- a/modules/nf-core/custom/catadditionalfasta/main.nf +++ b/modules/nf-core/custom/catadditionalfasta/main.nf @@ -1,7 +1,7 @@ process CUSTOM_CATADDITIONALFASTA { tag "$meta.id" - conda "conda-forge::python=3.9.5" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/python:3.9--1' : 'biocontainers/python:3.9--1' }" @@ -21,4 +21,17 @@ process CUSTOM_CATADDITIONALFASTA { script: template 'fasta2gtf.py' + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir out + touch out/genome_transcriptome.fasta + touch out/genome_transcriptome.gtf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | grep -v "Python ") + END_VERSIONS + """ } diff --git a/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py b/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py index 194a0416020..c7351e568a8 100755 --- a/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py +++ b/modules/nf-core/custom/catadditionalfasta/templates/fasta2gtf.py @@ -2,11 +2,11 @@ # Written by Pranathi Vemuri, later modified by Jonathan Manning and released under the MIT license. -import os import logging +import os import platform -from typing import Iterator, Tuple from itertools import groupby +from typing import Iterator, Tuple def setup_logging() -> logging.Logger: diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test index 7905f231d0e..a0ef5c91d62 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test @@ -31,12 +31,44 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.fasta).match("fasta") }, - { assert snapshot(process.out.gtf).match("gtf") }, - { assert snapshot(process.out.versions).match("versions") } + { assert snapshot( + process.out.fasta, + process.out.gtf, + process.out.versions + ).match() } ) } - } + test("sarscov2 - fastq - gtf - stub") { + + options "-stub" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ]) + input[1] = Channel.of([ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) + ]) + input[2] = 'test_biotype' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap index 8f63d9b472f..4767fd9a047 100644 --- a/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap +++ b/modules/nf-core/custom/catadditionalfasta/tests/main.nf.test.snap @@ -1,13 +1,5 @@ { - "versions": { - "content": [ - [ - "versions.yml:md5,26f47339777a265af57338ac7f0f8798" - ] - ], - "timestamp": "2023-12-20T20:52:55.242485" - }, - "gtf": { + "sarscov2 - fastq - gtf": { "content": [ [ [ @@ -15,24 +7,79 @@ "id": "test", "single_end": false }, - "genome_transcriptome.gtf:md5,bc88d95e7f27540e6b9906105d5be361" + "genome_transcriptome.fasta:md5,6a20c1a2e465519320a0d01f338f5cb5" ] - ] - ], - "timestamp": "2023-12-20T19:46:31.839377" - }, - "fasta": { - "content": [ + ], [ [ { "id": "test", "single_end": false }, - "genome_transcriptome.fasta:md5,6a20c1a2e465519320a0d01f338f5cb5" + "genome_transcriptome.gtf:md5,bc88d95e7f27540e6b9906105d5be361" ] + ], + [ + "versions.yml:md5,26f47339777a265af57338ac7f0f8798" ] ], - "timestamp": "2023-12-20T19:42:47.12194" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:19:28.965471" + }, + "sarscov2 - fastq - gtf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,451e5a1afee71b2b916b6f2ccc47e508" + ], + "fasta": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gtf": [ + [ + { + "id": "test", + "single_end": false + }, + "genome_transcriptome.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,451e5a1afee71b2b916b6f2ccc47e508" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:19:38.549677" } } \ No newline at end of file diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml index b48ced2690f..9d79af93928 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/environment.yml +++ b/modules/nf-core/custom/dumpsoftwareversions/environment.yml @@ -1,7 +1,5 @@ -name: custom_dumpsoftwareversions channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::multiqc=1.20 diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py index 9a493ace1d6..b83b32c4d42 100755 --- a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py @@ -3,10 +3,11 @@ """Provide functions to merge multiple versions.yml files.""" -import yaml import platform from textwrap import dedent +import yaml + def _make_versions_html(versions): """Generate a tabular HTML output of all versions for MultiQC.""" diff --git a/modules/nf-core/custom/getchromsizes/environment.yml b/modules/nf-core/custom/getchromsizes/environment.yml index 2a01695f120..da2df5e43a4 100644 --- a/modules/nf-core/custom/getchromsizes/environment.yml +++ b/modules/nf-core/custom/getchromsizes/environment.yml @@ -1,7 +1,6 @@ -name: custom_getchromsizes channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::samtools=1.16.1 + - bioconda::samtools=1.20 + - bioconda::htslib=1.20 diff --git a/modules/nf-core/custom/getchromsizes/main.nf b/modules/nf-core/custom/getchromsizes/main.nf index e8084ea2ca1..3edf7c221aa 100644 --- a/modules/nf-core/custom/getchromsizes/main.nf +++ b/modules/nf-core/custom/getchromsizes/main.nf @@ -4,8 +4,8 @@ process CUSTOM_GETCHROMSIZES { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : - 'biocontainers/samtools:1.16.1--h6899075_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.20--h50ea8bc_0' : + 'biocontainers/samtools:1.20--h50ea8bc_0' }" input: tuple val(meta), path(fasta) @@ -35,6 +35,9 @@ process CUSTOM_GETCHROMSIZES { """ touch ${fasta}.fai touch ${fasta}.sizes + if [[ "${fasta.extension}" == "gz" ]]; then + touch ${fasta}.gzi + fi cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test b/modules/nf-core/custom/getchromsizes/tests/main.nf.test index 9f6b5640e79..2f741a4bbed 100644 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test @@ -12,9 +12,6 @@ nextflow_process { test("test_custom_getchromsizes") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -31,15 +28,11 @@ nextflow_process { { assert snapshot(process.out).match() } ) } - } test("test_custom_getchromsizes_bgzip") { when { - params { - outdir = "$outputDir" - } process { """ input[0] = Channel.of([ @@ -56,7 +49,51 @@ nextflow_process { { assert snapshot(process.out).match() } ) } + } + + test("test_custom_getchromsizes - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + """ + } + } + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } } + test("test_custom_getchromsizes_bgzip - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap index 2e560bd3230..c37b284d761 100644 --- a/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap +++ b/modules/nf-core/custom/getchromsizes/tests/main.nf.test.snap @@ -1,4 +1,69 @@ { + "test_custom_getchromsizes_bgzip - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ], + "fai": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gzi": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.gzi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.gz.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:38:36.927106" + }, "test_custom_getchromsizes": { "content": [ { @@ -22,7 +87,7 @@ ], "3": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ], "fai": [ [ @@ -44,11 +109,15 @@ ] ], "versions": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ] } ], - "timestamp": "2024-01-17T17:48:35.562918" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T13:22:34.14237" }, "test_custom_getchromsizes_bgzip": { "content": [ @@ -78,7 +147,7 @@ ] ], "3": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ], "fai": [ [ @@ -105,10 +174,69 @@ ] ], "versions": [ - "versions.yml:md5,45a83c5f3dddbc5dcab30035169f7ce8" + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-20T13:23:06.241379" + }, + "test_custom_getchromsizes - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" + ], + "fai": [ + [ + { + "id": "test" + }, + "genome.fasta.fai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "gzi": [ + + ], + "sizes": [ + [ + { + "id": "test" + }, + "genome.fasta.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0d5a7c33bddcb1edad6bf0705b258e6f" ] } ], - "timestamp": "2024-01-17T17:49:02.562311" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T12:24:05.697845" } } \ No newline at end of file diff --git a/modules/nf-core/custom/gtffilter/environment.yml b/modules/nf-core/custom/gtffilter/environment.yml new file mode 100644 index 00000000000..800eff9bce1 --- /dev/null +++ b/modules/nf-core/custom/gtffilter/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "conda-forge::python=3.9.5" diff --git a/modules/nf-core/custom/gtffilter/main.nf b/modules/nf-core/custom/gtffilter/main.nf new file mode 100644 index 00000000000..b682ff8c556 --- /dev/null +++ b/modules/nf-core/custom/gtffilter/main.nf @@ -0,0 +1,37 @@ +process CUSTOM_GTFFILTER { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.9--1' : + 'biocontainers/python:3.9--1' }" + + input: + tuple val(meta), path(gtf) + tuple val(meta2), path(fasta) + + output: + tuple val(meta), path("${prefix}.${suffix}"), emit: gtf + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + prefix = task.ext.prefix ?: "${meta.id}" + suffix = task.ext.suffix ?: "gtf" + (gtf.extension == 'gz' ? '.gz' : '') + template 'gtffilter.py' + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + suffix = task.ext.suffix ?: "gtf" + (gtf.extension == 'gz' ? '.gz' : '') + """ + touch ${prefix}.${suffix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version 2>&1 | cut -d ' ' -f 2) + END_VERSIONS + """ +} diff --git a/modules/nf-core/custom/gtffilter/meta.yml b/modules/nf-core/custom/gtffilter/meta.yml new file mode 100644 index 00000000000..2c8692218de --- /dev/null +++ b/modules/nf-core/custom/gtffilter/meta.yml @@ -0,0 +1,51 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "custom_gtffilter" +description: Filter a gtf file to keep only regions that are located on a chromosome represented in a given fasta file +keywords: + - gtf + - fasta + - filter +tools: + - "gtffilter": + description: "Filter a gtf file to keep only regions that are located on a chromosome represented in a given fasta file" + tool_dev_url: "https://github.com/nf-core/modules/blob/master/modules/nf-core/custom/gtffilter/main.nf" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + + - gtf: + type: file + description: GTF file + pattern: "*.{gtf}" + + - fasta: + type: file + description: Genome fasta file + pattern: "*.{fasta,fa}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + + - gtf: + type: file + description: Filtered GTF file + pattern: "*.{gtf}" + + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@nictru" +maintainers: + - "@nictru" diff --git a/modules/nf-core/custom/gtffilter/templates/gtffilter.py b/modules/nf-core/custom/gtffilter/templates/gtffilter.py new file mode 100644 index 00000000000..0ac964e57a9 --- /dev/null +++ b/modules/nf-core/custom/gtffilter/templates/gtffilter.py @@ -0,0 +1,124 @@ +#!/usr/bin/env python + +# Written by Olga Botvinnik with subsequent reworking by Jonathan Manning and Nico Trummer. + +# MIT License + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import gzip +import logging +import platform +import re +import statistics +from typing import Set + +# Create a logger +logging.basicConfig(format="%(name)s - %(asctime)s %(levelname)s: %(message)s") +logger = logging.getLogger("fasta_gtf_filter") +logger.setLevel(logging.INFO) + + +def format_yaml_like(data: dict, indent: int = 0) -> str: + """Formats a dictionary to a YAML-like string. + + Args: + data (dict): The dictionary to format. + indent (int): The current indentation level. + + Returns: + str: A string formatted as YAML. + """ + yaml_str = "" + for key, value in data.items(): + spaces = " " * indent + if isinstance(value, dict): + yaml_str += f"{spaces}{key}:\\n{format_yaml_like(value, indent + 1)}" + else: + yaml_str += f"{spaces}{key}: {value}\\n" + return yaml_str + + +def extract_fasta_seq_names(fasta_name: str) -> Set[str]: + """Extracts the sequence names from a FASTA file.""" + + is_gz = fasta_name.endswith(".gz") + open_fn = gzip.open if is_gz else open + + with open_fn(fasta_name) as fasta: + sequences = set() + for line in fasta: + line = line.decode("utf-8") if is_gz else line + if line.startswith(">"): + sequences.add(line[1:].split(None, 1)[0]) + + return sequences + + +def tab_delimited(file: str) -> float: + """Check if file is tab-delimited and return median number of tabs.""" + with open(file) as f: + data = f.read(102400) + return statistics.median(line.count("\\t") for line in data.split("\\n")) + + +def filter_gtf(fasta: str, gtf_in: str, filtered_gtf_out: str, skip_transcript_id_check: bool) -> None: + """Filter GTF file based on FASTA sequence names.""" + if tab_delimited(gtf_in) != 8: + raise ValueError("Invalid GTF file: Expected 9 tab-separated columns.") + + seq_names_in_genome = extract_fasta_seq_names(fasta) + logger.info(f"Extracted chromosome sequence names from {fasta}") + logger.debug("All sequence IDs from FASTA: " + ", ".join(sorted(seq_names_in_genome))) + + seq_names_in_gtf = set() + try: + is_gz = gtf_in.endswith(".gz") + open_fn = gzip.open if is_gz else open + with open_fn(gtf_in) as gtf, open_fn(filtered_gtf_out, "wb" if is_gz else "w") as out: + line_count = 0 + for line in gtf: + line = line.decode("utf-8") if is_gz else line + seq_name = line.split("\\t")[0] + seq_names_in_gtf.add(seq_name) # Add sequence name to the set + + if seq_name in seq_names_in_genome: + if skip_transcript_id_check or re.search(r'transcript_id "([^"]+)"', line): + out.write(line.encode() if is_gz else line) + line_count += 1 + + if line_count == 0: + raise ValueError("All GTF lines removed by filters") + + except OSError as e: + logger.error(f"File operation failed: {e}") + return + + logger.debug("All sequence IDs from GTF: " + ", ".join(sorted(seq_names_in_gtf))) + logger.info(f"Extracted {line_count} matching sequences from {gtf_in} into {filtered_gtf_out}") + + +filter_gtf("${fasta}", "${gtf}", "${prefix}.${suffix}", False) + +# Versions + +versions = {"${task.process}": {"python": platform.python_version()}} + +with open("versions.yml", "w") as f: + f.write(format_yaml_like(versions)) diff --git a/modules/nf-core/custom/gtffilter/tests/main.nf.test b/modules/nf-core/custom/gtffilter/tests/main.nf.test new file mode 100644 index 00000000000..252d11a1635 --- /dev/null +++ b/modules/nf-core/custom/gtffilter/tests/main.nf.test @@ -0,0 +1,115 @@ +nextflow_process { + + name "Test Process CUSTOM_GTFFILTER" + script "../main.nf" + process "CUSTOM_GTFFILTER" + + tag "modules" + tag "modules_nfcore" + tag "custom" + tag "custom/gtffilter" + + test("test_custom_gtffilter") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ] + input[1] = [ + [ id: 'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_custom_gtffilter_gzip") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ] + input[1] = [ + [ id: 'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_custom_gtffilter - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ] + input[1] = [ + [ id: 'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_custom_gtffilter_gzip - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gtf', checkIfExists: true) + ] + input[1] = [ + [ id: 'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/custom/gtffilter/tests/main.nf.test.snap b/modules/nf-core/custom/gtffilter/tests/main.nf.test.snap new file mode 100644 index 00000000000..787dd42e11c --- /dev/null +++ b/modules/nf-core/custom/gtffilter/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "test_custom_gtffilter_gzip": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gtf:md5,aa8b2aa1e0b5fbbba3b04d471e1b0535" + ] + ], + "1": [ + "versions.yml:md5,39c43040514c93566d2e3dca39e54cf2" + ], + "gtf": [ + [ + { + "id": "test" + }, + "test.gtf:md5,aa8b2aa1e0b5fbbba3b04d471e1b0535" + ] + ], + "versions": [ + "versions.yml:md5,39c43040514c93566d2e3dca39e54cf2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T14:23:11.091273747" + }, + "test_custom_gtffilter": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gtf:md5,aa8b2aa1e0b5fbbba3b04d471e1b0535" + ] + ], + "1": [ + "versions.yml:md5,39c43040514c93566d2e3dca39e54cf2" + ], + "gtf": [ + [ + { + "id": "test" + }, + "test.gtf:md5,aa8b2aa1e0b5fbbba3b04d471e1b0535" + ] + ], + "versions": [ + "versions.yml:md5,39c43040514c93566d2e3dca39e54cf2" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T14:23:03.654104046" + }, + "test_custom_gtffilter_gzip - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,4547ffaa530b6d65b2dd1f607d7f85e3" + ], + "gtf": [ + [ + { + "id": "test" + }, + "test.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4547ffaa530b6d65b2dd1f607d7f85e3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T14:23:24.216284615" + }, + "test_custom_gtffilter - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,4547ffaa530b6d65b2dd1f607d7f85e3" + ], + "gtf": [ + [ + { + "id": "test" + }, + "test.gtf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4547ffaa530b6d65b2dd1f607d7f85e3" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-15T14:23:17.765499066" + } +} \ No newline at end of file diff --git a/modules/nf-core/custom/gtffilter/tests/tags.yml b/modules/nf-core/custom/gtffilter/tests/tags.yml new file mode 100644 index 00000000000..34dda21789c --- /dev/null +++ b/modules/nf-core/custom/gtffilter/tests/tags.yml @@ -0,0 +1,2 @@ +custom/gtffilter: + - "modules/nf-core/custom/gtffilter/**" diff --git a/modules/nf-core/custom/matrixfilter/environment.yml b/modules/nf-core/custom/matrixfilter/environment.yml index 322c673ea2a..fb4ebfaa36e 100644 --- a/modules/nf-core/custom/matrixfilter/environment.yml +++ b/modules/nf-core/custom/matrixfilter/environment.yml @@ -1,7 +1,5 @@ -name: custom_matrixfilter channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::r-base=4.2.1 diff --git a/modules/nf-core/custom/matrixfilter/meta.yml b/modules/nf-core/custom/matrixfilter/meta.yml index 3ba2d0cb829..99d7ca4e864 100644 --- a/modules/nf-core/custom/matrixfilter/meta.yml +++ b/modules/nf-core/custom/matrixfilter/meta.yml @@ -72,6 +72,12 @@ input: Minimum observations that must have a numeric value (not be NA) to retain the row/ feature (e.g. gene). Supplied via task.ext.args as --minimum_samples_not_na. Overrides minimum_proportion_not_na + - most_variant_features: + type: integer + description: | + Variance filter for the number of row/ feature (e.g. gene) observations returned. + Supplied via task.ext.args as --most_variant_features + output: - versions: type: file diff --git a/modules/nf-core/custom/matrixfilter/templates/matrixfilter.R b/modules/nf-core/custom/matrixfilter/templates/matrixfilter.R old mode 100644 new mode 100755 index 331f1a0607c..7e53938a7cb --- a/modules/nf-core/custom/matrixfilter/templates/matrixfilter.R +++ b/modules/nf-core/custom/matrixfilter/templates/matrixfilter.R @@ -69,6 +69,21 @@ read_delim_flexible <- function(file, header = TRUE, row.names = NULL, nrows = - ) } +#' Identify rows that are among the top n most variant +#' +#' @param matrix_data Matrix object +#' +#' @return output Boolean vector + +most_variant_test <- function(matrix_data) { + + # Determine the indices of the top variant rows based on variance + top_indices <- order(-apply(matrix_data, 1, var, na.rm = TRUE))[1:opt\$most_variant_features] + + # Return a boolean vector indicating if each row is among the top variant ones + 1:nrow(matrix_data) %in% top_indices +} + # Set up default options opt <- list( @@ -80,7 +95,8 @@ opt <- list( minimum_proportion = 0, grouping_variable = NULL, minimum_proportion_not_na = 0.5, - minimum_samples_not_na = NULL + minimum_samples_not_na = NULL, + most_variant_features = NULL ) opt_types <- lapply(opt, class) @@ -176,6 +192,14 @@ boolean_matrix <- t(apply(abundance_matrix, 1, function(row) { sapply(tests, function(f) f(row)) })) +# Apply the 'most_variant_test' function to identify the most variant rows and add +# the result to the boolean matrix + +if (! is.null(opt\$most_variant_features)) { + most_variant_vectors <- most_variant_test(abundance_matrix) + boolean_matrix <- cbind(boolean_matrix, most_variant_vectors) +} + # We will retain features passing all tests keep <- apply(boolean_matrix, 1, all) diff --git a/modules/nf-core/custom/sratoolsncbisettings/environment.yml b/modules/nf-core/custom/sratoolsncbisettings/environment.yml index 44a1b008e2e..cd4c3fbe011 100644 --- a/modules/nf-core/custom/sratoolsncbisettings/environment.yml +++ b/modules/nf-core/custom/sratoolsncbisettings/environment.yml @@ -1,7 +1,5 @@ -name: custom_sratoolsncbisettings channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::sra-tools=3.0.8 diff --git a/modules/nf-core/custom/tabulartogseacls/environment.yml b/modules/nf-core/custom/tabulartogseacls/environment.yml index 96c3276dfb6..c7eb9bd1c3c 100644 --- a/modules/nf-core/custom/tabulartogseacls/environment.yml +++ b/modules/nf-core/custom/tabulartogseacls/environment.yml @@ -1,7 +1,5 @@ -name: custom_tabulartogseacls channels: - conda-forge - bioconda - - defaults dependencies: - - conda-forge::coreutils=9.1 + - conda-forge::coreutils=8.30 diff --git a/modules/nf-core/custom/tabulartogseagct/environment.yml b/modules/nf-core/custom/tabulartogseagct/environment.yml index 73cd511d2c6..c7eb9bd1c3c 100644 --- a/modules/nf-core/custom/tabulartogseagct/environment.yml +++ b/modules/nf-core/custom/tabulartogseagct/environment.yml @@ -1,7 +1,5 @@ -name: custom_tabulartogseagct channels: - conda-forge - bioconda - - defaults dependencies: - - conda-forge::coreutils=9.1 + - conda-forge::coreutils=8.30 diff --git a/modules/nf-core/custom/tx2gene/environment.yml b/modules/nf-core/custom/tx2gene/environment.yml index a859dc881fe..9f5f9fb9b47 100644 --- a/modules/nf-core/custom/tx2gene/environment.yml +++ b/modules/nf-core/custom/tx2gene/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "custom_tx2gene" channels: - conda-forge - bioconda - - defaults dependencies: - python=3.9.5 diff --git a/modules/nf-core/custom/tx2gene/templates/tx2gene.py b/modules/nf-core/custom/tx2gene/templates/tx2gene.py index 8c2e3b1f432..4d769513ded 100755 --- a/modules/nf-core/custom/tx2gene/templates/tx2gene.py +++ b/modules/nf-core/custom/tx2gene/templates/tx2gene.py @@ -2,13 +2,12 @@ # Written by Lorena Pantano with subsequent reworking by Jonathan Manning. Released under the MIT license. -import logging -import argparse import glob +import logging import os import platform import re -from collections import Counter, defaultdict, OrderedDict +from collections import Counter, OrderedDict from collections.abc import Set from typing import Dict @@ -52,7 +51,7 @@ def read_top_transcripts(quant_dir: str, file_pattern: str) -> Set[str]: try: # Find the quantification file within the directory quant_file_path = glob.glob(os.path.join(quant_dir, "*", file_pattern))[0] - with open(quant_file_path, "r") as file_handle: + with open(quant_file_path) as file_handle: # Read the file and extract the top 100 transcripts return {line.split()[0] for i, line in enumerate(file_handle) if i > 0 and i <= 100} except IndexError: diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test b/modules/nf-core/custom/tx2gene/tests/main.nf.test index b155927985c..4cbb8d4efb4 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test @@ -10,22 +10,21 @@ nextflow_process { tag "custom/tx2gene" tag "untar" - setup { + test("saccharomyces_cerevisiae - gtf") { - run("UNTAR") { - script "../../../untar/main.nf" - process { - """ - input[0] = Channel.of([ - [ id:'test'], // meta map - file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) - ]) - """ + setup { + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) + ]) + """ + } } } - } - - test("saccharomyces_cerevisiae - gtf") { when { process { @@ -45,8 +44,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tx2gene).match('tx2gene') }, - { assert snapshot(process.out.versions).match('versions') } + { assert snapshot(process.out).match() } ) } } @@ -55,6 +53,20 @@ nextflow_process { options "-stub" + setup { + run("UNTAR") { + script "../../../untar/main.nf" + process { + """ + input[0] = Channel.of([ + [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/eukaryotes/saccharomyces_cerevisiae/kallisto_results.tar.gz', checkIfExists: true) + ]) + """ + } + } + } + when { process { """ @@ -73,8 +85,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.tx2gene).match('tx2gene - stub') }, - { assert snapshot(process.out.versions).match('versions - stub') } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap index 1e76e10d6d0..c19f10f7162 100644 --- a/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap +++ b/modules/nf-core/custom/tx2gene/tests/main.nf.test.snap @@ -1,60 +1,68 @@ { - "versions": { + "saccharomyces_cerevisiae - gtf": { "content": [ - [ - "versions.yml:md5,fb8145d7fbc6043ba031249b23ecda50" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-26T13:14:18.218251" - }, - "tx2gene": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" + { + "0": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" + ] + ], + "1": [ + "versions.yml:md5,fb8145d7fbc6043ba031249b23ecda50" + ], + "tx2gene": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,0e2418a69d2eba45097ebffc2f700bfe" + ] + ], + "versions": [ + "versions.yml:md5,fb8145d7fbc6043ba031249b23ecda50" ] - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.2" }, - "timestamp": "2024-02-26T13:14:18.21054" + "timestamp": "2024-07-05T13:13:11.305047" }, - "tx2gene - stub": { + "saccharomyces_cerevisiae - gtf - stub": { "content": [ - [ - [ - { - "id": "test" - }, - "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + { + "0": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,5613eefbca41377128f1d8dc09b9fb60" + ], + "tx2gene": [ + [ + { + "id": "test" + }, + "test.tx2gene.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,5613eefbca41377128f1d8dc09b9fb60" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.01.0" - }, - "timestamp": "2024-02-26T13:14:25.915434" - }, - "versions - stub": { - "content": [ - [ - "versions.yml:md5,5613eefbca41377128f1d8dc09b9fb60" - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.01.0" + "nextflow": "24.04.3" }, - "timestamp": "2024-02-26T13:14:25.919243" + "timestamp": "2024-07-10T15:15:34.064489" } } \ No newline at end of file diff --git a/modules/nf-core/cutadapt/environment.yml b/modules/nf-core/cutadapt/environment.yml index 288ea6f0618..dfdbd1c2a8e 100644 --- a/modules/nf-core/cutadapt/environment.yml +++ b/modules/nf-core/cutadapt/environment.yml @@ -1,7 +1,5 @@ -name: cutadapt channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cutadapt=4.6 diff --git a/modules/nf-core/cutadapt/tests/main.nf.test b/modules/nf-core/cutadapt/tests/main.nf.test index b7ea6ef9fe7..36927bd7fbe 100644 --- a/modules/nf-core/cutadapt/tests/main.nf.test +++ b/modules/nf-core/cutadapt/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { input[0] = [ [ id: 'test', single_end:true ], [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ] """ @@ -47,8 +47,8 @@ nextflow_process { input[0] = [ [ id: 'test', single_end:false ], [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] """ diff --git a/modules/nf-core/cutesv/environment.yml b/modules/nf-core/cutesv/environment.yml index e757dfc275f..4d17f4eda5f 100644 --- a/modules/nf-core/cutesv/environment.yml +++ b/modules/nf-core/cutesv/environment.yml @@ -1,7 +1,5 @@ -name: cutesv channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::cutesv=2.0.2 diff --git a/modules/nf-core/cutesv/meta.yml b/modules/nf-core/cutesv/meta.yml index 9054101f125..480efafd099 100644 --- a/modules/nf-core/cutesv/meta.yml +++ b/modules/nf-core/cutesv/meta.yml @@ -3,6 +3,7 @@ description: structural-variant calling with cutesv keywords: - cutesv - structural-variant calling + - sv tools: - cutesv: description: a clustering-and-refinement method to analyze the signatures to implement sensitive SV detection. diff --git a/modules/nf-core/damageprofiler/environment.yml b/modules/nf-core/damageprofiler/environment.yml index e91d4077c29..83cbf093414 100644 --- a/modules/nf-core/damageprofiler/environment.yml +++ b/modules/nf-core/damageprofiler/environment.yml @@ -1,7 +1,5 @@ -name: damageprofiler channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::damageprofiler=1.1 diff --git a/modules/nf-core/damageprofiler/meta.yml b/modules/nf-core/damageprofiler/meta.yml index 8a9307f1a25..7cf1a4a5146 100644 --- a/modules/nf-core/damageprofiler/meta.yml +++ b/modules/nf-core/damageprofiler/meta.yml @@ -47,7 +47,7 @@ output: description: File containing software versions pattern: "versions.yml" - results: - type: dir + type: directory description: DamageProfiler results directory pattern: "*/*" authors: diff --git a/modules/nf-core/dastool/dastool/environment.yml b/modules/nf-core/dastool/dastool/environment.yml index 8c40a88b6f9..0ede57bfb27 100644 --- a/modules/nf-core/dastool/dastool/environment.yml +++ b/modules/nf-core/dastool/dastool/environment.yml @@ -1,7 +1,5 @@ -name: dastool_dastool channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::das_tool=1.1.6 diff --git a/modules/nf-core/dastool/fastatocontig2bin/environment.yml b/modules/nf-core/dastool/fastatocontig2bin/environment.yml index 1085cd27cff..0ede57bfb27 100644 --- a/modules/nf-core/dastool/fastatocontig2bin/environment.yml +++ b/modules/nf-core/dastool/fastatocontig2bin/environment.yml @@ -1,7 +1,5 @@ -name: dastool_fastatocontig2bin channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::das_tool=1.1.6 diff --git a/modules/nf-core/dastool/fastatocontig2bin/meta.yml b/modules/nf-core/dastool/fastatocontig2bin/meta.yml index 8ab64d65ee5..bbecfd27ef7 100644 --- a/modules/nf-core/dastool/fastatocontig2bin/meta.yml +++ b/modules/nf-core/dastool/fastatocontig2bin/meta.yml @@ -31,7 +31,7 @@ input: description: Fasta of list of fasta files recommended to be gathered via with .collect() of bins pattern: "*.{fa,fa.gz,fas,fas.gz,fna,fna.gz,fasta,fasta.gz}" - extension: - type: val + type: string description: Fasta file extension (fa | fas | fasta | ...), without .gz suffix, if gzipped input. output: - meta: diff --git a/modules/nf-core/dastool/scaffolds2bin/environment.yml b/modules/nf-core/dastool/scaffolds2bin/environment.yml index 27ca5da19fb..507ee795b47 100644 --- a/modules/nf-core/dastool/scaffolds2bin/environment.yml +++ b/modules/nf-core/dastool/scaffolds2bin/environment.yml @@ -1,7 +1,5 @@ -name: dastool_scaffolds2bin channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::das_tool=1.1.3 diff --git a/modules/nf-core/dastool/scaffolds2bin/meta.yml b/modules/nf-core/dastool/scaffolds2bin/meta.yml index f439f41f47d..f57c50ab017 100644 --- a/modules/nf-core/dastool/scaffolds2bin/meta.yml +++ b/modules/nf-core/dastool/scaffolds2bin/meta.yml @@ -31,7 +31,7 @@ input: description: Fasta or list of fasta files recommended to be gathered via with .collect() of bins pattern: "*.{fa,fa.gz,fas,fas.gz,fna,fna.gz,fasta,fasta.gz}" - extension: - type: val + type: string description: Fasta file extension (fa | fas | fasta | ...), but without .gz suffix, even if gzipped input. output: - meta: diff --git a/modules/nf-core/datavzrd/environment.yml b/modules/nf-core/datavzrd/environment.yml new file mode 100644 index 00000000000..06593466ffa --- /dev/null +++ b/modules/nf-core/datavzrd/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - conda-forge::datavzrd==2.36.12 diff --git a/modules/nf-core/datavzrd/main.nf b/modules/nf-core/datavzrd/main.nf new file mode 100644 index 00000000000..a8a62612b51 --- /dev/null +++ b/modules/nf-core/datavzrd/main.nf @@ -0,0 +1,63 @@ +process DATAVZRD { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'oras://community.wave.seqera.io/library/datavzrd:2.36.12--bb93c8c988b7a9af': + 'community.wave.seqera.io/library/datavzrd:2.36.12--593eb75e566b7f2a' }" + + input: + tuple val(meta), file(config_file), file(table) + + output: + tuple val(meta), path("${prefix}"), emit: report + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir ${prefix} + datavzrd \\ + ${args} \\ + ${config_file} \\ + --output ${prefix} \\ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + datavzrd: \$(echo \$( datavzrd --version | sed -e 's/[^0-9.]//g' )) + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir ${prefix} + mkdir ${prefix}/static + mkdir ${prefix}/network + mkdir ${prefix}/network/data + mkdir ${prefix}/network/plots + touch ./${prefix}/index.html + touch ./${prefix}/static/bootstrap.min.css + touch ./${prefix}/static/bootstrap-select.min.css + touch ./${prefix}/static/bootstrap-table.min.css + touch ./${prefix}/static/bootstrap-table-fixed-columns.min.css + touch ./${prefix}/static/bundle.js + touch ./${prefix}/static/datavzrd.css + touch ./${prefix}/network/index_1.html + touch ./${prefix}/network/config.js + touch ./${prefix}/network/functions.js + touch ./${prefix}/network/heatmap.js + touch ./${prefix}/network/data/data_1.js + touch ./${prefix}/network/plots/plot_0.js + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + datavzrd: \$(echo \$( datavzrd --version | sed -e 's/[^0-9.]//g' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/datavzrd/meta.yml b/modules/nf-core/datavzrd/meta.yml new file mode 100644 index 00000000000..8ac5f55d0d5 --- /dev/null +++ b/modules/nf-core/datavzrd/meta.yml @@ -0,0 +1,46 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "datavzrd" +description: Datavzrd is a tool to create visual HTML reports from collections of CSV/TSV tables. +keywords: + - visualisation + - tsv + - csv +tools: + - datavzrd: + description: Datavzrd is a tool to create visual HTML reports from collections of CSV/TSV tables. + homepage: https://datavzrd.github.io/ + documentation: https://datavzrd.github.io/docs/index.html + tool_dev_url: https://github.com/datavzrd/datavzrd + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - config_file: + type: file + description: configuration file used for visualisation + pattern: "*.{yml,yaml}" + - table: + type: file + description: file used for visualisation + pattern: "*.{tsv,csv}" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - report: + type: directory + description: directory with HTML report of provided CSV/TSV files + pattern: "/output/" + +authors: + - "@vickylaram" + - "@famosab" +maintainers: + - "@famosab" diff --git a/modules/nf-core/datavzrd/tests/main.nf.test b/modules/nf-core/datavzrd/tests/main.nf.test new file mode 100644 index 00000000000..86bd849a0cf --- /dev/null +++ b/modules/nf-core/datavzrd/tests/main.nf.test @@ -0,0 +1,112 @@ +nextflow_process { + name "Test Process DATAVZRD" + script "../main.nf" + process "DATAVZRD" + tag "modules" + tag "modules_nfcore" + tag "datavzrd" + + test("csv") { + + when { + process { + """ + input[0] = [ [id: "csv_config"], + file(params.modules_testdata_base_path + 'generic/config/config_test.datavzrd.yaml', checkIfExists: true), + file(params.modules_testdata_base_path + 'generic/csv/test.csv', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.report[0][1]) + .list() + .collect { getRecursiveFileNames(it, process.out.report[0][1]) } + .flatten() + ).match("csv") + } + ) + } + } + + test("tsv") { + + when { + process { + """ + input[0] = [ [id: "tsv_config"], + file(params.modules_testdata_base_path + 'generic/config/config_network.datavzrd.yaml', checkIfExists: true), + file(params.modules_testdata_base_path + 'generic/tsv/network.tsv', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + path(process.out.report[0][1]) + .list() + .collect { getRecursiveFileNames(it, process.out.report[0][1]) } + .flatten() + ).match("tsv") + } + ) + } + } + + test("csv - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [id: "csv_config"], + file(params.modules_testdata_base_path + 'generic/config/config_test.datavzrd.yaml', checkIfExists: true), + file(params.modules_testdata_base_path + 'generic/csv/test.csv', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("no_config_file") { + when { + process { + """ + input[0] = [] + """ + } + } + + then { + assertAll( + { assert process.failed }, + { assert process.out['report'].isEmpty() }, + { assert snapshot(process.out).match() } + ) + } + } +} + +def getRecursiveFileNames(fileOrDir, outputDir) { + if(file(fileOrDir.toString()).isDirectory()) { + return fileOrDir.list().collect { getRecursiveFileNames(it, outputDir) } + } + return fileOrDir.toString().replace("${outputDir}/", "") +} diff --git a/modules/nf-core/datavzrd/tests/main.nf.test.snap b/modules/nf-core/datavzrd/tests/main.nf.test.snap new file mode 100644 index 00000000000..d57df8a44e4 --- /dev/null +++ b/modules/nf-core/datavzrd/tests/main.nf.test.snap @@ -0,0 +1,162 @@ +{ + "csv - stub": { + "content": [ + { + "0": [ + [ + { + "id": "csv_config" + }, + [ + "index.html:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "config.js:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "data_1.js:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "functions.js:md5,d41d8cd98f00b204e9800998ecf8427e", + "heatmap.js:md5,d41d8cd98f00b204e9800998ecf8427e", + "index_1.html:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "plot_0.js:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + "bootstrap-select.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bootstrap-table-fixed-columns.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bootstrap-table.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bootstrap.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bundle.js:md5,d41d8cd98f00b204e9800998ecf8427e", + "datavzrd.css:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ] + ], + "1": [ + "versions.yml:md5,4c539593d78c0a07ede5759e0ce5ade8" + ], + "report": [ + [ + { + "id": "csv_config" + }, + [ + "index.html:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "config.js:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "data_1.js:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "functions.js:md5,d41d8cd98f00b204e9800998ecf8427e", + "heatmap.js:md5,d41d8cd98f00b204e9800998ecf8427e", + "index_1.html:md5,d41d8cd98f00b204e9800998ecf8427e", + [ + "plot_0.js:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + "bootstrap-select.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bootstrap-table-fixed-columns.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bootstrap-table.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bootstrap.min.css:md5,d41d8cd98f00b204e9800998ecf8427e", + "bundle.js:md5,d41d8cd98f00b204e9800998ecf8427e", + "datavzrd.css:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ] + ], + "versions": [ + "versions.yml:md5,4c539593d78c0a07ede5759e0ce5ade8" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-06-26T10:16:55.267548327" + }, + "tsv": { + "content": [ + [ + "versions.yml:md5,4c539593d78c0a07ede5759e0ce5ade8" + ], + [ + "index.html", + "network/config.js", + "network/data/data_1.js", + "network/functions.js", + "network/heatmap.js", + "network/index_1.html", + "network/plots/plot_0.js", + "network/plots/plot_1.js", + "network/plots/plot_2.js", + "network/plots/plot_3.js", + "static/bootstrap-select.min.css", + "static/bootstrap-table-fixed-columns.min.css", + "static/bootstrap-table.min.css", + "static/bootstrap.min.css", + "static/bundle.js", + "static/datavzrd.css" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-06-26T10:15:02.495557702" + }, + "no_config_file": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "report": [ + + ], + "versions": [ + + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-06-26T10:15:09.362847938" + }, + "csv": { + "content": [ + [ + "versions.yml:md5,4c539593d78c0a07ede5759e0ce5ade8" + ], + [ + "index.html", + "static/bootstrap-select.min.css", + "static/bootstrap-table-fixed-columns.min.css", + "static/bootstrap-table.min.css", + "static/bootstrap.min.css", + "static/bundle.js", + "static/datavzrd.css", + "test/config.js", + "test/data/data_1.js", + "test/functions.js", + "test/heatmap.js", + "test/index_1.html", + "test/plots/plot_0.js", + "test/plots/plot_1.js", + "test/plots/plot_2.js", + "test/plots/plot_3.js" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-06-26T10:14:58.495338891" + } +} \ No newline at end of file diff --git a/modules/nf-core/datavzrd/tests/tags.yml b/modules/nf-core/datavzrd/tests/tags.yml new file mode 100644 index 00000000000..e6eeb99d7ce --- /dev/null +++ b/modules/nf-core/datavzrd/tests/tags.yml @@ -0,0 +1,2 @@ +datavzrd: + - "modules/nf-core/datavzrd/**" diff --git a/modules/nf-core/dedup/environment.yml b/modules/nf-core/dedup/environment.yml index e3e3866143d..66c1b235d3f 100644 --- a/modules/nf-core/dedup/environment.yml +++ b/modules/nf-core/dedup/environment.yml @@ -1,7 +1,5 @@ -name: dedup channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dedup=0.12.8 diff --git a/modules/nf-core/deeparg/downloaddata/environment.yml b/modules/nf-core/deeparg/downloaddata/environment.yml index 87435be5b09..074c6501fcb 100644 --- a/modules/nf-core/deeparg/downloaddata/environment.yml +++ b/modules/nf-core/deeparg/downloaddata/environment.yml @@ -1,7 +1,5 @@ -name: deeparg_downloaddata channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::deeparg=1.0.4 diff --git a/modules/nf-core/deeparg/predict/environment.yml b/modules/nf-core/deeparg/predict/environment.yml index aa6867011c9..074c6501fcb 100644 --- a/modules/nf-core/deeparg/predict/environment.yml +++ b/modules/nf-core/deeparg/predict/environment.yml @@ -1,7 +1,5 @@ -name: deeparg_predict channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::deeparg=1.0.4 diff --git a/modules/nf-core/deeparg/predict/tests/main.nf.test b/modules/nf-core/deeparg/predict/tests/main.nf.test index 2c48e963d87..4841c6eb489 100644 --- a/modules/nf-core/deeparg/predict/tests/main.nf.test +++ b/modules/nf-core/deeparg/predict/tests/main.nf.test @@ -29,7 +29,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true), 'LS' ] input[1] = DEEPARG_DOWNLOADDATA.out.db @@ -61,7 +61,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/genome/genome.fna.gz', checkIfExists: true), 'LS' ] input[1] = DEEPARG_DOWNLOADDATA.out.db diff --git a/modules/nf-core/deepbgc/download/environment.yml b/modules/nf-core/deepbgc/download/environment.yml index 84d467f07c1..36cb903fa63 100644 --- a/modules/nf-core/deepbgc/download/environment.yml +++ b/modules/nf-core/deepbgc/download/environment.yml @@ -1,7 +1,5 @@ -name: deepbgc_download channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::deepbgc=0.1.31 diff --git a/modules/nf-core/deepbgc/pipeline/environment.yml b/modules/nf-core/deepbgc/pipeline/environment.yml index fe0087a2486..36cb903fa63 100644 --- a/modules/nf-core/deepbgc/pipeline/environment.yml +++ b/modules/nf-core/deepbgc/pipeline/environment.yml @@ -1,7 +1,5 @@ -name: deepbgc_pipeline channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::deepbgc=0.1.31 diff --git a/modules/nf-core/deepbgc/pipeline/meta.yml b/modules/nf-core/deepbgc/pipeline/meta.yml index 6c29cebc8df..5f939eaa4fd 100644 --- a/modules/nf-core/deepbgc/pipeline/meta.yml +++ b/modules/nf-core/deepbgc/pipeline/meta.yml @@ -27,6 +27,9 @@ input: type: file description: FASTA/GenBank/Pfam CSV file pattern: "*.{fasta,fa,fna,gbk,csv}" + - db: + type: directory + description: Database path output: - meta: type: map diff --git a/modules/nf-core/deepbgc/pipeline/tests/main.nf.test b/modules/nf-core/deepbgc/pipeline/tests/main.nf.test index 190b7e8f7ea..9dd24049e77 100644 --- a/modules/nf-core/deepbgc/pipeline/tests/main.nf.test +++ b/modules/nf-core/deepbgc/pipeline/tests/main.nf.test @@ -26,7 +26,7 @@ nextflow_process { """ input[0] = Channel.fromList([ tuple([ id:'test_gbk', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true)) + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true)) ]) """ } diff --git a/modules/nf-core/deepcell/mesmer/tests/main.nf.test b/modules/nf-core/deepcell/mesmer/tests/main.nf.test index 9546c1eef4b..d960a548ae9 100644 --- a/modules/nf-core/deepcell/mesmer/tests/main.nf.test +++ b/modules/nf-core/deepcell/mesmer/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { """ input[0] = [ [ id: 'test_img' ], - file(params.test_data['imaging']['segmentation']['image'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/segmentation/cycif_tonsil_registered.ome.tif', checkIfExists: true) ] input[1] = [ [:], diff --git a/modules/nf-core/deeptmhmm/environment.yml b/modules/nf-core/deeptmhmm/environment.yml index 84311c8e281..b4bc7415a68 100644 --- a/modules/nf-core/deeptmhmm/environment.yml +++ b/modules/nf-core/deeptmhmm/environment.yml @@ -1,7 +1,5 @@ -name: deeptmhmm channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::pybiolib=1.1.1393 diff --git a/modules/nf-core/deeptools/bamcoverage/environment.yml b/modules/nf-core/deeptools/bamcoverage/environment.yml index 345ac703a7d..d8e208ca830 100644 --- a/modules/nf-core/deeptools/bamcoverage/environment.yml +++ b/modules/nf-core/deeptools/bamcoverage/environment.yml @@ -1,8 +1,6 @@ -name: deeptools_bamcoverage channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 - - bioconda::samtools=1.16.1 + - bioconda::deeptools=3.5.5 + - bioconda::samtools=1.20 diff --git a/modules/nf-core/deeptools/bamcoverage/main.nf b/modules/nf-core/deeptools/bamcoverage/main.nf index 8aff5d6d41a..92041634e10 100644 --- a/modules/nf-core/deeptools/bamcoverage/main.nf +++ b/modules/nf-core/deeptools/bamcoverage/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_BAMCOVERAGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-eb9e7907c7a753917c1e4d7a64384c047429618a:62d1ebe2d3a2a9d1a7ad31e0b902983fa7c25fa7-0': - 'biocontainers/mulled-v2-eb9e7907c7a753917c1e4d7a64384c047429618a:62d1ebe2d3a2a9d1a7ad31e0b902983fa7c25fa7-0' }" + 'https://depot.galaxyproject.org/singularity/mulled-v2-eb9e7907c7a753917c1e4d7a64384c047429618a:41defd13a6f2ce014549fcc05d0b051f655777f9-0': + 'biocontainers/mulled-v2-eb9e7907c7a753917c1e4d7a64384c047429618a:41defd13a6f2ce014549fcc05d0b051f655777f9-0' }" input: tuple val(meta), path(input), path(input_index) @@ -21,8 +21,9 @@ process DEEPTOOLS_BAMCOVERAGE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}.bigWig" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--outFileFormat bedgraph") || args.contains("-of bedgraph") ? "bedgraph" : "bigWig" // cram_input is currently not working with deeptools // therefore it's required to convert cram to bam first @@ -39,7 +40,7 @@ process DEEPTOOLS_BAMCOVERAGE { --bam $input_out \\ $args \\ --numberOfProcessors ${task.cpus} \\ - --outFileName ${prefix} + --outFileName ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -47,7 +48,6 @@ process DEEPTOOLS_BAMCOVERAGE { deeptools: \$(bamCoverage --version | sed -e "s/bamCoverage //g") END_VERSIONS """ - } else { """ @@ -55,7 +55,7 @@ process DEEPTOOLS_BAMCOVERAGE { --bam $input_out \\ $args \\ --numberOfProcessors ${task.cpus} \\ - --outFileName ${prefix} + --outFileName ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -64,4 +64,15 @@ process DEEPTOOLS_BAMCOVERAGE { """ } + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def extension = args.contains("--outFileFormat bedgraph") || args.contains("-of bedgraph") ? ".bedgraph" : ".bigWig" + """ + touch ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(bamCoverage --version | sed -e "s/bamCoverage //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/deeptools/bamcoverage/meta.yml b/modules/nf-core/deeptools/bamcoverage/meta.yml index e8043e99425..89cf05ff903 100644 --- a/modules/nf-core/deeptools/bamcoverage/meta.yml +++ b/modules/nf-core/deeptools/bamcoverage/meta.yml @@ -55,6 +55,8 @@ output: authors: - "@FriederikeHanssen" - "@SusiJo" + - "@JoseEspinosa" maintainers: - "@FriederikeHanssen" - "@SusiJo" + - "@JoseEspinosa" diff --git a/modules/nf-core/deeptools/bamcoverage/tests/main.nf.test b/modules/nf-core/deeptools/bamcoverage/tests/main.nf.test new file mode 100644 index 00000000000..5d6978035ef --- /dev/null +++ b/modules/nf-core/deeptools/bamcoverage/tests/main.nf.test @@ -0,0 +1,118 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_BAMCOVERAGE" + script "../main.nf" + process "DEEPTOOLS_BAMCOVERAGE" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/bamcoverage" + + test("homo_sampiens - bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bigwig, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - cram - fasta - fai ") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ] + input[1] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bigwig, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - cram - fasta") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ] + input[1] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.bigwig, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/bamcoverage/tests/main.nf.test.snap b/modules/nf-core/deeptools/bamcoverage/tests/main.nf.test.snap new file mode 100644 index 00000000000..62c75123d35 --- /dev/null +++ b/modules/nf-core/deeptools/bamcoverage/tests/main.nf.test.snap @@ -0,0 +1,94 @@ +{ + "homo_sampiens - bam": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bigWig:md5,95fe9383a9e6c02aea6b785cf074274f" + ] + ], + [ + "versions.yml:md5,241ec68695b08434d2db71ad878ed162" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-06T10:07:55.827011705" + }, + "homo_sampiens - cram - fasta - fai ": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bigWig:md5,95fe9383a9e6c02aea6b785cf074274f" + ] + ], + [ + "versions.yml:md5,e51ed2fa03466eba8e61cb5319a21ebc" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-06T10:08:01.46254825" + }, + "homo_sampiens - bam - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,241ec68695b08434d2db71ad878ed162" + ], + "bedgraph": [ + + ], + "bigwig": [ + + ], + "versions": [ + "versions.yml:md5,241ec68695b08434d2db71ad878ed162" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-06T10:08:11.983872422" + }, + "homo_sampiens - cram - fasta": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bigWig:md5,95fe9383a9e6c02aea6b785cf074274f" + ] + ], + [ + "versions.yml:md5,e51ed2fa03466eba8e61cb5319a21ebc" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-06T10:08:06.894864638" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/bamcoverage/tests/tags.yml b/modules/nf-core/deeptools/bamcoverage/tests/tags.yml new file mode 100644 index 00000000000..372cefc9edf --- /dev/null +++ b/modules/nf-core/deeptools/bamcoverage/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/bamcoverage: + - "modules/nf-core/deeptools/bamcoverage/**" diff --git a/modules/nf-core/deeptools/computematrix/environment.yml b/modules/nf-core/deeptools/computematrix/environment.yml index b1b0866ddbb..8880b9b6d2e 100644 --- a/modules/nf-core/deeptools/computematrix/environment.yml +++ b/modules/nf-core/deeptools/computematrix/environment.yml @@ -1,7 +1,5 @@ -name: deeptools_computematrix channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 + - "bioconda::deeptools=3.5.5" diff --git a/modules/nf-core/deeptools/computematrix/main.nf b/modules/nf-core/deeptools/computematrix/main.nf index dbd88dc9f6c..e8a360013c7 100644 --- a/modules/nf-core/deeptools/computematrix/main.nf +++ b/modules/nf-core/deeptools/computematrix/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_COMPUTEMATRIX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.1--py_0' : - 'biocontainers/deeptools:3.5.1--py_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" input: tuple val(meta), path(bigwig) @@ -36,4 +36,16 @@ process DEEPTOOLS_COMPUTEMATRIX { deeptools: \$(computeMatrix --version | sed -e "s/computeMatrix //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | gzip > ${prefix}.computeMatrix.mat.gz + touch ${prefix}.computeMatrix.vals.mat.tab + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(computeMatrix --version | sed -e "s/computeMatrix //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/deeptools/computematrix/tests/main.nf.test b/modules/nf-core/deeptools/computematrix/tests/main.nf.test new file mode 100644 index 00000000000..39873aa36d5 --- /dev/null +++ b/modules/nf-core/deeptools/computematrix/tests/main.nf.test @@ -0,0 +1,67 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_COMPUTEMATRIX" + script "../main.nf" + process "DEEPTOOLS_COMPUTEMATRIX" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/computematrix" + + test("sarscov2 - bigwig - bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina//bigwig/test.bigwig', checkIfExists: true) + ] + input[1] = [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.matrix.get(0).get(1)).name, + process.out.table, + process.out.versions) + .match() + } + ) + } + + } + + test("sarscov2 - mat - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina//bigwig/test.bigwig', checkIfExists: true) + ] + input[1] = [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap b/modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap new file mode 100644 index 00000000000..a1916610e97 --- /dev/null +++ b/modules/nf-core/deeptools/computematrix/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "sarscov2 - mat - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.computeMatrix.mat.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.computeMatrix.vals.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,ccf4527952be3b834d42b6a968193b09" + ], + "matrix": [ + [ + { + "id": "test" + }, + "test.computeMatrix.mat.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "table": [ + [ + { + "id": "test" + }, + "test.computeMatrix.vals.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ccf4527952be3b834d42b6a968193b09" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:31:20.853496401" + }, + "sarscov2 - bigwig - bed": { + "content": [ + "test.computeMatrix.mat.gz", + [ + [ + { + "id": "test" + }, + "test.computeMatrix.vals.mat.tab:md5,19e22051cc44edb7db3e0f8345330d90" + ] + ], + [ + "versions.yml:md5,ccf4527952be3b834d42b6a968193b09" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:31:15.614009233" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/computematrix/tests/nextflow.config b/modules/nf-core/deeptools/computematrix/tests/nextflow.config new file mode 100644 index 00000000000..f9e94fb20fb --- /dev/null +++ b/modules/nf-core/deeptools/computematrix/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: DEEPTOOLS_COMPUTEMATRIX { + ext.args = 'scale-regions -b 1000' + } + +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/computematrix/tests/tags.yml b/modules/nf-core/deeptools/computematrix/tests/tags.yml new file mode 100644 index 00000000000..603becce0b4 --- /dev/null +++ b/modules/nf-core/deeptools/computematrix/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/computematrix: + - "modules/nf-core/deeptools/computematrix/**" diff --git a/modules/nf-core/deeptools/multibamsummary/environment.yml b/modules/nf-core/deeptools/multibamsummary/environment.yml index 724eb87412d..8880b9b6d2e 100644 --- a/modules/nf-core/deeptools/multibamsummary/environment.yml +++ b/modules/nf-core/deeptools/multibamsummary/environment.yml @@ -1,7 +1,5 @@ -name: deeptools_multibamsummary channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 + - "bioconda::deeptools=3.5.5" diff --git a/modules/nf-core/deeptools/multibamsummary/main.nf b/modules/nf-core/deeptools/multibamsummary/main.nf index ea85bcdecf8..ecc0f00b103 100644 --- a/modules/nf-core/deeptools/multibamsummary/main.nf +++ b/modules/nf-core/deeptools/multibamsummary/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_MULTIBAMSUMMARY { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.1--py_0' : - 'biocontainers/deeptools:3.5.1--py_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" input: tuple val(meta), path(bams), path(bais), val(labels) @@ -18,15 +18,27 @@ process DEEPTOOLS_MULTIBAMSUMMARY { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def label = labels ? "--labels ${labels.join(' ')}" : '' + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "all_bam" + def label = labels ? "--labels ${labels.join(' ')}" : '' """ multiBamSummary bins \\ $args \\ $label \\ --bamfiles ${bams.join(' ')} \\ --numberOfProcessors $task.cpus \\ - --outFileName all_bam.bamSummary.npz + --outFileName ${prefix}.bamSummary.npz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(multiBamSummary --version | sed -e "s/multiBamSummary //g") + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "all_bam" + """ + touch ${prefix}.bamSummary.npz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/deeptools/multibamsummary/meta.yml b/modules/nf-core/deeptools/multibamsummary/meta.yml index 30c2f235083..25362587b92 100644 --- a/modules/nf-core/deeptools/multibamsummary/meta.yml +++ b/modules/nf-core/deeptools/multibamsummary/meta.yml @@ -3,6 +3,8 @@ description: Computes read coverage for genomic regions (bins) across the entire keywords: - bam - coverage + - genome + - bin tools: - deeptools: description: A set of user-friendly tools for normalization and visualization of deep-sequencing data @@ -16,7 +18,7 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - bam: + - bams: type: file description: One or more BAM files pattern: "*.{bam}" @@ -46,6 +48,8 @@ output: authors: - "@tamara-hodgetts" - "@chris-cheshire" + - "@joseespinosa" maintainers: - "@tamara-hodgetts" - "@chris-cheshire" + - "@joseespinosa" diff --git a/modules/nf-core/deeptools/multibamsummary/tests/main.nf.test b/modules/nf-core/deeptools/multibamsummary/tests/main.nf.test new file mode 100644 index 00000000000..a7093985370 --- /dev/null +++ b/modules/nf-core/deeptools/multibamsummary/tests/main.nf.test @@ -0,0 +1,75 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_MULTIBAMSUMMARY" + script "../main.nf" + process "DEEPTOOLS_MULTIBAMSUMMARY" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/multibamsummary" + + test("homo_sampiens - bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.matrix.get(0).get(1)).name, + process.out.versions) + .match() + } + ) + } + + } + + test("homo_sampiens - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/multibamsummary/tests/main.nf.test.snap b/modules/nf-core/deeptools/multibamsummary/tests/main.nf.test.snap new file mode 100644 index 00000000000..f1faa3b0c34 --- /dev/null +++ b/modules/nf-core/deeptools/multibamsummary/tests/main.nf.test.snap @@ -0,0 +1,50 @@ +{ + "homo_sampiens - bam": { + "content": [ + "all_bam.bamSummary.npz", + [ + "versions.yml:md5,69e7fd474666d660200ef23b15a13322" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:07:49.496982164" + }, + "homo_sampiens - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "all_bam.bamSummary.npz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,69e7fd474666d660200ef23b15a13322" + ], + "matrix": [ + [ + { + "id": "test", + "single_end": false + }, + "all_bam.bamSummary.npz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,69e7fd474666d660200ef23b15a13322" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:07:55.181400359" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/multibamsummary/tests/tags.yml b/modules/nf-core/deeptools/multibamsummary/tests/tags.yml new file mode 100644 index 00000000000..d8f4ef03a9d --- /dev/null +++ b/modules/nf-core/deeptools/multibamsummary/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/multibamsummary: + - "modules/nf-core/deeptools/multibamsummary/**" diff --git a/modules/nf-core/deeptools/plotcorrelation/environment.yml b/modules/nf-core/deeptools/plotcorrelation/environment.yml index be1bc78ae73..8880b9b6d2e 100644 --- a/modules/nf-core/deeptools/plotcorrelation/environment.yml +++ b/modules/nf-core/deeptools/plotcorrelation/environment.yml @@ -1,7 +1,5 @@ -name: deeptools_plotcorrelation channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 + - "bioconda::deeptools=3.5.5" diff --git a/modules/nf-core/deeptools/plotcorrelation/main.nf b/modules/nf-core/deeptools/plotcorrelation/main.nf index aa32807c29f..826a9de56d1 100644 --- a/modules/nf-core/deeptools/plotcorrelation/main.nf +++ b/modules/nf-core/deeptools/plotcorrelation/main.nf @@ -4,15 +4,14 @@ process DEEPTOOLS_PLOTCORRELATION { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.1--py_0' : - 'biocontainers/deeptools:3.5.1--py_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" input: tuple val(meta), path(matrix) val(method) val(plot_type) - output: tuple val(meta), path("*.pdf"), emit: pdf tuple val(meta), path("*.tab"), emit: matrix @@ -40,4 +39,16 @@ process DEEPTOOLS_PLOTCORRELATION { deeptools: \$(plotCorrelation --version | sed -e "s/plotCorrelation //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.plotCorrelation.pdf + touch ${prefix}.plotCorrelation.mat.tab + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(plotCorrelation --version | sed -e "s/plotCorrelation //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/deeptools/plotcorrelation/meta.yml b/modules/nf-core/deeptools/plotcorrelation/meta.yml index 90ca33e3e3e..4b32e7b7ef4 100644 --- a/modules/nf-core/deeptools/plotcorrelation/meta.yml +++ b/modules/nf-core/deeptools/plotcorrelation/meta.yml @@ -25,12 +25,12 @@ input: mutlibamsummary or multibigwigsummary pattern: "*.{npz}" - method: - type: value + type: string description: | Correlation coefficient to use for heatmap or scatterplot generation pattern: "{spearman,pearson}" - plot_type: - type: value + type: string description: | Type of output plot to display sample correlation pattern: "{heatmap,scatterplot}" @@ -57,6 +57,8 @@ output: authors: - "@tamara-hodgetts" - "@chris-cheshire" + - "@joseespinosa" maintainers: - "@tamara-hodgetts" - "@chris-cheshire" + - "@joseespinosa" diff --git a/modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test b/modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test new file mode 100644 index 00000000000..fcdc5c1e9b4 --- /dev/null +++ b/modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test @@ -0,0 +1,194 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_PLOTCORRELATION" + script "../main.nf" + process "DEEPTOOLS_PLOTCORRELATION" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/plotcorrelation" + tag "deeptools/multibamsummary" + + test("homo_sampiens - bam") { + + setup { + run("DEEPTOOLS_MULTIBAMSUMMARY") { + script "../../multibamsummary/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + } + + when { + process { + """ + input[0] = DEEPTOOLS_MULTIBAMSUMMARY.out.matrix.collect{ meta, matrix -> matrix }.map{ matrix -> [[ id: 'test' ], matrix] } + input[1] = 'spearman' + input[2] = 'heatmap' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.pdf.get(0).get(1)).name, + process.out.matrix, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - bam - no_method") { + + setup { + run("DEEPTOOLS_MULTIBAMSUMMARY") { + script "../../multibamsummary/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + } + + when { + process { + """ + input[0] = DEEPTOOLS_MULTIBAMSUMMARY.out.matrix.collect{ meta, matrix -> matrix }.map{ matrix -> [[ id: 'test' ], matrix] } + input[1] = '' + input[2] = 'heatmap' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.pdf.get(0).get(1)).name, + process.out.matrix, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - bam - no_plot_type") { + + setup { + run("DEEPTOOLS_MULTIBAMSUMMARY") { + script "../../multibamsummary/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + } + + when { + process { + """ + input[0] = DEEPTOOLS_MULTIBAMSUMMARY.out.matrix.collect{ meta, matrix -> matrix }.map{ matrix -> [[ id: 'test' ], matrix] } + input[1] = 'spearman' + input[2] = '' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.pdf.get(0).get(1)).name, + process.out.matrix, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - bam - stub") { + + options "-stub" + + setup { + run("DEEPTOOLS_MULTIBAMSUMMARY") { + script "../../multibamsummary/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + } + + when { + process { + """ + input[0] = DEEPTOOLS_MULTIBAMSUMMARY.out.matrix.collect{ meta, matrix -> matrix }.map{ matrix -> [[ id: 'test' ], matrix] } + input[1] = 'spearman' + input[2] = 'heatmap' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test.snap new file mode 100644 index 00000000000..d7d7965c648 --- /dev/null +++ b/modules/nf-core/deeptools/plotcorrelation/tests/main.nf.test.snap @@ -0,0 +1,114 @@ +{ + "homo_sampiens - bam": { + "content": [ + "test.plotCorrelation.pdf", + [ + [ + { + "id": "test" + }, + "test.plotCorrelation.mat.tab:md5,24e46b74bd580e22c48687a1843eaa5f" + ] + ], + [ + "versions.yml:md5,0898e6b77c847f0cda9d96e78009cf89" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:11:25.053478616" + }, + "homo_sampiens - bam - no_plot_type": { + "content": [ + "test.plotCorrelation.pdf", + [ + [ + { + "id": "test" + }, + "test.plotCorrelation.mat.tab:md5,24e46b74bd580e22c48687a1843eaa5f" + ] + ], + [ + "versions.yml:md5,0898e6b77c847f0cda9d96e78009cf89" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:11:47.326168412" + }, + "homo_sampiens - bam - no_method": { + "content": [ + "test.plotCorrelation.pdf", + [ + [ + { + "id": "test" + }, + "test.plotCorrelation.mat.tab:md5,24e46b74bd580e22c48687a1843eaa5f" + ] + ], + [ + "versions.yml:md5,0898e6b77c847f0cda9d96e78009cf89" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:11:36.230114131" + }, + "homo_sampiens - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.plotCorrelation.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.plotCorrelation.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,0898e6b77c847f0cda9d96e78009cf89" + ], + "matrix": [ + [ + { + "id": "test" + }, + "test.plotCorrelation.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pdf": [ + [ + { + "id": "test" + }, + "test.plotCorrelation.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,0898e6b77c847f0cda9d96e78009cf89" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:11:55.336399884" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotcorrelation/tests/tags.yml b/modules/nf-core/deeptools/plotcorrelation/tests/tags.yml new file mode 100644 index 00000000000..383a3746648 --- /dev/null +++ b/modules/nf-core/deeptools/plotcorrelation/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/plotcorrelation: + - "modules/nf-core/deeptools/plotcorrelation/**" diff --git a/modules/nf-core/deeptools/plotfingerprint/environment.yml b/modules/nf-core/deeptools/plotfingerprint/environment.yml index 14654fbb4ec..8880b9b6d2e 100644 --- a/modules/nf-core/deeptools/plotfingerprint/environment.yml +++ b/modules/nf-core/deeptools/plotfingerprint/environment.yml @@ -1,7 +1,5 @@ -name: deeptools_plotfingerprint channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 + - "bioconda::deeptools=3.5.5" diff --git a/modules/nf-core/deeptools/plotfingerprint/main.nf b/modules/nf-core/deeptools/plotfingerprint/main.nf index 1355f46dd2b..0dba2ff7abc 100644 --- a/modules/nf-core/deeptools/plotfingerprint/main.nf +++ b/modules/nf-core/deeptools/plotfingerprint/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_PLOTFINGERPRINT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.1--py_0' : - 'biocontainers/deeptools:3.5.1--py_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" input: tuple val(meta), path(bams), path(bais) @@ -38,4 +38,17 @@ process DEEPTOOLS_PLOTFINGERPRINT { deeptools: \$(plotFingerprint --version | sed -e "s/plotFingerprint //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.plotFingerprint.pdf + touch ${prefix}.plotFingerprint.raw.txt + touch ${prefix}.plotFingerprint.qcmetrics.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(plotFingerprint --version | sed -e "s/plotFingerprint //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test new file mode 100644 index 00000000000..818c6c9f4a2 --- /dev/null +++ b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test @@ -0,0 +1,62 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_PLOTFINGERPRINT" + script "../main.nf" + process "DEEPTOOLS_PLOTFINGERPRINT" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/plotfingerprint" + + test("homo_sampiens - bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.pdf.get(0).get(1)).name, + file(process.out.matrix.get(0).get(1)).name, + process.out.metrics.collect { file(it[1]).readLines().contains("0.24184576629880325") }, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap new file mode 100644 index 00000000000..502f8cd6955 --- /dev/null +++ b/modules/nf-core/deeptools/plotfingerprint/tests/main.nf.test.snap @@ -0,0 +1,90 @@ +{ + "homo_sampiens - bam": { + "content": [ + "test.plotFingerprint.pdf", + "test.plotFingerprint.raw.txt", + [ + false + ], + [ + "versions.yml:md5,2dd872e44f5b7284c080491607d9b42a" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:14:38.559795237" + }, + "homo_sampiens - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotFingerprint.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotFingerprint.raw.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotFingerprint.qcmetrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,2dd872e44f5b7284c080491607d9b42a" + ], + "matrix": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotFingerprint.raw.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotFingerprint.qcmetrics.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotFingerprint.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2dd872e44f5b7284c080491607d9b42a" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:14:45.23521809" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotfingerprint/tests/tags.yml b/modules/nf-core/deeptools/plotfingerprint/tests/tags.yml new file mode 100644 index 00000000000..372cefc9edf --- /dev/null +++ b/modules/nf-core/deeptools/plotfingerprint/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/bamcoverage: + - "modules/nf-core/deeptools/bamcoverage/**" diff --git a/modules/nf-core/deeptools/plotheatmap/environment.yml b/modules/nf-core/deeptools/plotheatmap/environment.yml index 05f2b3ca78f..72135bc4c75 100644 --- a/modules/nf-core/deeptools/plotheatmap/environment.yml +++ b/modules/nf-core/deeptools/plotheatmap/environment.yml @@ -1,7 +1,7 @@ -name: deeptools_plotheatmap +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 + - "bioconda::deeptools=3.5.5" diff --git a/modules/nf-core/deeptools/plotheatmap/main.nf b/modules/nf-core/deeptools/plotheatmap/main.nf index 3a5ba4cc8b8..0bc6d1489ba 100644 --- a/modules/nf-core/deeptools/plotheatmap/main.nf +++ b/modules/nf-core/deeptools/plotheatmap/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_PLOTHEATMAP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.1--py_0' : - 'biocontainers/deeptools:3.5.1--py_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" input: tuple val(meta), path(matrix) @@ -33,4 +33,16 @@ process DEEPTOOLS_PLOTHEATMAP { deeptools: \$(plotHeatmap --version | sed -e "s/plotHeatmap //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.plotHeatmap.pdf + touch ${prefix}.plotHeatmap.mat.tab + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(plotFingerprint --version | sed -e "s/plotFingerprint //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test new file mode 100644 index 00000000000..b0bcaa9c735 --- /dev/null +++ b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test @@ -0,0 +1,60 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_PLOTHEATMAP" + script "../main.nf" + process "DEEPTOOLS_PLOTHEATMAP" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/plotheatmap" + + test("sarscov2 - mat") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/deeptools/test.computeMatrix.mat.gz', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.pdf.get(0).get(1)).name, + file(process.out.table.get(0).get(1)).name, + process.out.versions) + .match() + } + ) + } + + } + + test("sarscov2 - mat - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/deeptools/test.computeMatrix.mat.gz', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap new file mode 100644 index 00000000000..6cf07363f52 --- /dev/null +++ b/modules/nf-core/deeptools/plotheatmap/tests/main.nf.test.snap @@ -0,0 +1,69 @@ +{ + "sarscov2 - mat - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotHeatmap.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotHeatmap.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,f4040282400b8087dc94f1fa0b1cfefc" + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotHeatmap.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "table": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotHeatmap.mat.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,f4040282400b8087dc94f1fa0b1cfefc" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:17:23.70673465" + }, + "sarscov2 - mat": { + "content": [ + "test.plotHeatmap.pdf", + "test.plotHeatmap.mat.tab", + [ + "versions.yml:md5,f4040282400b8087dc94f1fa0b1cfefc" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:17:17.327116658" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotheatmap/tests/tags.yml b/modules/nf-core/deeptools/plotheatmap/tests/tags.yml new file mode 100644 index 00000000000..1c94a7456c1 --- /dev/null +++ b/modules/nf-core/deeptools/plotheatmap/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/plotheatmap: + - "modules/nf-core/deeptools/plotheatmap/**" diff --git a/modules/nf-core/deeptools/plotpca/environment.yml b/modules/nf-core/deeptools/plotpca/environment.yml index 20e4a2f2efb..8880b9b6d2e 100644 --- a/modules/nf-core/deeptools/plotpca/environment.yml +++ b/modules/nf-core/deeptools/plotpca/environment.yml @@ -1,7 +1,5 @@ -name: deeptools_plotpca channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 + - "bioconda::deeptools=3.5.5" diff --git a/modules/nf-core/deeptools/plotpca/main.nf b/modules/nf-core/deeptools/plotpca/main.nf index b868f30e0ae..d0a1a6324f2 100644 --- a/modules/nf-core/deeptools/plotpca/main.nf +++ b/modules/nf-core/deeptools/plotpca/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_PLOTPCA { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.1--py_0' : - 'biocontainers/deeptools:3.5.1--py_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" input: tuple val(meta), path(matrix) @@ -33,4 +33,16 @@ process DEEPTOOLS_PLOTPCA { deeptools: \$(plotPCA --version | sed -e "s/plotPCA //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.plotPCA.pdf + touch ${prefix}.plotPCA.tab + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(plotPCA --version | sed -e "s/plotPCA //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/deeptools/plotpca/meta.yml b/modules/nf-core/deeptools/plotpca/meta.yml index 9035f694e88..b04b60ccebc 100644 --- a/modules/nf-core/deeptools/plotpca/meta.yml +++ b/modules/nf-core/deeptools/plotpca/meta.yml @@ -1,8 +1,10 @@ name: "deeptools_plotpca" -description: Generates principal component analysis (PCA) plot using a compressed matrix generated by mutlibamsummary or multibigwigsummary as input. +description: Generates principal component analysis (PCA) plot using a compressed matrix generated by multibamsummary or multibigwigsummary as input. keywords: - PCA - matrix + - bam + - bigwig tools: - deeptools: description: A set of user-friendly tools for normalization and visualization of deep-sequencing data @@ -45,6 +47,8 @@ output: authors: - "@tamara-hodgetts" - "@chris-cheshire" + - "@joseespinosa" maintainers: - "@tamara-hodgetts" - "@chris-cheshire" + - "@joseespinosa" diff --git a/modules/nf-core/deeptools/plotpca/tests/main.nf.test b/modules/nf-core/deeptools/plotpca/tests/main.nf.test new file mode 100644 index 00000000000..7374bacf833 --- /dev/null +++ b/modules/nf-core/deeptools/plotpca/tests/main.nf.test @@ -0,0 +1,98 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_PLOTPCA" + script "../main.nf" + process "DEEPTOOLS_PLOTPCA" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/plotpca" + tag "deeptools/multibamsummary" + + test("homo_sampiens - bam") { + + setup { + run("DEEPTOOLS_MULTIBAMSUMMARY") { + script "../../multibamsummary/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + } + + when { + process { + """ + input[0] = DEEPTOOLS_MULTIBAMSUMMARY.out.matrix.collect{ meta, matrix -> matrix }.map{ matrix -> [[ id: 'test' ], matrix] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.pdf.get(0).get(1)).name, + file(process.out.tab.get(0).get(1)).name, + process.out.versions) + .match() + } + ) + } + } + + test("homo_sampiens - bam - stub") { + + options "-stub" + + setup { + run("DEEPTOOLS_MULTIBAMSUMMARY") { + script "../../multibamsummary/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam', checkIfExists: true) + ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.sorted.bam.bai', checkIfExists: true) + ], + [ "test_bam1", "test_bam2" ] + ] + """ + } + } + } + + when { + process { + """ + input[0] = DEEPTOOLS_MULTIBAMSUMMARY.out.matrix.collect{ meta, matrix -> matrix }.map{ matrix -> [[ id: 'test' ], matrix] } + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/plotpca/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotpca/tests/main.nf.test.snap new file mode 100644 index 00000000000..fbf166c6504 --- /dev/null +++ b/modules/nf-core/deeptools/plotpca/tests/main.nf.test.snap @@ -0,0 +1,65 @@ +{ + "homo_sampiens - bam": { + "content": [ + "test.plotPCA.pdf", + "test.plotPCA.tab", + [ + "versions.yml:md5,daf22db391b8e995fdec40a21820dfe3" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:19:05.958863347" + }, + "homo_sampiens - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.plotPCA.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.plotPCA.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,daf22db391b8e995fdec40a21820dfe3" + ], + "pdf": [ + [ + { + "id": "test" + }, + "test.plotPCA.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tab": [ + [ + { + "id": "test" + }, + "test.plotPCA.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,daf22db391b8e995fdec40a21820dfe3" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:19:14.214175671" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotpca/tests/tags.yml b/modules/nf-core/deeptools/plotpca/tests/tags.yml new file mode 100644 index 00000000000..52380aabc39 --- /dev/null +++ b/modules/nf-core/deeptools/plotpca/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/plotpca: + - "modules/nf-core/deeptools/plotpca/**" diff --git a/modules/nf-core/deeptools/plotprofile/environment.yml b/modules/nf-core/deeptools/plotprofile/environment.yml index 7ee9c7dae34..8880b9b6d2e 100644 --- a/modules/nf-core/deeptools/plotprofile/environment.yml +++ b/modules/nf-core/deeptools/plotprofile/environment.yml @@ -1,7 +1,5 @@ -name: deeptools_plotprofile channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::deeptools=3.5.1 + - "bioconda::deeptools=3.5.5" diff --git a/modules/nf-core/deeptools/plotprofile/main.nf b/modules/nf-core/deeptools/plotprofile/main.nf index df799984660..4e9b44bdf1a 100644 --- a/modules/nf-core/deeptools/plotprofile/main.nf +++ b/modules/nf-core/deeptools/plotprofile/main.nf @@ -4,8 +4,8 @@ process DEEPTOOLS_PLOTPROFILE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/deeptools:3.5.1--py_0' : - 'biocontainers/deeptools:3.5.1--py_0' }" + 'https://depot.galaxyproject.org/singularity/deeptools:3.5.5--pyhdfd78af_0': + 'biocontainers/deeptools:3.5.5--pyhdfd78af_0' }" input: tuple val(meta), path(matrix) @@ -33,4 +33,16 @@ process DEEPTOOLS_PLOTPROFILE { deeptools: \$(plotProfile --version | sed -e "s/plotProfile //g") END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.plotProfile.pdf + touch ${prefix}.plotProfile.tab + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deeptools: \$(plotProfile --version | sed -e "s/plotProfile //g") + END_VERSIONS + """ } diff --git a/modules/nf-core/deeptools/plotprofile/tests/main.nf.test b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test new file mode 100644 index 00000000000..fe52873b3e8 --- /dev/null +++ b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test @@ -0,0 +1,60 @@ +nextflow_process { + + name "Test Process DEEPTOOLS_PLOTPROFILE" + script "../main.nf" + process "DEEPTOOLS_PLOTPROFILE" + + tag "modules" + tag "modules_nfcore" + tag "deeptools" + tag "deeptools/plotprofile" + + test("sarscov2 - mat") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/deeptools/test.computeMatrix.mat.gz', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(file(process.out.pdf.get(0).get(1)).name, + file(process.out.table.get(0).get(1)).name, + process.out.versions) + .match() + } + ) + } + + } + + test("sarscov2 - mat - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/deeptools/test.computeMatrix.mat.gz', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap new file mode 100644 index 00000000000..17bef5cf801 --- /dev/null +++ b/modules/nf-core/deeptools/plotprofile/tests/main.nf.test.snap @@ -0,0 +1,69 @@ +{ + "sarscov2 - mat - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotProfile.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotProfile.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,668bc5d10cff87bd952f8b9294416ac3" + ], + "pdf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotProfile.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "table": [ + [ + { + "id": "test", + "single_end": false + }, + "test.plotProfile.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,668bc5d10cff87bd952f8b9294416ac3" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:20:41.694233491" + }, + "sarscov2 - mat": { + "content": [ + "test.plotProfile.pdf", + "test.plotProfile.tab", + [ + "versions.yml:md5,668bc5d10cff87bd952f8b9294416ac3" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-08-05T10:20:35.515374962" + } +} \ No newline at end of file diff --git a/modules/nf-core/deeptools/plotprofile/tests/tags.yml b/modules/nf-core/deeptools/plotprofile/tests/tags.yml new file mode 100644 index 00000000000..60c022159fb --- /dev/null +++ b/modules/nf-core/deeptools/plotprofile/tests/tags.yml @@ -0,0 +1,2 @@ +deeptools/plotprofile: + - "modules/nf-core/deeptools/plotprofile/**" diff --git a/modules/nf-core/deepvariant/README.md b/modules/nf-core/deepvariant/README.md index ca112a7d339..4b3ed086899 100644 --- a/modules/nf-core/deepvariant/README.md +++ b/modules/nf-core/deepvariant/README.md @@ -1,9 +1,61 @@ +# DeepVariant module / subworkflow options + +The DeepVariant tool can be run using the `deepvariant/rundeepvariant` subcommand, or the subworkflow `deepvariant`, which calls the subcommands `makeexamples`, `callvariants` and `postprocessvariants`. The subcommand `rundeepvariant` is simpler, but the subworkflow may be useful if you want to run `callvariants` on GPU. + # Conda is not supported at the moment -The [bioconda](https://bioconda.github.io/recipes/deepvariant/README.html) recipe is not fully working as expected +The [bioconda](https://bioconda.github.io/recipes/deepvariant/README.html) recipe is not fully working as expected. + +See https://github.com/bioconda/bioconda-recipes/issues/30310 and https://github.com/nf-core/modules/issues/1754 for more information. Hence, we are using the docker container provided by the authors of the tool: - [google/deepvariant](https://hub.docker.com/r/google/deepvariant) This image is mirrored on the [nf-core quay.io](https://quay.io/repository/nf-core/deepvariant) for convenience. + +# DeepVariant subworkflow + +You can use the subworkflow `nf-core/deepvariant`, which integrates the three +processes to perform variant calling with common file formats. + +These module subcommands incorporate the individual steps of the DeepVariant pipeline: + + * makeexamples: Converts the input alignment file to a tfrecord format suitable for the deep learning model + * callvariants: Call variants based on input tfrecords. The output is also in + tfrecord format, and needs postprocessing to convert it to vcf. + * postprocessvariants: Convert variant calls from callvariants to VCF, and + also create GVCF files based on genomic information from makeexamples. + +# Recommended parameters + +## makeexamples + +This process imports the data used for calling, and thus decides what information is available to the +deep neural network. It's important to import the correct channels for the model you want to use. + +The script `run_deepvariant` (not used in the subworkflow) does this automatically. You can refer to +the implementation in the DeepVariant repo: + +https://github.com/google/deepvariant/blob/bf9ed7e6de97cf6c8381694cb996317a740625ad/scripts/run_deepvariant.py#L367 + +For WGS and WES models you need to enable the `insert_size` channel. Specify the following in the config: + +``` +withName: "DEEPVARIANT_MAKEEXAMPLES" { + ext.args = '--channels "insert_size"' +} +``` + +## callvariants + +It is mandatory to specify a model type. The models are available on the container filesystem in +`/opt/models` - specify the one you want with the `--checkpoint` argument. + +``` +withName: "DEEPVARIANT_CALLVARIANTS" { + ext.args = '--checkpoint "/opt/models/wgs' +} +``` + +The channels specified in the `makeexamples` process must match the model used for calling. diff --git a/modules/nf-core/deepvariant/callvariants/main.nf b/modules/nf-core/deepvariant/callvariants/main.nf new file mode 100644 index 00000000000..668b51ae4cc --- /dev/null +++ b/modules/nf-core/deepvariant/callvariants/main.nf @@ -0,0 +1,58 @@ + +process DEEPVARIANT_CALLVARIANTS { + tag "$meta.id" + label 'process_high' + + //Conda is not supported at the moment + container "nf-core/deepvariant:1.6.1" + + input: + tuple val(meta), path(make_examples_tfrecords) + + output: + tuple val(meta), path("${prefix}.call-*-of-*.tfrecord.gz"), emit: call_variants_tfrecords + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + + def matcher = make_examples_tfrecords[0].baseName =~ /^(.+)-\d{5}-of-(\d{5})$/ + if (!matcher.matches()) { + throw new IllegalArgumentException("tfrecord baseName '" + make_examples_tfrecords[0].baseName + "' doesn't match the expected pattern") + } + def examples_tfrecord_name = matcher[0][1] + def shardCount = matcher[0][2] + // Reconstruct the logical name - ${tfrecord_name}.examples.tfrecord@${task.cpus}.gz + def examples_tfrecords_logical_name = "${examples_tfrecord_name}@${shardCount}.gz" + + """ + /opt/deepvariant/bin/call_variants \\ + ${args} \\ + --outfile "${prefix}.call.tfrecord.gz" \\ + --examples "${examples_tfrecords_logical_name}" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant_callvariants: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | gzip > ${prefix}.call-00000-of-00001.tfrecord.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant_callvariants: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/deepvariant/callvariants/meta.yml b/modules/nf-core/deepvariant/callvariants/meta.yml new file mode 100644 index 00000000000..db779c62ba0 --- /dev/null +++ b/modules/nf-core/deepvariant/callvariants/meta.yml @@ -0,0 +1,40 @@ +name: deepvariant_callvariants +description: Call variants from the examples produced by make_examples +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - make_examples_tfrecords: + type: file + description: The actual sharded input files, from DEEPVARIANT_MAKEEXAMPLES process + pattern: "*.gz" +output: + - call_variants_tfrecords: + type: list + description: | + Each output contains: unique ID string from input channel, meta, tfrecord file with variant calls. + - versions: + type: file + description: File containing software version + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@ramprasadn" + - "@fa2k" +maintainers: + - "@abhi18av" + - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/callvariants/tests/main.nf.test b/modules/nf-core/deepvariant/callvariants/tests/main.nf.test new file mode 100644 index 00000000000..72f04b51f3b --- /dev/null +++ b/modules/nf-core/deepvariant/callvariants/tests/main.nf.test @@ -0,0 +1,85 @@ +nextflow_process { + + name "Test Process DEEPVARIANT_CALLVARIANTS" + script "../main.nf" + config "./nextflow.config" + process "DEEPVARIANT_CALLVARIANTS" + + tag "deepvariant/makeexamples" + tag "deepvariant/callvariants" + tag "deepvariant" + tag "modules" + tag "modules_nfcore" + + test("homo_sapiens - wgs") { + setup { + run("DEEPVARIANT_MAKEEXAMPLES") { + script "../../makeexamples/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + } + when { + process { + """ + input[0] = DEEPVARIANT_MAKEEXAMPLES.out.examples + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.call_variants_tfrecords.get(0).get(0) == [ id:'test', single_end:false ] }, + // The tfrecord binary representation is not stable, but we check the name of the output. + { assert snapshot(file(process.out.call_variants_tfrecords.get(0).get(1)).name).match("homo_sapiens-wgs-call_variants_tfrecords-filenames")}, + { assert snapshot(process.out.versions).match("versions") }, + ) + } + } + + test("homo_sapiens - wgs - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta + [] // No input paths are needed in stub mode + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap b/modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap new file mode 100644 index 00000000000..8f04ede70eb --- /dev/null +++ b/modules/nf-core/deepvariant/callvariants/tests/main.nf.test.snap @@ -0,0 +1,59 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,5ff99ffba1e56e4e919d3dfc2d0f3cbb" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T16:38:47.927241" + }, + "homo_sapiens-wgs-call_variants_tfrecords-filenames": { + "content": [ + "test.call-00000-of-00001.tfrecord.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T17:04:33.276938" + }, + "homo_sapiens - wgs - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.call-00000-of-00001.tfrecord.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,5ff99ffba1e56e4e919d3dfc2d0f3cbb" + ], + "call_variants_tfrecords": [ + [ + { + "id": "test", + "single_end": false + }, + "test.call-00000-of-00001.tfrecord.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,5ff99ffba1e56e4e919d3dfc2d0f3cbb" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-13T21:07:17.335788301" + } +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/callvariants/tests/nextflow.config b/modules/nf-core/deepvariant/callvariants/tests/nextflow.config new file mode 100644 index 00000000000..590aa060237 --- /dev/null +++ b/modules/nf-core/deepvariant/callvariants/tests/nextflow.config @@ -0,0 +1,11 @@ +process { + withName: "DEEPVARIANT_CALLVARIANTS" { + ext.args = '--checkpoint "/opt/models/wgs"' + cpus = 2 // Keep CPUs fixed so the number of output files is reproducible + } +} +process { + withName: "DEEPVARIANT_MAKEEXAMPLES" { + ext.args = '--channels "insert_size"' + } +} diff --git a/modules/nf-core/deepvariant/callvariants/tests/tags.yml b/modules/nf-core/deepvariant/callvariants/tests/tags.yml new file mode 100644 index 00000000000..02e63f50891 --- /dev/null +++ b/modules/nf-core/deepvariant/callvariants/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/callvariants: + - modules/nf-core/deepvariant/callvariants/** diff --git a/modules/nf-core/deepvariant/main.nf b/modules/nf-core/deepvariant/main.nf index 507b6c1174b..12c9366bb7b 100644 --- a/modules/nf-core/deepvariant/main.nf +++ b/modules/nf-core/deepvariant/main.nf @@ -1,15 +1,29 @@ +def deprecation_message = """ +WARNING: The deepvariant process has been moved into deepvariant/rundeepvariant. + +Reason: +A subworkflow "deepvariant" was added, to split DeepVariant into three processes, to help optimise +the usage of GPU resources (https://github.com/nf-core/modules/pull/6172). The subworkflow can be +used instead of this module. Alternatively, it is possible to use the subcommand "rundeepvariant" in +this module. "rundeepvariant" (the process DEEPVARIANT_RUNDEEPVARIANT) is the exact same as this +top-level process (DEEPVARIANT) used to be. + +The processing stages used by the subworkflow are implemented as module subcommands, e.g. makeexamples. +""" + + process DEEPVARIANT { tag "$meta.id" label 'process_high' - //Conda is not supported at the moment - container "nf-core/deepvariant:1.5.0" + container "nf-core/deepvariant:1.6.1" input: tuple val(meta), path(input), path(index), path(intervals) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) tuple val(meta4), path(gzi) + tuple val(meta5), path(par_bed) output: tuple val(meta), path("${prefix}.vcf.gz") , emit: vcf @@ -22,46 +36,6 @@ process DEEPVARIANT { task.ext.when == null || task.ext.when script: - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." - } - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - def regions = intervals ? "--regions=${intervals}" : "" - - """ - /opt/deepvariant/bin/run_deepvariant \\ - --ref=${fasta} \\ - --reads=${input} \\ - --output_vcf=${prefix}.vcf.gz \\ - --output_gvcf=${prefix}.g.vcf.gz \\ - ${args} \\ - ${regions} \\ - --intermediate_results_dir=. \\ - --num_shards=${task.cpus} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deepvariant: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) - END_VERSIONS - """ - - stub: - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." - } - prefix = task.ext.prefix ?: "${meta.id}" - """ - touch ${prefix}.vcf.gz - touch ${prefix}.vcf.gz.tbi - touch ${prefix}.g.vcf.gz - touch ${prefix}.g.vcf.gz.tbi + assert false: deprecation_message - cat <<-END_VERSIONS > versions.yml - "${task.process}": - deepvariant: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) - END_VERSIONS - """ } diff --git a/modules/nf-core/deepvariant/makeexamples/main.nf b/modules/nf-core/deepvariant/makeexamples/main.nf new file mode 100644 index 00000000000..022d0bf2808 --- /dev/null +++ b/modules/nf-core/deepvariant/makeexamples/main.nf @@ -0,0 +1,66 @@ +process DEEPVARIANT_MAKEEXAMPLES { + tag "$meta.id" + label 'process_high' + + //Conda is not supported at the moment + container "nf-core/deepvariant:1.6.1" + + input: + tuple val(meta), path(input), path(index), path(intervals) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + tuple val(meta4), path(gzi) + tuple val(meta5), path(par_bed) + + output: + tuple val(meta), path("${prefix}.examples.tfrecord-*-of-*.gz{,.example_info.json}"), emit: examples + tuple val(meta), path("${prefix}.gvcf.tfrecord-*-of-*.gz"), emit: gvcf + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def regions = intervals ? "--regions ${intervals}" : "" + def par_regions = par_bed ? "--par_regions_bed=${par_bed}" : "" + + """ + seq 0 ${task.cpus - 1} | parallel -q --halt 2 --line-buffer /opt/deepvariant/bin/make_examples \\ + --mode calling \\ + --ref "${fasta}" \\ + --reads "${input}" \\ + --examples "./${prefix}.examples.tfrecord@${task.cpus}.gz" \\ + --gvcf "./${prefix}.gvcf.tfrecord@${task.cpus}.gz" \\ + ${regions} \\ + ${par_regions} \\ + ${args} \\ + --task {} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant_makeexamples: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + printf -v SHARD_COUNT "%04d" ${task.cpus} + for i in \$( seq -f "%04g" 0 ${task.cpus-1} ) + do + touch ${prefix}.examples.tfrecord-\$i-of-\$SHARD_COUNT.tfrecord.gz{,.example_info.json} + touch ${prefix}.gvcf.tfrecord-\$i-of-\$SHARD_COUNT.tfrecord.gz + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant_makeexamples: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/deepvariant/makeexamples/meta.yml b/modules/nf-core/deepvariant/makeexamples/meta.yml new file mode 100644 index 00000000000..ab1d2e589a1 --- /dev/null +++ b/modules/nf-core/deepvariant/makeexamples/meta.yml @@ -0,0 +1,88 @@ +name: deepvariant_makeexamples +description: Transforms the input alignments to a format suitable for the deep neural network variant caller +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file + pattern: "*.bam/cram" + - index: + type: file + description: Index of BAM/CRAM file + pattern: "*.bai/crai" + - intervals: + type: file + description: Interval file for targeted regions + pattern: "*.bed" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fai" + - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - gzi: + type: file + description: GZI index of reference fasta file + - meta5: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + pattern: "*.gzi" + - par_bed: + type: file + description: BED file containing PAR regions + pattern: "*.bed" +output: + - examples: + type: list + description: | + Tuple containing sample metadata and examples that can be used for calling + - gvcf: + type: list + description: | + Tuple containing sample metadata and the GVCF data in tfrecord format + - versions: + type: file + description: File containing the DeepVariant software version + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@ramprasadn" + - "@fa2k" +maintainers: + - "@abhi18av" + - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test new file mode 100644 index 00000000000..d46dbe6d57c --- /dev/null +++ b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test @@ -0,0 +1,228 @@ +nextflow_process { + + name "Test Process DEEPVARIANT_MAKEEXAMPLES" + script "../main.nf" + config "./nextflow.config" + process "DEEPVARIANT_MAKEEXAMPLES" + + tag "deepvariant/makeexamples" + tag "deepvariant" + tag "modules" + tag "modules_nfcore" + + test("homo_sapiens - [bam, bai] - fasta - fai") { + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + // Test string values and versions. The tfrecords contents are not stable, but we check the names. + { assert process.out.examples.get(0).get(0) == [ id:'test', single_end:false ] }, + { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, + { assert process.out.examples.get(0).get(1).size() == 4 }, + { assert snapshot( // Check examples (tfrecord / json) file name list + file(process.out.examples.get(0).get(1).get(0)).name, + file(process.out.examples.get(0).get(1).get(1)).name, + file(process.out.examples.get(0).get(1).get(2)).name, + file(process.out.examples.get(0).get(1).get(3)).name, + ).match("test1-exaamples-filenames")}, + + { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, + { assert process.out.gvcf.get(0).get(1).size() == 2 }, + { assert snapshot( // Check gvcf file name list + file(process.out.gvcf.get(0).get(1).get(0)).name, + file(process.out.gvcf.get(0).get(1).get(1)).name, + ).match("test1-gvcf-filenames")}, + { assert snapshot(process.out.versions).match("test1-versions") }, + ) + } + } + + test("homo_sapiens - [cram, crai, genome_bed] - fasta - fai") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.examples.get(0).get(0) == [ id:'test', single_end:false ] }, + // The test is always run with 2 cpus + { assert process.out.examples.get(0).get(1).size() == 4 }, + { assert snapshot( // Check examples (tfrecord / json) file names + file(process.out.examples.get(0).get(1).get(0)).name, + file(process.out.examples.get(0).get(1).get(1)).name, + file(process.out.examples.get(0).get(1).get(2)).name, + file(process.out.examples.get(0).get(1).get(3)).name, + ).match("test2-examples-filenames")}, + + { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, + { assert process.out.gvcf.get(0).get(1).size() == 2 }, + { assert snapshot( // Check gvcf tfrecord file names + file(process.out.gvcf.get(0).get(1).get(0)).name, + file(process.out.gvcf.get(0).get(1).get(1)).name, + ).match("test2-gvcf-filenames")}, + { assert snapshot(process.out.versions).match("test2-versions") }, + ) + } + } + + test("homo_sapiens - [bam, bai] - fasta_gz - fasta_gz_fai") { + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz.fai', checkIfExists: true) + ] + input[3] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz.gzi', checkIfExists: true) + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + + { assert process.out.examples.get(0).get(0) == [ id:'test', single_end:false ] }, + // The test is always run with 2 cpus + { assert process.out.examples.get(0).get(1).size() == 4 }, + { assert snapshot( // Check examples (tfrecord / json) file name list + file(process.out.examples.get(0).get(1).get(0)).name, + file(process.out.examples.get(0).get(1).get(1)).name, + file(process.out.examples.get(0).get(1).get(2)).name, + file(process.out.examples.get(0).get(1).get(3)).name, + ).match("test3-examples-filenames")}, + + { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, + { assert process.out.gvcf.get(0).get(1).size() == 2 }, + { assert snapshot( // Check gvcf file name list + file(process.out.gvcf.get(0).get(1).get(0)).name, + file(process.out.gvcf.get(0).get(1).get(1)).name, + ).match("test3-gvcf-filenames")}, + { assert snapshot(process.out.versions).match("test3-versions") }, + ) + } + } + + test("stub") { + + options "-stub" + + when { + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.examples.get(0).get(1).size() == 4 }, + { assert snapshot( // Check examples (tfrecord / json) file name list + file(process.out.examples.get(0).get(1).get(0)).name, + file(process.out.examples.get(0).get(1).get(1)).name, + file(process.out.examples.get(0).get(1).get(2)).name, + file(process.out.examples.get(0).get(1).get(3)).name, + ).match("test4-examples-filenames")}, + + { assert process.out.gvcf.get(0).get(0) == [ id:'test', single_end:false ] }, + { assert process.out.gvcf.get(0).get(1).size() == 2 }, + { assert snapshot( // Check gvcf file name list + file(process.out.gvcf.get(0).get(1).get(0)).name, + file(process.out.gvcf.get(0).get(1).get(1)).name, + ).match("test4-gvcf-filenames")}, + ) + } + } + +} diff --git a/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap new file mode 100644 index 00000000000..24182c54a0b --- /dev/null +++ b/modules/nf-core/deepvariant/makeexamples/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "test1-gvcf-filenames": { + "content": [ + "test.gvcf.tfrecord-00000-of-00002.gz", + "test.gvcf.tfrecord-00001-of-00002.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:09:47.885995" + }, + "test2-examples-filenames": { + "content": [ + "test.examples.tfrecord-00000-of-00002.gz", + "test.examples.tfrecord-00000-of-00002.gz.example_info.json", + "test.examples.tfrecord-00001-of-00002.gz", + "test.examples.tfrecord-00001-of-00002.gz.example_info.json" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:10:02.757227" + }, + "test2-versions": { + "content": [ + [ + "versions.yml:md5,842dca9323f25aa3cfd67789d18e7e33" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T16:39:28.960959" + }, + "test4-examples-filenames": { + "content": [ + "test.examples.tfrecord-0000-of-0002.tfrecord.gz", + "test.examples.tfrecord-0000-of-0002.tfrecord.gz.example_info.json", + "test.examples.tfrecord-0001-of-0002.tfrecord.gz", + "test.examples.tfrecord-0001-of-0002.tfrecord.gz.example_info.json" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:10:27.41698" + }, + "test1-versions": { + "content": [ + [ + "versions.yml:md5,842dca9323f25aa3cfd67789d18e7e33" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T16:39:13.57526" + }, + "test3-examples-filenames": { + "content": [ + "test.examples.tfrecord-00000-of-00002.gz", + "test.examples.tfrecord-00000-of-00002.gz.example_info.json", + "test.examples.tfrecord-00001-of-00002.gz", + "test.examples.tfrecord-00001-of-00002.gz.example_info.json" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:10:17.705948" + }, + "test2-gvcf-filenames": { + "content": [ + "test.gvcf.tfrecord-00000-of-00002.gz", + "test.gvcf.tfrecord-00001-of-00002.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:10:02.765863" + }, + "test4-gvcf-filenames": { + "content": [ + "test.gvcf.tfrecord-0000-of-0002.tfrecord.gz", + "test.gvcf.tfrecord-0001-of-0002.tfrecord.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:10:27.423442" + }, + "test3-versions": { + "content": [ + [ + "versions.yml:md5,842dca9323f25aa3cfd67789d18e7e33" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T16:39:44.83616" + }, + "test1-exaamples-filenames": { + "content": [ + "test.examples.tfrecord-00000-of-00002.gz", + "test.examples.tfrecord-00000-of-00002.gz.example_info.json", + "test.examples.tfrecord-00001-of-00002.gz", + "test.examples.tfrecord-00001-of-00002.gz.example_info.json" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:09:47.874585" + }, + "test3-gvcf-filenames": { + "content": [ + "test.gvcf.tfrecord-00000-of-00002.gz", + "test.gvcf.tfrecord-00001-of-00002.gz" + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-04T16:10:17.714443" + } +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/makeexamples/tests/nextflow.config b/modules/nf-core/deepvariant/makeexamples/tests/nextflow.config new file mode 100644 index 00000000000..5f071fcb34b --- /dev/null +++ b/modules/nf-core/deepvariant/makeexamples/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: "DEEPVARIANT_MAKEEXAMPLES" { + ext.args = '--channels "insert_size"' + cpus = 2 // The number of output files is determined by cpus - keep it the same for tests + } +} diff --git a/modules/nf-core/deepvariant/makeexamples/tests/tags.yml b/modules/nf-core/deepvariant/makeexamples/tests/tags.yml new file mode 100644 index 00000000000..6a13da09590 --- /dev/null +++ b/modules/nf-core/deepvariant/makeexamples/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/makeexamples: + - modules/nf-core/deepvariant/makeexamples/** diff --git a/modules/nf-core/deepvariant/meta.yml b/modules/nf-core/deepvariant/meta.yml index a50dc57d9a3..30c0285ae3e 100644 --- a/modules/nf-core/deepvariant/meta.yml +++ b/modules/nf-core/deepvariant/meta.yml @@ -1,5 +1,5 @@ name: deepvariant -description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data +description: (DEPRECATED - see main.nf) DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data keywords: - variant calling - machine learning @@ -57,6 +57,15 @@ input: type: file description: GZI index of reference fasta file pattern: "*.gzi" + - meta5: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - par_bed: + type: file + description: BED file containing PAR regions + pattern: "*.bed" output: - meta: type: map diff --git a/modules/nf-core/deepvariant/postprocessvariants/main.nf b/modules/nf-core/deepvariant/postprocessvariants/main.nf new file mode 100644 index 00000000000..90e8563deb6 --- /dev/null +++ b/modules/nf-core/deepvariant/postprocessvariants/main.nf @@ -0,0 +1,77 @@ +process DEEPVARIANT_POSTPROCESSVARIANTS { + tag "$meta.id" + label 'process_medium' + + //Conda is not supported at the moment + container "nf-core/deepvariant:1.6.1" + + input: + tuple val(meta), path(variant_calls_tfrecord_files), path(gvcf_tfrecords) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + tuple val(meta4), path(gzi) + + output: + tuple val(meta), path("${prefix}.vcf.gz") , emit: vcf + tuple val(meta), path("${prefix}.vcf.gz.tbi") , emit: vcf_tbi + tuple val(meta), path("${prefix}.g.vcf.gz") , emit: gvcf + tuple val(meta), path("${prefix}.g.vcf.gz.tbi"), emit: gvcf_tbi + + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + + def variant_calls_tfrecord_name = variant_calls_tfrecord_files[0].name.replaceFirst(/-\d{5}-of-\d{5}/, "") + + def gvcf_matcher = gvcf_tfrecords[0].baseName =~ /^(.+)-\d{5}-of-(\d{5})$/ + if (!gvcf_matcher.matches()) { + throw new IllegalArgumentException("tfrecord baseName '" + gvcf_tfrecords[0].baseName + "' doesn't match the expected pattern") + } + def gvcf_tfrecord_name = gvcf_matcher[0][1] + def gvcf_shardCount = gvcf_matcher[0][2] + // Reconstruct the logical name - ${tfrecord_name}.examples.tfrecord@${task.cpus}.gz + def gvcf_tfrecords_logical_name = "${gvcf_tfrecord_name}@${gvcf_shardCount}.gz" + + """ + /opt/deepvariant/bin/postprocess_variants \\ + ${args} \\ + --ref "${fasta}" \\ + --infile "${variant_calls_tfrecord_name}" \\ + --outfile "${prefix}.vcf.gz" \\ + --nonvariant_site_tfrecord_path "${gvcf_tfrecords_logical_name}" \\ + --gvcf_outfile "${prefix}.g.vcf.gz" \\ + --cpus $task.cpus + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant_postprocessvariants: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) + END_VERSIONS + """ + + stub: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | gzip > ${prefix}.vcf.gz + touch ${prefix}.vcf.gz.tbi + echo "" | gzip > ${prefix}.g.vcf.gz + touch ${prefix}.g.vcf.gz.tbi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant_callvariants: \$(echo \$(/opt/deepvariant/bin/run_deepvariant --version) | sed 's/^.*version //; s/ .*\$//' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/deepvariant/postprocessvariants/meta.yml b/modules/nf-core/deepvariant/postprocessvariants/meta.yml new file mode 100644 index 00000000000..03a0a6b8235 --- /dev/null +++ b/modules/nf-core/deepvariant/postprocessvariants/meta.yml @@ -0,0 +1,90 @@ +name: deepvariant_postprocessvariants +description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - variant_calls_tfrecord_files: + type: file + description: | + One or more data files containing variant calls from DEEPVARIANT_CALLVARIANTS + pattern: "*.tfrecord.gz" + - gvcf_tfrecords: + type: file + description: | + Sharded tfrecord file from DEEPVARIANT_MAKEEXAMPLES with the coverage information used for GVCF output + pattern: "*.gz" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fai" + - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - gzi: + type: file + description: GZI index of reference fasta file + pattern: "*.gzi" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: Compressed VCF file + pattern: "*.vcf.gz" + - vcf_tbi: + type: file + description: Index for VCF + pattern: "*.vcf.gz.tbi" + - gvcf: + type: file + description: Compressed GVCF file + pattern: "*.g.vcf.gz" + - gvcf_tbi: + type: file + description: Index for GVCF + pattern: "*.g.vcf.gz.tbi" + - versions: + type: file + description: File containing software version + pattern: "versions.yml" +authors: + - "@abhi18av" + - "@ramprasadn" + - "@fa2k" +maintainers: + - "@abhi18av" + - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test new file mode 100644 index 00000000000..e4e9b5570c2 --- /dev/null +++ b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test @@ -0,0 +1,118 @@ +nextflow_process { + + name "Test Process DEEPVARIANT_POSTPROCESSVARIANTS" + script "../main.nf" + process "DEEPVARIANT_POSTPROCESSVARIANTS" + config "./nextflow.config" + + tag "deepvariant/makeexamples" + tag "deepvariant/callvariants" + tag "deepvariant/postprocessvariants" + tag "deepvariant" + tag "modules" + tag "modules_nfcore" + + test("homo_sapiens - wgs") { + setup { + run("DEEPVARIANT_MAKEEXAMPLES") { + script "../../makeexamples/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + run("DEEPVARIANT_CALLVARIANTS") { + script "../../callvariants/main.nf" + process { + """ + input[0] = DEEPVARIANT_MAKEEXAMPLES.out.examples + """ + } + } + } + when { + process { + """ + input[0] = DEEPVARIANT_CALLVARIANTS.out.call_variants_tfrecords.join( + DEEPVARIANT_MAKEEXAMPLES.out.gvcf, + failOnMismatch: true + ) + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens - wgs - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + [], + [], + [], + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match("stub") } + ) + } + } + +} diff --git a/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap new file mode 100644 index 00000000000..5a29c624e50 --- /dev/null +++ b/modules/nf-core/deepvariant/postprocessvariants/tests/main.nf.test.snap @@ -0,0 +1,180 @@ +{ + "stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,37f0e454a6983de82f7a93eb39849985" + ], + "gvcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "gvcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "vcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,37f0e454a6983de82f7a93eb39849985" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T16:40:38.231189" + }, + "homo_sapiens - wgs": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "4": [ + "versions.yml:md5,b1d5ddb90c4a59a1a3fdace9dcc8445c" + ], + "gvcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "gvcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "vcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "versions": [ + "versions.yml:md5,b1d5ddb90c4a59a1a3fdace9dcc8445c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-09T16:46:15.793662" + } +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config b/modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config new file mode 100644 index 00000000000..070b4892f86 --- /dev/null +++ b/modules/nf-core/deepvariant/postprocessvariants/tests/nextflow.config @@ -0,0 +1,10 @@ +process { + withName: "DEEPVARIANT_CALLVARIANTS" { + ext.args = '--checkpoint "/opt/models/wgs"' + } +} +process { + withName: "DEEPVARIANT_MAKEEXAMPLES" { + ext.args = '--channels "insert_size"' + } +} diff --git a/modules/nf-core/deepvariant/postprocessvariants/tests/tags.yml b/modules/nf-core/deepvariant/postprocessvariants/tests/tags.yml new file mode 100644 index 00000000000..d26188cd7a2 --- /dev/null +++ b/modules/nf-core/deepvariant/postprocessvariants/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/postprocessvariants: + - modules/nf-core/deepvariant/postprocessvariants/** diff --git a/modules/nf-core/deepvariant/rundeepvariant/main.nf b/modules/nf-core/deepvariant/rundeepvariant/main.nf new file mode 100644 index 00000000000..7f99c53f6d2 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/main.nf @@ -0,0 +1,78 @@ +process DEEPVARIANT_RUNDEEPVARIANT { + tag "$meta.id" + label 'process_high' + + // FIXME Conda is not supported at the moment + // BUG https://github.com/nf-core/modules/issues/1754 + // BUG https://github.com/bioconda/bioconda-recipes/issues/30310 + container "nf-core/deepvariant:1.6.1" + + input: + tuple val(meta), path(input), path(index), path(intervals) + tuple val(meta2), path(fasta) + tuple val(meta3), path(fai) + tuple val(meta4), path(gzi) + tuple val(meta5), path(par_bed) + + output: + tuple val(meta), path("${prefix}.vcf.gz") , emit: vcf + tuple val(meta), path("${prefix}.vcf.gz.tbi") , emit: vcf_tbi + tuple val(meta), path("${prefix}.g.vcf.gz") , emit: gvcf + tuple val(meta), path("${prefix}.g.vcf.gz.tbi"), emit: gvcf_tbi + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def regions = intervals ? "--regions=${intervals}" : "" + def par_regions = par_bed ? "--par_regions_bed=${par_bed}" : "" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + + """ + /opt/deepvariant/bin/run_deepvariant \\ + --ref=${fasta} \\ + --reads=${input} \\ + --output_vcf=${prefix}.vcf.gz \\ + --output_gvcf=${prefix}.g.vcf.gz \\ + ${args} \\ + ${regions} \\ + ${par_regions} \\ + --intermediate_results_dir=tmp \\ + --num_shards=${task.cpus} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ + + stub: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "DEEPVARIANT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + prefix = task.ext.prefix ?: "${meta.id}" + // WARN https://github.com/nf-core/modules/pull/5801#issuecomment-2194293755 + // FIXME Revert this on next version bump + def VERSION = '1.6.1' + """ + touch ${prefix}.vcf.gz + touch ${prefix}.vcf.gz.tbi + touch ${prefix}.g.vcf.gz + touch ${prefix}.g.vcf.gz.tbi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + deepvariant: $VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/deepvariant/rundeepvariant/meta.yml b/modules/nf-core/deepvariant/rundeepvariant/meta.yml new file mode 100644 index 00000000000..a6ee5499285 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/meta.yml @@ -0,0 +1,92 @@ +name: deepvariant_rundeepvariant +description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data +keywords: + - variant calling + - machine learning + - neural network +tools: + - deepvariant: + description: DeepVariant is an analysis pipeline that uses a deep neural network to call genetic variants from next-generation DNA sequencing data + homepage: https://github.com/google/deepvariant + documentation: https://github.com/google/deepvariant + tool_dev_url: https://github.com/google/deepvariant + doi: "10.1038/nbt.4235" + licence: ["BSD-3-clause"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file + pattern: "*.bam/cram" + - index: + type: file + description: Index of BAM/CRAM file + pattern: "*.bai/crai" + - interval: + type: file + description: Interval file for targeted regions + pattern: "*.bed" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fasta: + type: file + description: The reference fasta file + pattern: "*.fasta" + - meta3: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Index of reference fasta file + pattern: "*.fai" + - meta4: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - gzi: + type: file + description: GZI index of reference fasta file + pattern: "*.gzi" + - meta5: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - par_bed: + type: file + description: BED file containing PAR regions + pattern: "*.bed" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - vcf: + type: file + description: Compressed VCF file + pattern: "*.vcf.gz" + - gvcf: + type: file + description: Compressed GVCF file + pattern: "*.g.vcf.gz" + - version: + type: file + description: File containing software version + pattern: "*.{version.txt}" +authors: + - "@abhi18av" + - "@ramprasadn" +maintainers: + - "@abhi18av" + - "@ramprasadn" diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test new file mode 100644 index 00000000000..0790fb81362 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test @@ -0,0 +1,166 @@ +nextflow_process { + + name "Test Process DEEPVARIANT_RUNDEEPVARIANT" + script "../main.nf" + process "DEEPVARIANT_RUNDEEPVARIANT" + + tag "deepvariant/rundeepvariant" + tag "deepvariant" + tag "modules" + tag "modules_nfcore" + + test("homo_sapiens - [bam, bai] - fasta - fai") { + when { + config "./nextflow.config" + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens - [cram, crai, genome_bed] - fasta - fai") { + config "./nextflow-intervals.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens - [cram, crai, genome_bed] - fasta - fai - par_bed") { + config "./nextflow-non-autosomal-calling.config" + tag "test" + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = [ + [],[] + ] + input[4] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.blacklist_intervals.bed', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens - [bam, bai] - fasta_gz - fasta_gz_fai") { + when { + config "./nextflow.config" + + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ] + input[1] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz', checkIfExists: true) + ] + input[2] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz.fai', checkIfExists: true) + ] + input[3] = [ + [ id:'genome'], + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz.gzi', checkIfExists: true) + ] + input[4] = [ + [],[] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap new file mode 100644 index 00000000000..1ec351eecc9 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/main.nf.test.snap @@ -0,0 +1,358 @@ +{ + "homo_sapiens - [bam, bai] - fasta_gz - fasta_gz_fai": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "4": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ], + "gvcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "gvcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "vcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "versions": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:36:27.325363" + }, + "homo_sapiens - [bam, bai] - fasta - fai": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "4": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ], + "gvcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "gvcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "vcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "versions": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:34:41.779153" + }, + "homo_sapiens - [cram, crai, genome_bed] - fasta - fai": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "4": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ], + "gvcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,0a629e1745926cfcedf4b169046a921a" + ] + ], + "gvcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,49503913c28ec70a6f4aa52f6b357b4d" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,8b8ab4a675f01e437aa72e1438a717d0" + ] + ], + "vcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0000833138104e87b05eaa906821eb21" + ] + ], + "versions": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:35:16.993129" + }, + "homo_sapiens - [cram, crai, genome_bed] - fasta - fai - par_bed": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,d2e26d65dbbcea9b087ed191b5c9841c" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0801296d0356415bbf1ef8deb4ec84c3" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,4fcaa9a8b55730d191382160c2b5bb0a" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,f468e846904733b3231ecf00ef7cd4a2" + ] + ], + "4": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ], + "gvcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz:md5,4fcaa9a8b55730d191382160c2b5bb0a" + ] + ], + "gvcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.g.vcf.gz.tbi:md5,f468e846904733b3231ecf00ef7cd4a2" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz:md5,d2e26d65dbbcea9b087ed191b5c9841c" + ] + ], + "vcf_tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_out.vcf.gz.tbi:md5,0801296d0356415bbf1ef8deb4ec84c3" + ] + ], + "versions": [ + "versions.yml:md5,a251d8d9f5e8b737d8298eead96c0890" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T11:35:52.23093" + } +} \ No newline at end of file diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config new file mode 100644 index 00000000000..78d8d5982ae --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-intervals.config @@ -0,0 +1,8 @@ +process { + + withName: DEEPVARIANT_RUNDEEPVARIANT { + ext.args = '--model_type=WGS ' + ext.prefix = { "${meta.id}_out" } + } + +} diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config new file mode 100644 index 00000000000..6d265292ab6 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow-non-autosomal-calling.config @@ -0,0 +1,8 @@ +process { + + withName: DEEPVARIANT_RUNDEEPVARIANT { + ext.args = '--model_type=WGS --haploid_contigs chr22' + ext.prefix = { "${meta.id}_out" } + } + +} diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config new file mode 100644 index 00000000000..77e355cae82 --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/nextflow.config @@ -0,0 +1,8 @@ +process { + + withName: DEEPVARIANT_RUNDEEPVARIANT { + ext.args = ' --regions=\"chr22:0-40001\" --model_type=WGS ' + ext.prefix = { "${meta.id}_out" } + } + +} diff --git a/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml b/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml new file mode 100644 index 00000000000..958b8e4149b --- /dev/null +++ b/modules/nf-core/deepvariant/rundeepvariant/tests/tags.yml @@ -0,0 +1,2 @@ +deepvariant/rundeepvariant: + - modules/nf-core/deepvariant/rundeepvariant/** diff --git a/modules/nf-core/deepvariant/tests/main.nf.test b/modules/nf-core/deepvariant/tests/main.nf.test index 91612c1e282..cf62430fa5a 100644 --- a/modules/nf-core/deepvariant/tests/main.nf.test +++ b/modules/nf-core/deepvariant/tests/main.nf.test @@ -1,6 +1,6 @@ nextflow_process { - name "Test Process DEEPVARIANT" + name "Deprecated module DEEPVARIANT Test" script "../main.nf" process "DEEPVARIANT" @@ -8,10 +8,8 @@ nextflow_process { tag "modules" tag "modules_nfcore" - test("homo_sapiens - [bam, bai] - fasta - fai") { + test("DEEPVARIANT top-level process is deprecated and should fail") { when { - config "./nextflow.config" - process { """ input[0] = [ @@ -31,39 +29,7 @@ nextflow_process { input[3] = [ [],[] ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - - test("homo_sapiens - [cram, crai, genome_bed] - fasta - fai") { - config "./nextflow-intervals.config" - - when { - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) - ] - input[1] = [ - [ id:'genome'], - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) - ] - input[2] = [ - [ id:'genome'], - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) - ] - input[3] = [ + input[4] = [ [],[] ] """ @@ -72,46 +38,8 @@ nextflow_process { then { assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert !process.success } ) } } - - test("homo_sapiens - [bam, bai] - fasta_gz - fasta_gz_fai") { - when { - config "./nextflow.config" - - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), - [] - ] - input[1] = [ - [ id:'genome'], - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz', checkIfExists: true) - ] - input[2] = [ - [ id:'genome'], - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz.fai', checkIfExists: true) - ] - input[3] = [ - [ id:'genome'], - file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.gz.gzi', checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } - -} \ No newline at end of file +} diff --git a/modules/nf-core/deepvariant/tests/main.nf.test.snap b/modules/nf-core/deepvariant/tests/main.nf.test.snap deleted file mode 100644 index 6ad76ae4c3f..00000000000 --- a/modules/nf-core/deepvariant/tests/main.nf.test.snap +++ /dev/null @@ -1,269 +0,0 @@ -{ - "homo_sapiens - [bam, bai] - fasta_gz - fasta_gz_fai": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz:md5,7cba1516f7cf0888765d5ee8caf275f4" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz.tbi:md5,02a78562bc83520a51010a01fb06f217" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz:md5,8d6ac08997bfd848a0a4d9d295e76952" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz.tbi:md5,37e2d8f4cca0a21113cede608f54885a" - ] - ], - "4": [ - "versions.yml:md5,4678f778b58276933b165fe3e84afc6a" - ], - "gvcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz:md5,8d6ac08997bfd848a0a4d9d295e76952" - ] - ], - "gvcf_tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz.tbi:md5,37e2d8f4cca0a21113cede608f54885a" - ] - ], - "vcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz:md5,7cba1516f7cf0888765d5ee8caf275f4" - ] - ], - "vcf_tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz.tbi:md5,02a78562bc83520a51010a01fb06f217" - ] - ], - "versions": [ - "versions.yml:md5,4678f778b58276933b165fe3e84afc6a" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-20T13:54:42.757335334" - }, - "homo_sapiens - [bam, bai] - fasta - fai": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz:md5,7cba1516f7cf0888765d5ee8caf275f4" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz.tbi:md5,02a78562bc83520a51010a01fb06f217" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz:md5,8d6ac08997bfd848a0a4d9d295e76952" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz.tbi:md5,37e2d8f4cca0a21113cede608f54885a" - ] - ], - "4": [ - "versions.yml:md5,4678f778b58276933b165fe3e84afc6a" - ], - "gvcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz:md5,8d6ac08997bfd848a0a4d9d295e76952" - ] - ], - "gvcf_tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz.tbi:md5,37e2d8f4cca0a21113cede608f54885a" - ] - ], - "vcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz:md5,7cba1516f7cf0888765d5ee8caf275f4" - ] - ], - "vcf_tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz.tbi:md5,02a78562bc83520a51010a01fb06f217" - ] - ], - "versions": [ - "versions.yml:md5,4678f778b58276933b165fe3e84afc6a" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-20T13:54:18.409489045" - }, - "homo_sapiens - [cram, crai, genome_bed] - fasta - fai": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz:md5,7cba1516f7cf0888765d5ee8caf275f4" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz.tbi:md5,02a78562bc83520a51010a01fb06f217" - ] - ], - "2": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz:md5,8d6ac08997bfd848a0a4d9d295e76952" - ] - ], - "3": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz.tbi:md5,37e2d8f4cca0a21113cede608f54885a" - ] - ], - "4": [ - "versions.yml:md5,4678f778b58276933b165fe3e84afc6a" - ], - "gvcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz:md5,8d6ac08997bfd848a0a4d9d295e76952" - ] - ], - "gvcf_tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.g.vcf.gz.tbi:md5,37e2d8f4cca0a21113cede608f54885a" - ] - ], - "vcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz:md5,7cba1516f7cf0888765d5ee8caf275f4" - ] - ], - "vcf_tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_out.vcf.gz.tbi:md5,02a78562bc83520a51010a01fb06f217" - ] - ], - "versions": [ - "versions.yml:md5,4678f778b58276933b165fe3e84afc6a" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-20T13:54:30.523871801" - } -} diff --git a/modules/nf-core/deepvariant/tests/nextflow-intervals.config b/modules/nf-core/deepvariant/tests/nextflow-intervals.config deleted file mode 100644 index 6d135f9f109..00000000000 --- a/modules/nf-core/deepvariant/tests/nextflow-intervals.config +++ /dev/null @@ -1,8 +0,0 @@ -process { - - withName: DEEPVARIANT { - ext.args = '--model_type=WGS ' - ext.prefix = { "${meta.id}_out" } - } - -} diff --git a/modules/nf-core/deepvariant/tests/nextflow.config b/modules/nf-core/deepvariant/tests/nextflow.config deleted file mode 100644 index d335d30b54f..00000000000 --- a/modules/nf-core/deepvariant/tests/nextflow.config +++ /dev/null @@ -1,8 +0,0 @@ -process { - - withName: DEEPVARIANT { - ext.args = ' --regions=\"chr22:0-40001\" --model_type=WGS ' - ext.prefix = { "${meta.id}_out" } - } - -} diff --git a/modules/nf-core/delly/call/environment.yml b/modules/nf-core/delly/call/environment.yml index 39da899525f..5598247e1ae 100644 --- a/modules/nf-core/delly/call/environment.yml +++ b/modules/nf-core/delly/call/environment.yml @@ -1,7 +1,5 @@ -name: delly_call channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::delly=1.2.6 diff --git a/modules/nf-core/demuxem/environment.yml b/modules/nf-core/demuxem/environment.yml index 1b56f172a7b..c74f84be28b 100644 --- a/modules/nf-core/demuxem/environment.yml +++ b/modules/nf-core/demuxem/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "demuxem" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::demuxem=0.1.7.post1" diff --git a/modules/nf-core/deseq2/differential/environment.yml b/modules/nf-core/deseq2/differential/environment.yml index 0ab1d0b6d95..4f0b1d103a3 100644 --- a/modules/nf-core/deseq2/differential/environment.yml +++ b/modules/nf-core/deseq2/differential/environment.yml @@ -1,7 +1,5 @@ -name: deseq2_differential channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::bioconductor-deseq2=1.34.0 diff --git a/modules/nf-core/diamond/blastp/environment.yml b/modules/nf-core/diamond/blastp/environment.yml index 922ea7ed178..950c3c5c55e 100644 --- a/modules/nf-core/diamond/blastp/environment.yml +++ b/modules/nf-core/diamond/blastp/environment.yml @@ -1,7 +1,5 @@ -name: diamond_blastp channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::diamond=2.1.8 diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test b/modules/nf-core/diamond/blastp/tests/main.nf.test index 672bf050bdd..f21e926de9d 100644 --- a/modules/nf-core/diamond/blastp/tests/main.nf.test +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test @@ -6,6 +6,7 @@ nextflow_process { tag "modules" tag "modules_nfcore" tag "diamond" + tag "diamond/makedb" tag "diamond/blastp" setup { @@ -13,7 +14,7 @@ nextflow_process { script "../../makedb/main.nf" process { """ - input[0] = [ [id:'test2'], [ file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] ] + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] input[1] = [] input[2] = [] input[3] = [] @@ -30,7 +31,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = DIAMOND_MAKEDB.out.db input[2] = 'txt' input[3] = 'qseqid qlen' @@ -41,8 +42,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.txt).match("txt") }, - { assert process.out.versions } + { assert snapshot( + process.out.txt, + process.out.versions + ).match() + } ) } @@ -56,7 +60,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta_gz'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] input[1] = DIAMOND_MAKEDB.out.db input[2] = 'txt' input[3] = 'qseqid qlen' @@ -67,8 +71,11 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.txt).match("gz_txt") }, - { assert process.out.versions } + { assert snapshot( + process.out.txt, + process.out.versions + ).match("gz_txt") + } ) } @@ -82,7 +89,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = DIAMOND_MAKEDB.out.db input[2] = 'daa' input[3] = [] @@ -94,7 +101,7 @@ nextflow_process { assertAll( { assert process.success }, { assert process.out.daa }, - { assert process.out.versions } + { assert snapshot(process.out.versions).match() } ) } diff --git a/modules/nf-core/diamond/blastp/tests/main.nf.test.snap b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap index 83575bc1054..e323c8b89c1 100644 --- a/modules/nf-core/diamond/blastp/tests/main.nf.test.snap +++ b/modules/nf-core/diamond/blastp/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "txt": { + "Should search for protein hits against a DIAMOND db and return a tab separated output file of hits": { "content": [ [ [ @@ -8,9 +8,16 @@ }, "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] + ], + [ + "versions.yml:md5,57a0ebeb0a8a732c941ae0102639a9d0" ] ], - "timestamp": "2023-11-07T10:27:02.453987512" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:40:23.906848" }, "gz_txt": { "content": [ @@ -21,8 +28,27 @@ }, "test.txt:md5,8131b1afd717f3d5f2f2417c5b562e6e" ] + ], + [ + "versions.yml:md5,57a0ebeb0a8a732c941ae0102639a9d0" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:40:29.865487" + }, + "Should search for protein hits against a DIAMOND db and return a daa format file of hits": { + "content": [ + [ + "versions.yml:md5,57a0ebeb0a8a732c941ae0102639a9d0" ] ], - "timestamp": "2023-11-07T09:41:13.934994026" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:40:35.362027" } } \ No newline at end of file diff --git a/modules/nf-core/diamond/blastx/environment.yml b/modules/nf-core/diamond/blastx/environment.yml index 70d6857d1dd..950c3c5c55e 100644 --- a/modules/nf-core/diamond/blastx/environment.yml +++ b/modules/nf-core/diamond/blastx/environment.yml @@ -1,7 +1,5 @@ -name: diamond_blastx channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::diamond=2.1.8 diff --git a/modules/nf-core/diamond/blastx/tests/main.nf.test b/modules/nf-core/diamond/blastx/tests/main.nf.test index a367f8835ef..b8757403d73 100644 --- a/modules/nf-core/diamond/blastx/tests/main.nf.test +++ b/modules/nf-core/diamond/blastx/tests/main.nf.test @@ -6,6 +6,7 @@ nextflow_process { tag "modules" tag "modules_nfcore" tag "diamond" + tag "diamond/makedb" tag "diamond/blastx" setup { @@ -13,7 +14,7 @@ nextflow_process { script "../../makedb/main.nf" process { """ - input[0] = [ [id:'test2'], [ file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] ] + input[0] = [ [id:'test2'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] input[1] = [] input[2] = [] input[3] = [] @@ -30,7 +31,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) ] input[1] = DIAMOND_MAKEDB.out.db input[2] = 'tfdfdt' // Nonsense file extension to check default case. input[3] = 'qseqid qlen' @@ -41,9 +42,12 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.txt).match("txt") }, { assert path(process.out.log.get(0).get(1)).readLines().contains("11 queries aligned.") }, - { assert process.out.versions } + { assert snapshot( + process.out.txt, + process.out.versions + ).match() + } ) } @@ -57,7 +61,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['transcriptome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/transcriptome.fasta', checkIfExists: true) ] input[1] = DIAMOND_MAKEDB.out.db input[2] = 'daa' input[3] = [] @@ -70,7 +74,7 @@ nextflow_process { { assert process.success }, { assert process.out.daa }, { assert path(process.out.log.get(0).get(1)).readLines().contains("11 queries aligned.") }, - { assert process.out.versions } + { assert snapshot(process.out.versions).match() } ) } diff --git a/modules/nf-core/diamond/blastx/tests/main.nf.test.snap b/modules/nf-core/diamond/blastx/tests/main.nf.test.snap index 27fb0a31ead..8a128c9940c 100644 --- a/modules/nf-core/diamond/blastx/tests/main.nf.test.snap +++ b/modules/nf-core/diamond/blastx/tests/main.nf.test.snap @@ -1,5 +1,17 @@ { - "txt": { + "Should search for transcriptome hits against a DIAMOND db and return the daa format output file of hits": { + "content": [ + [ + "versions.yml:md5,733d944fb173eaf1d1cdf280cd1b3b9c" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:49:26.843747" + }, + "Should search for transcriptome hits against a DIAMOND db and return the default tab separated output file of hits": { "content": [ [ [ @@ -8,8 +20,15 @@ }, "test.txt:md5,33dc682dabfa44c7089abbc8fe8b84e4" ] + ], + [ + "versions.yml:md5,733d944fb173eaf1d1cdf280cd1b3b9c" ] ], - "timestamp": "2023-11-07T09:42:36.646074348" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:49:20.769093" } } \ No newline at end of file diff --git a/modules/nf-core/diamond/cluster/environment.yml b/modules/nf-core/diamond/cluster/environment.yml new file mode 100644 index 00000000000..216da62694c --- /dev/null +++ b/modules/nf-core/diamond/cluster/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::diamond=2.1.9" diff --git a/modules/nf-core/diamond/cluster/main.nf b/modules/nf-core/diamond/cluster/main.nf new file mode 100644 index 00000000000..db12d51f005 --- /dev/null +++ b/modules/nf-core/diamond/cluster/main.nf @@ -0,0 +1,51 @@ +process DIAMOND_CLUSTER { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/diamond:2.1.9--h43eeafb_0': + 'biocontainers/diamond:2.1.9--h43eeafb_0' }" + + input: + tuple val(meta), path(db) + + output: + tuple val(meta), path("*.tsv"), emit: tsv + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def mem = task.memory.toKilo() + 'K' + def memarg = "-M ${mem}" + """ + diamond \\ + cluster \\ + $args \\ + $memarg \\ + -p $task.cpus \\ + -d $db \\ + -o ${prefix}.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamond: \$(diamond --version |& sed '1!d ; s/diamond version //') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamond: \$(diamond --version |& sed '1!d ; s/diamond version //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/diamond/cluster/meta.yml b/modules/nf-core/diamond/cluster/meta.yml new file mode 100644 index 00000000000..4858b240687 --- /dev/null +++ b/modules/nf-core/diamond/cluster/meta.yml @@ -0,0 +1,51 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "diamond_cluster" +description: calculate clusters of highly similar sequences +keywords: + - clustering + - alignment + - genomics + - proteomics +tools: + - "diamond": + description: "Accelerated BLAST compatible local sequence aligner" + homepage: "https://github.com/bbuchfink/diamond/wiki" + documentation: "https://github.com/bbuchfink/diamond/wiki" + tool_dev_url: "https://github.com/bbuchfink/diamond" + doi: "10.1038/s41592-021-01101-x" + licence: ["GPL v3-or-later"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + + - db: + type: file + description: The input sequence database. Supported formats are FASTA and DIAMOND (.dmnd) format. + pattern: "*.{dmnd,fa,faa,fasta}(.gz)" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + + - tsv: + type: file + description: a 2-column tabular file with the representative accession as the first column and the member sequence accession as the second column + pattern: "*.tsv" + +authors: + - "@itrujnara" +maintainers: + - "@itrujnara" diff --git a/modules/nf-core/diamond/cluster/tests/main.nf.test b/modules/nf-core/diamond/cluster/tests/main.nf.test new file mode 100644 index 00000000000..198a7d458e5 --- /dev/null +++ b/modules/nf-core/diamond/cluster/tests/main.nf.test @@ -0,0 +1,75 @@ +nextflow_process { + + name "Test Process DIAMOND_CLUSTER" + script "../main.nf" + process "DIAMOND_CLUSTER" + + tag "modules" + tag "modules_nfcore" + tag "diamond" + tag "diamond/cluster" + + test("human - fasta") { + when { + process { + """ + input[0] = [ + [ id:'human' ], // meta map + file(params.modules_testdata_base_path + 'proteomics/database/UP000005640_9606.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("human - dmnd") { + when { + process { + """ + input[0] = [ + [ id:'human' ], // meta map + file(params.modules_testdata_base_path + 'proteomics/database/UP000005640_9606.dmnd', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("human - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'proteomics/database/UP000005640_9606.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } +} diff --git a/modules/nf-core/diamond/cluster/tests/main.nf.test.snap b/modules/nf-core/diamond/cluster/tests/main.nf.test.snap new file mode 100644 index 00000000000..9b4ec99946f --- /dev/null +++ b/modules/nf-core/diamond/cluster/tests/main.nf.test.snap @@ -0,0 +1,103 @@ +{ + "human - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "human" + }, + "human.tsv:md5,b86602979f73d25280979ae31c6cedf5" + ] + ], + "1": [ + "versions.yml:md5,e4c7a66a72f105348f32bbe145bf4418" + ], + "tsv": [ + [ + { + "id": "human" + }, + "human.tsv:md5,b86602979f73d25280979ae31c6cedf5" + ] + ], + "versions": [ + "versions.yml:md5,e4c7a66a72f105348f32bbe145bf4418" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-26T12:47:43.215388" + }, + "human - dmnd": { + "content": [ + { + "0": [ + [ + { + "id": "human" + }, + "human.tsv:md5,b86602979f73d25280979ae31c6cedf5" + ] + ], + "1": [ + "versions.yml:md5,e4c7a66a72f105348f32bbe145bf4418" + ], + "tsv": [ + [ + { + "id": "human" + }, + "human.tsv:md5,b86602979f73d25280979ae31c6cedf5" + ] + ], + "versions": [ + "versions.yml:md5,e4c7a66a72f105348f32bbe145bf4418" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-26T12:48:18.237846" + }, + "human - fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,e4c7a66a72f105348f32bbe145bf4418" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e4c7a66a72f105348f32bbe145bf4418" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-26T13:03:23.494583" + } +} \ No newline at end of file diff --git a/modules/nf-core/diamond/cluster/tests/tags.yml b/modules/nf-core/diamond/cluster/tests/tags.yml new file mode 100644 index 00000000000..94f299a00ae --- /dev/null +++ b/modules/nf-core/diamond/cluster/tests/tags.yml @@ -0,0 +1,2 @@ +diamond/cluster: + - "modules/nf-core/diamond/cluster/**" diff --git a/modules/nf-core/diamond/makedb/environment.yml b/modules/nf-core/diamond/makedb/environment.yml index 0196bd65bce..950c3c5c55e 100644 --- a/modules/nf-core/diamond/makedb/environment.yml +++ b/modules/nf-core/diamond/makedb/environment.yml @@ -1,7 +1,5 @@ -name: diamond_makedb channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::diamond=2.1.8 diff --git a/modules/nf-core/diamond/makedb/tests/main.nf.test b/modules/nf-core/diamond/makedb/tests/main.nf.test index e9f7df282b8..f27e142be35 100644 --- a/modules/nf-core/diamond/makedb/tests/main.nf.test +++ b/modules/nf-core/diamond/makedb/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], [ file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] ] + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] input[1] = [] input[2] = [] input[3] = [] @@ -27,8 +27,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.db).match("db") }, - { assert process.out.versions } + { assert snapshot(process.out).match() } ) } @@ -42,7 +41,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], [ file(params.test_data['sarscov2']['genome']['proteome_fasta_gz'], checkIfExists: true) ] ] + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta.gz', checkIfExists: true) ] ] input[1] = [] input[2] = [] input[3] = [] @@ -53,8 +52,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.db).match("gz_db") }, - { assert process.out.versions } + { assert snapshot(process.out).match() } ) } @@ -68,10 +66,10 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], [ file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] ] - input[1] = [ file(params.test_data['sarscov2']['metagenome']['prot_accession2taxid_gz'], checkIfExists: true) ] - input[2] = [ file(params.test_data['sarscov2']['metagenome']['prot_nodes_dmp'], checkIfExists: true) ] - input[3] = [ file(params.test_data['sarscov2']['metagenome']['prot_names_dmp'], checkIfExists: true) ] + input[0] = [ [id:'test'], [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] ] + input[1] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot.accession2taxid.gz', checkIfExists: true) ] + input[2] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_nodes.dmp', checkIfExists: true) ] + input[3] = [ file(params.modules_testdata_base_path + 'genomics/sarscov2/metagenome/prot_names.dmp', checkIfExists: true) ] """ } } @@ -79,8 +77,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.db).match("db_tax") }, - { assert process.out.versions } + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/diamond/makedb/tests/main.nf.test.snap b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap index a8fe065cbb9..5abefce7f85 100644 --- a/modules/nf-core/diamond/makedb/tests/main.nf.test.snap +++ b/modules/nf-core/diamond/makedb/tests/main.nf.test.snap @@ -1,41 +1,101 @@ { - "db_tax": { + "Should build a DIAMOND db file from a fasta file with taxonomic information": { "content": [ - [ - [ - { - "id": "test" - }, - "test.dmnd:md5,9d57aa88cd1766adfda8360876fc0e4f" + { + "0": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,9d57aa88cd1766adfda8360876fc0e4f" + ] + ], + "1": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ], + "db": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,9d57aa88cd1766adfda8360876fc0e4f" + ] + ], + "versions": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" ] - ] + } ], - "timestamp": "2023-12-05T14:28:48.616684409" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:35:11.221381" }, - "db": { + "Should build a DIAMOND db file from a fasta file without taxonomic information": { "content": [ - [ - [ - { - "id": "test" - }, - "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + { + "0": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "1": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ], + "db": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "versions": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" ] - ] + } ], - "timestamp": "2023-12-05T14:22:02.696726038" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:35:00.595693" }, - "gz_db": { + "Should build a DIAMOND db file from a zipped fasta file without taxonomic information": { "content": [ - [ - [ - { - "id": "test" - }, - "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + { + "0": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "1": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" + ], + "db": [ + [ + { + "id": "test" + }, + "test.dmnd:md5,6039420745dd4db6e761244498460ae1" + ] + ], + "versions": [ + "versions.yml:md5,29a8cea287d2206b9a837d2750de00c4" ] - ] + } ], - "timestamp": "2023-12-05T14:22:07.430248018" + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-29T14:35:05.494933" } } \ No newline at end of file diff --git a/modules/nf-core/dragmap/align/environment.yml b/modules/nf-core/dragmap/align/environment.yml index ccccf9c95f0..2f1191b2ec6 100644 --- a/modules/nf-core/dragmap/align/environment.yml +++ b/modules/nf-core/dragmap/align/environment.yml @@ -1,8 +1,6 @@ -name: dragmap_align channels: - conda-forge - bioconda - - defaults dependencies: - dragmap=1.3.0 # renovate: datasource=conda depName=bioconda/samtools diff --git a/modules/nf-core/dragmap/hashtable/environment.yml b/modules/nf-core/dragmap/hashtable/environment.yml index 254a7426073..06e608fde72 100644 --- a/modules/nf-core/dragmap/hashtable/environment.yml +++ b/modules/nf-core/dragmap/hashtable/environment.yml @@ -1,7 +1,5 @@ -name: dragmap_hashtable channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dragmap=1.3.0 diff --git a/modules/nf-core/dragonflye/environment.yml b/modules/nf-core/dragonflye/environment.yml index 21a90517817..6111fba13b7 100644 --- a/modules/nf-core/dragonflye/environment.yml +++ b/modules/nf-core/dragonflye/environment.yml @@ -1,7 +1,5 @@ -name: dragonflye channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dragonflye=1.1.2 diff --git a/modules/nf-core/dshbio/exportsegments/environment.yml b/modules/nf-core/dshbio/exportsegments/environment.yml index 3a2680e664d..cd022f8776b 100644 --- a/modules/nf-core/dshbio/exportsegments/environment.yml +++ b/modules/nf-core/dshbio/exportsegments/environment.yml @@ -1,7 +1,5 @@ -name: dshbio_exportsegments channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dsh-bio=2.4 diff --git a/modules/nf-core/dshbio/exportsegments/tests/main.nf.test b/modules/nf-core/dshbio/exportsegments/tests/main.nf.test new file mode 100644 index 00000000000..8cc99183960 --- /dev/null +++ b/modules/nf-core/dshbio/exportsegments/tests/main.nf.test @@ -0,0 +1,109 @@ + +nextflow_process { + + name "Test Process DSHBIO_EXPORTSEGMENTS" + script "../main.nf" + process "DSHBIO_EXPORTSEGMENTS" + + tag "modules" + tag "modules_nfcore" + tag "dshbio" + tag "dshbio/exportsegments" + + test("test-dshbio-exportsegments") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gfa/assembly.gfa', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-dshbio-exportsegments-bgz") { + + when { + process { + """ + input[0] = [ + [ id:'test_bgz' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gfa/assembly.gfa.bgz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-dshbio-exportsegments-gz") { + + when { + process { + """ + input[0] = [ + [ id:'test_gz' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gfa/assembly.gfa.gz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-dshbio-exportsegments-zst") { + + when { + process { + """ + input[0] = [ + [ id:'test_zst' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gfa/assembly.gfa.zst', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/dshbio/exportsegments/tests/main.nf.test.snap b/modules/nf-core/dshbio/exportsegments/tests/main.nf.test.snap new file mode 100644 index 00000000000..eeffb7e0a91 --- /dev/null +++ b/modules/nf-core/dshbio/exportsegments/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "test-dshbio-exportsegments-bgz": { + "content": [ + { + "0": [ + [ + { + "id": "test_bgz" + }, + "test_bgz.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "1": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ], + "fasta": [ + [ + { + "id": "test_bgz" + }, + "test_bgz.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "versions": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T12:20:56.237489" + }, + "test-dshbio-exportsegments-gz": { + "content": [ + { + "0": [ + [ + { + "id": "test_gz" + }, + "test_gz.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "1": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ], + "fasta": [ + [ + { + "id": "test_gz" + }, + "test_gz.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "versions": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T12:21:04.55388" + }, + "test-dshbio-exportsegments": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "1": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ], + "fasta": [ + [ + { + "id": "test" + }, + "test.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "versions": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T12:20:48.512057" + }, + "test-dshbio-exportsegments-zst": { + "content": [ + { + "0": [ + [ + { + "id": "test_zst" + }, + "test_zst.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "1": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ], + "fasta": [ + [ + { + "id": "test_zst" + }, + "test_zst.fa.gz:md5,19ed0b69970ed3fbb641c5c510ebef61" + ] + ], + "versions": [ + "versions.yml:md5,e9a3d95608329bc3857ffa0a032b77fb" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T12:21:11.138197" + } +} \ No newline at end of file diff --git a/modules/nf-core/dshbio/filterbed/environment.yml b/modules/nf-core/dshbio/filterbed/environment.yml index d4e4014ae2b..cd022f8776b 100644 --- a/modules/nf-core/dshbio/filterbed/environment.yml +++ b/modules/nf-core/dshbio/filterbed/environment.yml @@ -1,7 +1,5 @@ -name: dshbio_filterbed channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dsh-bio=2.4 diff --git a/modules/nf-core/dshbio/filterbed/main.nf b/modules/nf-core/dshbio/filterbed/main.nf index 69e74cc1f60..0527da059fc 100644 --- a/modules/nf-core/dshbio/filterbed/main.nf +++ b/modules/nf-core/dshbio/filterbed/main.nf @@ -32,4 +32,16 @@ process DSHBIO_FILTERBED { dshbio: \$(dsh-bio --version 2>&1 | grep -o 'dsh-bio-tools .*' | cut -f2 -d ' ') END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo | gzip > ${prefix}.bed.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + dshbio: \$(dsh-bio --version 2>&1 | grep -o 'dsh-bio-tools .*' | cut -f2 -d ' ') + END_VERSIONS + """ } diff --git a/modules/nf-core/dshbio/filterbed/tests/main.nf.test b/modules/nf-core/dshbio/filterbed/tests/main.nf.test new file mode 100644 index 00000000000..030cf8d6604 --- /dev/null +++ b/modules/nf-core/dshbio/filterbed/tests/main.nf.test @@ -0,0 +1,59 @@ + +nextflow_process { + + name "Test Process DSHBIO_FILTERBED" + script "../main.nf" + process "DSHBIO_FILTERBED" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "dshbio" + tag "dshbio/filterbed" + + test("test-dshbio-filterbed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-dshbio-filterbed-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/dshbio/filterbed/tests/main.nf.test.snap b/modules/nf-core/dshbio/filterbed/tests/main.nf.test.snap new file mode 100644 index 00000000000..7d8d6179aac --- /dev/null +++ b/modules/nf-core/dshbio/filterbed/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "test-dshbio-filterbed-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.filtered.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,4582bd57adad529819cd1af03feabe32" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.filtered.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,4582bd57adad529819cd1af03feabe32" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T21:57:21.622646" + }, + "test-dshbio-filterbed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.filtered.bed.gz:md5,4cead66654d50614bebe1cf3e4174d1b" + ] + ], + "1": [ + "versions.yml:md5,4582bd57adad529819cd1af03feabe32" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.filtered.bed.gz:md5,4cead66654d50614bebe1cf3e4174d1b" + ] + ], + "versions": [ + "versions.yml:md5,4582bd57adad529819cd1af03feabe32" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T09:48:55.661443" + } +} \ No newline at end of file diff --git a/modules/nf-core/dshbio/filterbed/tests/nextflow.config b/modules/nf-core/dshbio/filterbed/tests/nextflow.config new file mode 100644 index 00000000000..cff24c446ef --- /dev/null +++ b/modules/nf-core/dshbio/filterbed/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: DSHBIO_FILTERBED { + ext.args = '--range MT192765.1:1900-2000' + ext.prefix = { "${meta.id}.filtered" } + } +} diff --git a/modules/nf-core/dshbio/filtergff3/environment.yml b/modules/nf-core/dshbio/filtergff3/environment.yml index 7076b7fd083..cd022f8776b 100644 --- a/modules/nf-core/dshbio/filtergff3/environment.yml +++ b/modules/nf-core/dshbio/filtergff3/environment.yml @@ -1,7 +1,5 @@ -name: dshbio_filtergff3 channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dsh-bio=2.4 diff --git a/modules/nf-core/dshbio/filtergff3/tests/main.nf.test b/modules/nf-core/dshbio/filtergff3/tests/main.nf.test new file mode 100644 index 00000000000..83414e46ac9 --- /dev/null +++ b/modules/nf-core/dshbio/filtergff3/tests/main.nf.test @@ -0,0 +1,38 @@ + +nextflow_process { + + name "Test Process DSHBIO_FILTERGFF3" + script "../main.nf" + process "DSHBIO_FILTERGFF3" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "dshbio" + tag "dshbio/filtergff3" + + test("test-dshbio-filtergff3") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3.gz', checkIfExists: true) + ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/dshbio/filtergff3/tests/main.nf.test.snap b/modules/nf-core/dshbio/filtergff3/tests/main.nf.test.snap new file mode 100644 index 00000000000..b70ba065bf5 --- /dev/null +++ b/modules/nf-core/dshbio/filtergff3/tests/main.nf.test.snap @@ -0,0 +1,35 @@ +{ + "test-dshbio-filtergff3": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.filtered.gff3.gz:md5,e9a96ddfef9671dd1a6cdd98ee518dc2" + ] + ], + "1": [ + "versions.yml:md5,613545edce2d60770f142538227f70f8" + ], + "gff3": [ + [ + { + "id": "test" + }, + "test.filtered.gff3.gz:md5,e9a96ddfef9671dd1a6cdd98ee518dc2" + ] + ], + "versions": [ + "versions.yml:md5,613545edce2d60770f142538227f70f8" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T12:24:32.950592" + } +} \ No newline at end of file diff --git a/modules/nf-core/dshbio/filtergff3/tests/nextflow.config b/modules/nf-core/dshbio/filtergff3/tests/nextflow.config new file mode 100644 index 00000000000..7ecef3e9535 --- /dev/null +++ b/modules/nf-core/dshbio/filtergff3/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: DSHBIO_FILTERGFF3 { + ext.args = '--range MT192765.1:0-1000' + ext.prefix = { "${meta.id}.filtered" } + } +} diff --git a/modules/nf-core/dshbio/splitbed/environment.yml b/modules/nf-core/dshbio/splitbed/environment.yml index 8ee99e21f90..cd022f8776b 100644 --- a/modules/nf-core/dshbio/splitbed/environment.yml +++ b/modules/nf-core/dshbio/splitbed/environment.yml @@ -1,7 +1,5 @@ -name: dshbio_splitbed channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dsh-bio=2.4 diff --git a/modules/nf-core/dshbio/splitbed/main.nf b/modules/nf-core/dshbio/splitbed/main.nf index c9d208da8da..be2ec6c46bb 100644 --- a/modules/nf-core/dshbio/splitbed/main.nf +++ b/modules/nf-core/dshbio/splitbed/main.nf @@ -33,4 +33,16 @@ process DSHBIO_SPLITBED { dshbio: \$(dsh-bio --version 2>&1 | grep -o 'dsh-bio-tools .*' | cut -f2 -d ' ') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo | gzip > ${prefix}0.bed.gz + echo | gzip > ${prefix}1.bed.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + dshbio: \$(dsh-bio --version 2>&1 | grep -o 'dsh-bio-tools .*' | cut -f2 -d ' ') + END_VERSIONS + """ } diff --git a/modules/nf-core/dshbio/splitbed/tests/main.nf.test b/modules/nf-core/dshbio/splitbed/tests/main.nf.test new file mode 100644 index 00000000000..6d66cd44528 --- /dev/null +++ b/modules/nf-core/dshbio/splitbed/tests/main.nf.test @@ -0,0 +1,59 @@ + +nextflow_process { + + name "Test Process DSHBIO_SPLITBED" + script "../main.nf" + process "DSHBIO_SPLITBED" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "dshbio" + tag "dshbio/splitbed" + + test("test-dshbio-splitbed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-dshbio-splitbed-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/dshbio/splitbed/tests/main.nf.test.snap b/modules/nf-core/dshbio/splitbed/tests/main.nf.test.snap new file mode 100644 index 00000000000..511ee3450f5 --- /dev/null +++ b/modules/nf-core/dshbio/splitbed/tests/main.nf.test.snap @@ -0,0 +1,80 @@ +{ + "test-dshbio-splitbed-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test0.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test1.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + "versions.yml:md5,aa22acdd3e97f65c803fd2ce1cee670c" + ], + "bed": [ + [ + { + "id": "test" + }, + [ + "test0.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test1.bed.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "versions": [ + "versions.yml:md5,aa22acdd3e97f65c803fd2ce1cee670c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:45:51.813671" + }, + "test-dshbio-splitbed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test0.bed.gz:md5,6cb0b8dae6febfc386e9ad83d506a5de", + "test1.bed.gz:md5,bd4de9719ffd108bd1ea747ddc09d231" + ] + ] + ], + "1": [ + "versions.yml:md5,aa22acdd3e97f65c803fd2ce1cee670c" + ], + "bed": [ + [ + { + "id": "test" + }, + [ + "test0.bed.gz:md5,6cb0b8dae6febfc386e9ad83d506a5de", + "test1.bed.gz:md5,bd4de9719ffd108bd1ea747ddc09d231" + ] + ] + ], + "versions": [ + "versions.yml:md5,aa22acdd3e97f65c803fd2ce1cee670c" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T11:44:44.469734" + } +} \ No newline at end of file diff --git a/modules/nf-core/dshbio/splitbed/tests/nextflow.config b/modules/nf-core/dshbio/splitbed/tests/nextflow.config new file mode 100644 index 00000000000..794b62c2572 --- /dev/null +++ b/modules/nf-core/dshbio/splitbed/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: DSHBIO_SPLITBED { + ext.args = '--records 2' + } +} diff --git a/modules/nf-core/dshbio/splitgff3/environment.yml b/modules/nf-core/dshbio/splitgff3/environment.yml index 4781c4998fd..cd022f8776b 100644 --- a/modules/nf-core/dshbio/splitgff3/environment.yml +++ b/modules/nf-core/dshbio/splitgff3/environment.yml @@ -1,7 +1,5 @@ -name: dshbio_splitgff3 channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::dsh-bio=2.4 diff --git a/modules/nf-core/dshbio/splitgff3/main.nf b/modules/nf-core/dshbio/splitgff3/main.nf index ccbccf6948f..6ba0028a114 100644 --- a/modules/nf-core/dshbio/splitgff3/main.nf +++ b/modules/nf-core/dshbio/splitgff3/main.nf @@ -33,4 +33,16 @@ process DSHBIO_SPLITGFF3 { dshbio: \$(dsh-bio --version 2>&1 | grep -o 'dsh-bio-tools .*' | cut -f2 -d ' ') END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo | gzip > ${prefix}.gff3.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + dshbio: \$(dsh-bio --version 2>&1 | grep -o 'dsh-bio-tools .*' | cut -f2 -d ' ') + END_VERSIONS + """ } diff --git a/modules/nf-core/dshbio/splitgff3/tests/main.nf.test b/modules/nf-core/dshbio/splitgff3/tests/main.nf.test new file mode 100644 index 00000000000..f24924b4c21 --- /dev/null +++ b/modules/nf-core/dshbio/splitgff3/tests/main.nf.test @@ -0,0 +1,57 @@ + +nextflow_process { + + name "Test Process DSHBIO_SPLITGFF3" + script "../main.nf" + process "DSHBIO_SPLITGFF3" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "dshbio" + tag "dshbio/splitgff3" + + test("test-dshbio-splitgff3") { + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3.gz', checkIfExists: true) ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-dshbio-splitgff3-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ [ id:'test' ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3.gz', checkIfExists: true) ] + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/dshbio/splitgff3/tests/main.nf.test.snap b/modules/nf-core/dshbio/splitgff3/tests/main.nf.test.snap new file mode 100644 index 00000000000..ec76c787b59 --- /dev/null +++ b/modules/nf-core/dshbio/splitgff3/tests/main.nf.test.snap @@ -0,0 +1,74 @@ +{ + "test-dshbio-splitgff3": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + [ + "test.0.gff3.gz:md5,caa582173c77b36e11178f7464cb2864", + "test.1.gff3.gz:md5,f318f57e2e5f101789719051c90ccf4a" + ] + ] + ], + "1": [ + "versions.yml:md5,098b62a1c5e93c20e6f4811c83b7fe2b" + ], + "gff3": [ + [ + { + "id": "test" + }, + [ + "test.0.gff3.gz:md5,caa582173c77b36e11178f7464cb2864", + "test.1.gff3.gz:md5,f318f57e2e5f101789719051c90ccf4a" + ] + ] + ], + "versions": [ + "versions.yml:md5,098b62a1c5e93c20e6f4811c83b7fe2b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T21:54:01.053587" + }, + "test-dshbio-splitgff3-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test..gff3.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,098b62a1c5e93c20e6f4811c83b7fe2b" + ], + "gff3": [ + [ + { + "id": "test" + }, + "test..gff3.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,098b62a1c5e93c20e6f4811c83b7fe2b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T21:54:06.238654" + } +} \ No newline at end of file diff --git a/modules/nf-core/dshbio/splitgff3/tests/nextflow.config b/modules/nf-core/dshbio/splitgff3/tests/nextflow.config new file mode 100644 index 00000000000..4e58b643b87 --- /dev/null +++ b/modules/nf-core/dshbio/splitgff3/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: DSHBIO_SPLITGFF3 { + ext.prefix = { "${meta.id}." } + ext.args = '--records 15' + } +} diff --git a/modules/nf-core/duphold/environment.yml b/modules/nf-core/duphold/environment.yml index cf3fe32ba5f..d607f1f48ef 100644 --- a/modules/nf-core/duphold/environment.yml +++ b/modules/nf-core/duphold/environment.yml @@ -1,7 +1,5 @@ -name: duphold channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::duphold=0.2.1 diff --git a/modules/nf-core/duphold/meta.yml b/modules/nf-core/duphold/meta.yml index c82cf7545ed..934fe8ed69c 100644 --- a/modules/nf-core/duphold/meta.yml +++ b/modules/nf-core/duphold/meta.yml @@ -2,6 +2,9 @@ name: "duphold" description: SV callers like lumpy look at split-reads and pair distances to find structural variants. This tool is a fast way to add depth information to those calls. This can be used as additional information for filtering variants; for example we will be skeptical of deletion calls that do not have lower than average coverage compared to regions with similar gc-content. keywords: - sort + - duphold + - structural variation + - depth information tools: - "duphold": description: "SV callers like lumpy look at split-reads and pair distances to find structural variants. This tool is a fast way to add depth information to those calls." @@ -9,7 +12,7 @@ tools: documentation: "https://github.com/brentp/duphold" tool_dev_url: "https://github.com/brentp/duphold" doi: "10.1093/gigascience/giz040" - licence: "['MIT']" + licence: ["MIT"] input: - meta: type: map diff --git a/modules/nf-core/dupradar/environment.yml b/modules/nf-core/dupradar/environment.yml index 58b2bf11dcc..fb16938d202 100644 --- a/modules/nf-core/dupradar/environment.yml +++ b/modules/nf-core/dupradar/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "dupradar" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::bioconductor-dupradar=1.32.0" diff --git a/modules/nf-core/dupradar/main.nf b/modules/nf-core/dupradar/main.nf index 6ed502bbe63..8f3665a678c 100644 --- a/modules/nf-core/dupradar/main.nf +++ b/modules/nf-core/dupradar/main.nf @@ -34,7 +34,8 @@ process DUPRADAR { touch ${meta.id}_expressionHist.pdf touch ${meta.id}_dupMatrix.txt touch ${meta.id}_intercept_slope.txt - touch ${meta.id}_mqc.txt + touch ${meta.id}_dup_intercept_mqc.txt + touch ${meta.id}_duprateExpDensCurve_mqc.txt touch ${meta.id}.R_sessionInfo.log cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/dupradar/templates/dupradar.r b/modules/nf-core/dupradar/templates/dupradar.r index ec20cb85147..7653e587397 100755 --- a/modules/nf-core/dupradar/templates/dupradar.r +++ b/modules/nf-core/dupradar/templates/dupradar.r @@ -88,7 +88,6 @@ line="#id: DupInt # max: 100 # min: 0 # scale: 'RdYlGn-rev' -# format: '{:.2f}%' Sample dupRadar_intercept" write(line,file=paste0(output_prefix, "_dup_intercept_mqc.txt"),append=TRUE) @@ -115,29 +114,23 @@ line="#id: dupradar # This plot shows the general linear models - a summary of the gene duplication distributions. \" #pconfig: # title: 'DupRadar General Linear Model' -# xLog: True +# xlog: True # xlab: 'expression (reads/kbp)' # ylab: '% duplicate reads' # ymax: 100 # ymin: 0 # tt_label: '{point.x:.1f} reads/kbp: {point.y:,.2f}% duplicates' -# xPlotLines: +# x_lines: # - color: 'green' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: -# style: {color: 'green'} # text: '0.5 RPKM' -# verticalAlign: 'bottom' -# y: -65 # value: 0.5 # width: 1 # - color: 'red' -# dashStyle: 'LongDash' +# dash: 'LongDash' # label: -# style: {color: 'red'} # text: '1 read/bp' -# verticalAlign: 'bottom' -# y: -65 # value: 1000 # width: 1" diff --git a/modules/nf-core/dupradar/tests/main.nf.test b/modules/nf-core/dupradar/tests/main.nf.test index f7f0933c80b..ef213df9fb6 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test +++ b/modules/nf-core/dupradar/tests/main.nf.test @@ -11,15 +11,15 @@ nextflow_process { test("sarscov2 - bam - single_end") { config './nextflow.config' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -30,32 +30,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end') }, - { assert snapshot(process.out.versions).match('versions_single_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } - } - + test("sarscov2 - bam - single_end - stub") { config './nextflow.config' - + options '-stub' when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:true, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.single_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -66,16 +67,9 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_single_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_single_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_single_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_single_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_single_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_single_end_stub') }, - { assert snapshot(process.out.versions).match('versions_single_end_stub') } + { assert snapshot(process.out).match() } ) } - } test("sarscov2 - bam - paired_end") { @@ -85,11 +79,11 @@ nextflow_process { when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -100,31 +94,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end') }, - { assert snapshot(process.out.versions).match('versions_paired_end') } + { assert snapshot( + file(process.out.boxplot[0][1]).name, + file(process.out.hist[0][1]).name, + file(process.out.scatter2d[0][1]).name, + process.out.dupmatrix, + process.out.intercept_slopt, + process.out.multiqc, + process.out.versions + ).match() } ) } } - + test("sarscov2 - bam - paired_end - stub") { config './nextflow.config' options '-stub' - + when { process { """ - input[0] = [ + input[0] = [ [ id:'test', single_end:false, strandedness:'forward' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/illumina/bam/test.paired_end.bam", checkIfExists: true) ] - input[1] = [ + input[1] = [ [ id:'sarscov2' ], // meta map file(params.modules_testdata_base_path + "genomics/sarscov2/genome/genome.gtf", checkIfExists: true) ] @@ -135,13 +131,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(file(process.out.scatter2d[0][1]).name).match('scatter_paired_end_stub') }, - { assert snapshot(file(process.out.boxplot[0][1]).name).match('boxplot_paired_end_stub') }, - { assert snapshot(file(process.out.hist[0][1]).name).match('hist_paired_end_stub') }, - { assert snapshot(process.out.dupmatrix).match('dupmatrix_paired_end_stub') }, - { assert snapshot(process.out.intercept_slopt).match('intercept_slope_paired_end_stub') }, - { assert snapshot(process.out.multiqc).match('multiqc_paired_end_stub') }, - { assert snapshot(process.out.versions).match('versions_paired_end_stub') } + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/dupradar/tests/main.nf.test.snap b/modules/nf-core/dupradar/tests/main.nf.test.snap index e64aa729892..dc7aba4a55a 100644 --- a/modules/nf-core/dupradar/tests/main.nf.test.snap +++ b/modules/nf-core/dupradar/tests/main.nf.test.snap @@ -1,16 +1,9 @@ { - "boxplot_single_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.021785925" - }, - "multiqc_single_end_stub": { + "sarscov2 - bam - single_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -18,164 +11,201 @@ "single_end": true, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36647107" - }, - "versions_paired_end_stub": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.545356706" - }, - "multiqc_paired_end": { - "content": [ + ], + null, [ [ { "id": "test", - "single_end": false, + "single_end": true, "strandedness": "forward" }, [ - "test_dup_intercept_mqc.txt:md5,d69369924aeb9695b0e97e755e0d9ea3", - "test_duprateExpDensCurve_mqc.txt:md5,f4a50dc09de81219ed4449c11153ba6e" + "test_dup_intercept_mqc.txt:md5,11961f0962ffc70e42aa57a12984e0fc", + "test_duprateExpDensCurve_mqc.txt:md5,f7d3432ef52047336b156446281aa6ac" ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.730550241" - }, - "boxplot_paired_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.512885589" - }, - "scatter_single_end": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.010955775" - }, - "hist_single_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.353498911" - }, - "scatter_paired_end_stub": { - "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.507974569" - }, - "dupmatrix_single_end": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,2beda4c140548a2b8c91bf6bde01ddc6" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.027798024" - }, - "dupmatrix_single_end_stub": { - "content": [ + ], [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:43.358373221" + "timestamp": "2024-07-11T11:21:44.31238184" }, - "multiqc_single_end": { + "sarscov2 - bam - single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": true, - "strandedness": "forward" - }, + { + "0": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ [ - "test_dup_intercept_mqc.txt:md5,7b6fb70cbede0d20ffa576a0cc0b249d", - "test_duprateExpDensCurve_mqc.txt:md5,49b44937123c14b622f346cb6156dd4f" + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": true, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.036463063" - }, - "versions_single_end": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:33.043006923" + "timestamp": "2024-07-11T11:21:56.741878886" }, - "multiqc_paired_end_stub": { + "sarscov2 - bam - paired_end": { "content": [ + "test_duprateExpBoxplot.pdf", + "test_expressionHist.pdf", + "test_duprateExpDens.pdf", [ [ { @@ -183,18 +213,10 @@ "single_end": false, "strandedness": "forward" }, - "test_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.537047876" - }, - "dupmatrix_paired_end_stub": { - "content": [ + ], + null, [ [ { @@ -202,159 +224,183 @@ "single_end": false, "strandedness": "forward" }, - "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test_dup_intercept_mqc.txt:md5,002855b42a71aa0f407ef7fa19df9ac3", + "test_duprateExpDensCurve_mqc.txt:md5,e797d8e256c5b2ab3aad1801360f1a77" + ] ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.527609018" - }, - "boxplot_paired_end": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.709324683" - }, - "hist_paired_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.713514333" - }, - "versions_paired_end": { - "content": [ + ], [ "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.737814831" - }, - "versions_single_end_stub": { - "content": [ - [ - "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.372024419" - }, - "hist_single_end": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.024192244" - }, - "boxplot_single_end_stub": { - "content": [ - "test_duprateExpBoxplot.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.349385822" - }, - "intercept_slope_paired_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.723431072" - }, - "intercept_slope_single_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:43.36234388" - }, - "intercept_slope_paired_end_stub": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:08:05.532566607" - }, - "hist_paired_end_stub": { - "content": [ - "test_expressionHist.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:08:05.518776728" + "timestamp": "2024-07-11T11:22:10.053957095" }, - "scatter_paired_end": { + "sarscov2 - bam - paired_end - stub": { "content": [ - "test_duprateExpDens.pdf" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.703114124" - }, - "dupmatrix_paired_end": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false, - "strandedness": "forward" - }, - "test_dupMatrix.txt:md5,5a327feaba56e5ea96a2cb7e8577e196" + { + "0": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" + ], + "boxplot": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpBoxplot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "dupmatrix": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_dupMatrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hist": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_expressionHist.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "intercept_slope": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_intercept_slope.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "multiqc": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + [ + "test_dup_intercept_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_duprateExpDensCurve_mqc.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "scatter2d": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test_duprateExpDens.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "session_info": [ + [ + { + "id": "test", + "single_end": false, + "strandedness": "forward" + }, + "test.R_sessionInfo.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cd524e9e74304c2930cf28e2d741d351" ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:55.717362643" - }, - "intercept_slope_single_end": { - "content": null, - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" - }, - "timestamp": "2024-03-07T13:07:33.033103464" - }, - "scatter_single_end_stub": { - "content": [ - "test_duprateExpDens.pdf" + } ], "meta": { "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nextflow": "24.04.2" }, - "timestamp": "2024-03-07T13:07:43.344100132" + "timestamp": "2024-07-11T11:22:22.134058061" } } \ No newline at end of file diff --git a/modules/nf-core/dysgu/environment.yml b/modules/nf-core/dysgu/environment.yml new file mode 100644 index 00000000000..f3b35f5ac4f --- /dev/null +++ b/modules/nf-core/dysgu/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - dysgu diff --git a/modules/nf-core/dysgu/main.nf b/modules/nf-core/dysgu/main.nf new file mode 100644 index 00000000000..6aa1deea958 --- /dev/null +++ b/modules/nf-core/dysgu/main.nf @@ -0,0 +1,55 @@ +process DYSGU { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'oras://community.wave.seqera.io/library/dysgu:48830f55112c399e': + 'community.wave.seqera.io/library/dysgu:faf71ac972284412' }" + + input: + tuple val(meta), path(input), path(index) + tuple val(meta2), path(fasta), path(fai) + + output: + tuple val(meta), path('*.vcf.gz') , emit: vcf + tuple val(meta), path('*.vcf.gz.tbi') , emit: tbi + path 'versions.yml' , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def args3 = task.ext.args3 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + dysgu run \\ + -p ${task.cpus} \\ + -x \\ + $fasta \\ + . \\ + $input \\ + | bgzip ${args2} --threads ${task.cpus} --stdout > ${prefix}.vcf.gz + tabix ${args3} ${prefix}.vcf.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + dysgu: \$(dysgu --version 2>&1) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + echo "" | gzip > ${prefix}.vcf.gz + touch ${prefix}.vcf.gz.tbi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + dysgu: \$(dysgu --version 2>&1) + END_VERSIONS + """ +} diff --git a/modules/nf-core/dysgu/meta.yml b/modules/nf-core/dysgu/meta.yml new file mode 100644 index 00000000000..67c6c70abf8 --- /dev/null +++ b/modules/nf-core/dysgu/meta.yml @@ -0,0 +1,68 @@ +name: dysgu + +description: Dysgu calls structural variants (SVs) from mapped sequencing reads. It is designed for accurate and efficient detection of structural variations. +keywords: + - structural variants + - sv + - vcf +tools: + - dysgu: + description: Structural variant caller for mapped sequencing data + homepage: https://github.com/kcleal/dysgu + documentation: https://github.com/kcleal/dysgu/blob/master/README.rst + tool_dev_url: https://github.com/kcleal/dysgu + doi: "10.1093/nar/gkac039" + licence: ["GPL-3.0-or-later"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - input: + type: file + description: Input BAM file + pattern: "*.bam" + - index: + type: file + description: BAM index file + pattern: "*.bai" + - fasta: + type: file + description: Genome reference FASTA file + pattern: "*.{fa,fasta}" + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'genome' ] + - fai: + type: file + description: Genome reference FASTA index file + pattern: "*.{fa.fai,fasta.fai}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1' ] + - vcf: + type: file + description: VCF file with identified structural variants + pattern: "*.{vcf.gz}" + - tbi: + type: file + description: The index of the BCF/VCF file + pattern: "*.{vcf.gz.tbi}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@famosab" + - "@poddarharsh15" +maintainers: + - "@poddarharsh15" diff --git a/modules/nf-core/dysgu/tests/main.nf.test b/modules/nf-core/dysgu/tests/main.nf.test new file mode 100644 index 00000000000..1714b5b7ab3 --- /dev/null +++ b/modules/nf-core/dysgu/tests/main.nf.test @@ -0,0 +1,96 @@ +nextflow_process { + + name "Test Process DYSGU" + script "../main.nf" + process "DYSGU" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "dysgu" + + + test("human - bam") { + + when { + process { + """ + input[0] = [ [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ [ id:'reference'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") } + ) + } + + } + + + test("human - cram") { + + when { + process { + """ + input[0] = [ [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.recalibrated.sorted.cram.crai', checkIfExists: true) + ] + input[1] = [ [ id:'reference'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") } + ) + } + + } + + + test("human - bam - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.recalibrated.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ [ id:'reference'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/dysgu/tests/main.nf.test.snap b/modules/nf-core/dysgu/tests/main.nf.test.snap new file mode 100644 index 00000000000..ecf725f5d30 --- /dev/null +++ b/modules/nf-core/dysgu/tests/main.nf.test.snap @@ -0,0 +1,75 @@ +{ + "human - bam - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,cf1e0487502108690603dd16f034bf5e" + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,cf1e0487502108690603dd16f034bf5e" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-08T13:18:45.660262" + }, + "human - bam": { + "content": [ + [ + "versions.yml:md5,cf1e0487502108690603dd16f034bf5e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-08T13:19:56.62312" + }, + "human - cram": { + "content": [ + [ + "versions.yml:md5,cf1e0487502108690603dd16f034bf5e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-08T13:20:04.494134" + } +} \ No newline at end of file diff --git a/modules/nf-core/dysgu/tests/nextflow.config b/modules/nf-core/dysgu/tests/nextflow.config new file mode 100644 index 00000000000..5336ab55cf4 --- /dev/null +++ b/modules/nf-core/dysgu/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: DYSGU { + ext.args = '--exome ' + } +} \ No newline at end of file diff --git a/modules/nf-core/dysgu/tests/tags.yml b/modules/nf-core/dysgu/tests/tags.yml new file mode 100644 index 00000000000..6bffc95e916 --- /dev/null +++ b/modules/nf-core/dysgu/tests/tags.yml @@ -0,0 +1,2 @@ +dysgu: + - "modules/nf-core/dysgu/**" diff --git a/modules/nf-core/ectyper/environment.yml b/modules/nf-core/ectyper/environment.yml index 1fb6b720756..7e7f57a874d 100644 --- a/modules/nf-core/ectyper/environment.yml +++ b/modules/nf-core/ectyper/environment.yml @@ -1,7 +1,5 @@ -name: ectyper channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ectyper=1.0.0 diff --git a/modules/nf-core/ectyper/tests/main.nf.test b/modules/nf-core/ectyper/tests/main.nf.test new file mode 100644 index 00000000000..f1b962bb730 --- /dev/null +++ b/modules/nf-core/ectyper/tests/main.nf.test @@ -0,0 +1,40 @@ + +nextflow_process { + + name "Test Process ECTYPER" + script "../main.nf" + process "ECTYPER" + + tag "modules" + tag "modules_nfcore" + tag "ectyper" + + test("test-ectyper") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log[0][1]).name, + process.out.tsv, + file(process.out.txt[0][1]).readLines()[0], + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/ectyper/tests/main.nf.test.snap b/modules/nf-core/ectyper/tests/main.nf.test.snap new file mode 100644 index 00000000000..a56521e58f9 --- /dev/null +++ b/modules/nf-core/ectyper/tests/main.nf.test.snap @@ -0,0 +1,25 @@ +{ + "test-ectyper": { + "content": [ + "ectyper.log", + [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,ba923d7c7ee7d1047466aafc9a9df208" + ] + ], + "antigen\tbitscore\tdesc\tgene\tgenome_name\tlength\tname\tpident\tqcovhsp\tqlen\tqseqid\tscore\tsend\tsframe\tsharedallele\tsseq\tsseqid\tsstart\ttype", + [ + "versions.yml:md5,c7fe273c583a801fec7101806fc75d7d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T12:49:29.892782" + } +} \ No newline at end of file diff --git a/modules/nf-core/eggnogmapper/environment.yml b/modules/nf-core/eggnogmapper/environment.yml index f4fb6fdc0fb..2092ea512ba 100644 --- a/modules/nf-core/eggnogmapper/environment.yml +++ b/modules/nf-core/eggnogmapper/environment.yml @@ -1,7 +1,5 @@ -name: eggnogmapper channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::eggnog-mapper=2.1.12 diff --git a/modules/nf-core/eggnogmapper/meta.yml b/modules/nf-core/eggnogmapper/meta.yml index b07c27e7558..95090a10c65 100644 --- a/modules/nf-core/eggnogmapper/meta.yml +++ b/modules/nf-core/eggnogmapper/meta.yml @@ -32,6 +32,11 @@ input: type: directory description: Directory containing eggnog database files (e.g. eggnog-mapper/data) pattern: "*" + - meta2: + type: map + description: | + Groovy Map containing database information + e.g. `[ id:'test' ]` - eggnog_diamond_db: type: file description: The eggnog Diamond protein database file (e.g. eggnog-mapper/data/eggnog_proteins.dmnd) diff --git a/modules/nf-core/eggnogmapper/tests/main.nf.test b/modules/nf-core/eggnogmapper/tests/main.nf.test index 6f06ca9d68a..5f36b44caab 100644 --- a/modules/nf-core/eggnogmapper/tests/main.nf.test +++ b/modules/nf-core/eggnogmapper/tests/main.nf.test @@ -13,7 +13,7 @@ nextflow_process { script "../../diamond/makedb/main.nf" process { """ - input[0] = [ [id:'test2'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test2'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = [] input[2] = [] input[3] = [] @@ -30,7 +30,7 @@ nextflow_process { } process { """ - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] eggnog_db = file("https://github.com/nf-core/test-datasets/raw/eddf5b0e3336e0f93c81d4b4843b07257f9efaec/data/delete_me/eggnogmapper/eggnog.db", checkIfExists: true) eggnog_db.copyTo("${workDir}/tmp/eggnog.db") eggnog_data_dir = "${workDir}/tmp/" @@ -72,7 +72,7 @@ nextflow_process { | combine ( Channel.fromPath( "${workDir}/tmp/" ) ) eggnog_data_dir = ch_synced_inputs.map { sync_status, data_dir -> data_dir } - input[0] = [ [id:'test'], file(params.test_data['sarscov2']['genome']['proteome_fasta'], checkIfExists: true) ] + input[0] = [ [id:'test'], file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/proteome.fasta', checkIfExists: true) ] input[1] = [] input[2] = eggnog_data_dir input[3] = [[], []] diff --git a/modules/nf-core/eido/convert/environment.yml b/modules/nf-core/eido/convert/environment.yml index e41751abc07..de4dc485911 100644 --- a/modules/nf-core/eido/convert/environment.yml +++ b/modules/nf-core/eido/convert/environment.yml @@ -1,7 +1,6 @@ -name: eido_convert channels: - conda-forge - bioconda - - defaults dependencies: - - conda-forge::eido=0.1.9 + - conda-forge::eido=0.2.2 + - conda-forge::peppy=0.35.7 diff --git a/modules/nf-core/eido/convert/main.nf b/modules/nf-core/eido/convert/main.nf index 3cb2552c088..1c1cb06d8bb 100644 --- a/modules/nf-core/eido/convert/main.nf +++ b/modules/nf-core/eido/convert/main.nf @@ -4,8 +4,8 @@ process EIDO_CONVERT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/eido/0.1.9_cv1/eido_0.1.9_cv1.sif' : - 'docker.io/biocontainers/eido:0.1.9_cv1' }" + 'oras://community.wave.seqera.io/library/eido_peppy:7f50d6891ca1a6d9' : + 'community.wave.seqera.io/library/eido_peppy:0de9533940828c4d' }" input: path samplesheet @@ -35,4 +35,16 @@ process EIDO_CONVERT { eido: \$(echo \$(eido --version 2>&1) | sed 's/^.*eido //;s/ .*//' ) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "samplesheet_converted" + """ + touch ${prefix}.${format} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + eido: \$(echo \$(eido --version 2>&1) | sed 's/^.*eido //;s/ .*//' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/eido/convert/meta.yml b/modules/nf-core/eido/convert/meta.yml index c340701491b..9c84140154f 100644 --- a/modules/nf-core/eido/convert/meta.yml +++ b/modules/nf-core/eido/convert/meta.yml @@ -12,7 +12,7 @@ tools: homepage: "http://eido.databio.org/en/latest/" documentation: "http://eido.databio.org/en/latest/" doi: "10.1093/gigascience/giab077" - licence: "BSD-2-Clause" + licence: ["BSD-2-Clause"] input: - samplesheet: type: file diff --git a/modules/nf-core/eido/convert/tests/main.nf.test b/modules/nf-core/eido/convert/tests/main.nf.test new file mode 100644 index 00000000000..51ac502fc8e --- /dev/null +++ b/modules/nf-core/eido/convert/tests/main.nf.test @@ -0,0 +1,78 @@ + +nextflow_process { + + name "Test Process EIDO_CONVERT" + script "../main.nf" + process "EIDO_CONVERT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "eido" + tag "eido/convert" + + test("test-eido-convert-nextflow-samplesheet") { + + when { + process { + """ + input[0] = file("https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_nextflow_original_samplesheet.csv", checkIfExists: true) + input[1] = "csv" + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-eido-convert-pep-project") { + + when { + process { + """ + input[0] = file("https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_pep_format_files/config.yaml", checkIfExists: true) + input[1] = "csv" + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-eido-convert-pep-project-stub") { + options '-stub' + + when { + process { + """ + input[0] = file("https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_pep_format_files/config.yaml", checkIfExists: true) + input[1] = "csv" + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/eido/convert/tests/main.nf.test.snap b/modules/nf-core/eido/convert/tests/main.nf.test.snap new file mode 100644 index 00000000000..f65c20c0b16 --- /dev/null +++ b/modules/nf-core/eido/convert/tests/main.nf.test.snap @@ -0,0 +1,71 @@ +{ + "test-eido-convert-nextflow-samplesheet": { + "content": [ + { + "0": [ + "versions.yml:md5,a9368addf9c927f1ab5b38033c05709b" + ], + "1": [ + "samplesheet_converted.csv:md5,7aa4da4944650b9c7c451c5dfbeae663" + ], + "samplesheet_converted": [ + "samplesheet_converted.csv:md5,7aa4da4944650b9c7c451c5dfbeae663" + ], + "versions": [ + "versions.yml:md5,a9368addf9c927f1ab5b38033c05709b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T11:12:37.775236" + }, + "test-eido-convert-pep-project": { + "content": [ + { + "0": [ + "versions.yml:md5,a9368addf9c927f1ab5b38033c05709b" + ], + "1": [ + "samplesheet_converted.csv:md5,2191ccc9c9c1ac4577726ea24cdb9fda" + ], + "samplesheet_converted": [ + "samplesheet_converted.csv:md5,2191ccc9c9c1ac4577726ea24cdb9fda" + ], + "versions": [ + "versions.yml:md5,a9368addf9c927f1ab5b38033c05709b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T11:11:33.866318" + }, + "test-eido-convert-pep-project-stub": { + "content": [ + { + "0": [ + "versions.yml:md5,a9368addf9c927f1ab5b38033c05709b" + ], + "1": [ + "samplesheet_converted.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "samplesheet_converted": [ + "samplesheet_converted.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,a9368addf9c927f1ab5b38033c05709b" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T11:04:43.717997" + } +} \ No newline at end of file diff --git a/modules/nf-core/eido/convert/tests/nextflow.config b/modules/nf-core/eido/convert/tests/nextflow.config new file mode 100644 index 00000000000..5788e09bdb9 --- /dev/null +++ b/modules/nf-core/eido/convert/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'EIDO_CONVERT' { + ext.args = '--st-index sample' + } +} diff --git a/modules/nf-core/eido/validate/environment.yml b/modules/nf-core/eido/validate/environment.yml index b529a66f4cb..1bbd80bb62f 100644 --- a/modules/nf-core/eido/validate/environment.yml +++ b/modules/nf-core/eido/validate/environment.yml @@ -1,7 +1,5 @@ -name: eido_validate channels: - conda-forge - bioconda - - defaults dependencies: - conda-forge::eido=0.1.9 diff --git a/modules/nf-core/eido/validate/meta.yml b/modules/nf-core/eido/validate/meta.yml index f585a3f58a5..3d895af2903 100644 --- a/modules/nf-core/eido/validate/meta.yml +++ b/modules/nf-core/eido/validate/meta.yml @@ -12,7 +12,7 @@ tools: homepage: "http://eido.databio.org/en/latest/" documentation: "http://eido.databio.org/en/latest/" doi: "10.1093/gigascience/giab077" - licence: "BSD-2-Clause" + licence: ["BSD-2-Clause"] input: - samplesheet: type: file diff --git a/modules/nf-core/eido/validate/tests/main.nf.test b/modules/nf-core/eido/validate/tests/main.nf.test new file mode 100644 index 00000000000..7cbbbf5de77 --- /dev/null +++ b/modules/nf-core/eido/validate/tests/main.nf.test @@ -0,0 +1,64 @@ + +nextflow_process { + + name "Test Process EIDO_VALIDATE" + script "../main.nf" + process "EIDO_VALIDATE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "eido" + tag "eido/validate" + + test("test-eido-validate-on-nextflow-samplesheet") { + + when { + process { + """ + input[0] = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/pep/test_nextflow_original_samplesheet.csv", checkIfExists: true) + input[1] = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/pep/test_samplesheet_schema.yaml", checkIfExists: true) + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log[0]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-eido-validate-on-pep-config") { + + when { + process { + """ + input[0] = file("https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_pep_format_files/config.yaml", checkIfExists: true) + input[1] = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/pep/test_samplesheet_schema.yaml", checkIfExists: true) + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log[0]).name, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/eido/validate/tests/main.nf.test.snap b/modules/nf-core/eido/validate/tests/main.nf.test.snap new file mode 100644 index 00000000000..5d64b46021e --- /dev/null +++ b/modules/nf-core/eido/validate/tests/main.nf.test.snap @@ -0,0 +1,28 @@ +{ + "test-eido-validate-on-pep-config": { + "content": [ + "validation.log", + [ + "versions.yml:md5,9a58d89818b4099d547bbaa9d2f2d8d9" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T14:41:24.013292" + }, + "test-eido-validate-on-nextflow-samplesheet": { + "content": [ + "validation.log", + [ + "versions.yml:md5,9a58d89818b4099d547bbaa9d2f2d8d9" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T14:41:16.791933" + } +} \ No newline at end of file diff --git a/modules/nf-core/eido/validate/tests/nextflow.config b/modules/nf-core/eido/validate/tests/nextflow.config new file mode 100644 index 00000000000..94652c3971c --- /dev/null +++ b/modules/nf-core/eido/validate/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'EIDO_VALIDATE' { + ext.args = '--st-index sample' + } +} diff --git a/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/environment.yml b/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/environment.yml index 9ac9ee9fe55..40586837948 100644 --- a/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/environment.yml +++ b/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/environment.yml @@ -1,7 +1,5 @@ -name: eigenstratdatabasetools_eigenstratsnpcoverage channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::eigenstratdatabasetools=1.1.0 diff --git a/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/meta.yml b/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/meta.yml index cf48d5ce2e4..bb4c7f84b7f 100644 --- a/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/meta.yml +++ b/modules/nf-core/eigenstratdatabasetools/eigenstratsnpcoverage/meta.yml @@ -11,7 +11,7 @@ tools: description: "A set of tools to compare and manipulate the contents of EingenStrat databases, and to calculate SNP coverage statistics in such databases." documentation: "https://github.com/TCLamnidis/EigenStratDatabaseTools/README.md" tool_dev_url: "https://github.com/TCLamnidis/EigenStratDatabaseTools" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/eklipse/environment.yml b/modules/nf-core/eklipse/environment.yml index e33007095e3..b638fba1d1d 100644 --- a/modules/nf-core/eklipse/environment.yml +++ b/modules/nf-core/eklipse/environment.yml @@ -1,7 +1,5 @@ -name: eklipse channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::eklipse=1.8 diff --git a/modules/nf-core/eklipse/tests/main.nf.test b/modules/nf-core/eklipse/tests/main.nf.test index 73cf11888aa..fb0be6d43c2 100644 --- a/modules/nf-core/eklipse/tests/main.nf.test +++ b/modules/nf-core/eklipse/tests/main.nf.test @@ -14,10 +14,10 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_illumina_mt_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_illumina_mt_bam_bai'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test_illumina_mt.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test_illumina_mt.bam.bai', checkIfExists: true) ] - input[1] = [ file(params.test_data['homo_sapiens']['genome']['genome_mt_gb'], checkIfExists: true) ] + input[1] = [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.NC_012920_1.gb', checkIfExists: true) ] """ } } diff --git a/modules/nf-core/elprep/filter/environment.yml b/modules/nf-core/elprep/filter/environment.yml index 88fc4785657..38dd4f4724b 100644 --- a/modules/nf-core/elprep/filter/environment.yml +++ b/modules/nf-core/elprep/filter/environment.yml @@ -1,7 +1,5 @@ -name: elprep_filter channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::elprep=5.1.2 + - bioconda::elprep=5.1.3 diff --git a/modules/nf-core/elprep/filter/main.nf b/modules/nf-core/elprep/filter/main.nf index abe59bb087c..07fcf212146 100644 --- a/modules/nf-core/elprep/filter/main.nf +++ b/modules/nf-core/elprep/filter/main.nf @@ -4,8 +4,8 @@ process ELPREP_FILTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/elprep:5.1.2--he881be0_0': - 'biocontainers/elprep:5.1.2--he881be0_0' }" + 'https://depot.galaxyproject.org/singularity/elprep:5.1.3--he881be0_1': + 'biocontainers/elprep:5.1.3--he881be0_1' }" input: tuple val(meta), path(bam) @@ -24,6 +24,7 @@ process ELPREP_FILTER { output: tuple val(meta), path("output/**.{bam,sam}") ,emit: bam + tuple val(meta), path("logs/elprep/elprep*") ,emit: logs tuple val(meta), path("*.metrics.txt") ,optional: true, emit: metrics tuple val(meta), path("*.recall") ,optional: true, emit: recall tuple val(meta), path("*.vcf.gz") ,optional: true, emit: gvcf @@ -79,6 +80,7 @@ process ELPREP_FILTER { ${activity_profile_cmd} \\ ${assembly_regions_cmd} \\ --nr-of-threads ${task.cpus} \\ + --log-path ./ \\ $args cat <<-END_VERSIONS > versions.yml @@ -86,4 +88,22 @@ process ELPREP_FILTER { elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def suffix = args.contains("--output-type sam") ? "sam" : "bam" + def timestamp = "${java.time.OffsetDateTime.now().format(java.time.format.DateTimeFormatter.ISO_DATE_TIME)}" + """ + mkdir output + mkdir -p logs/elprep + + touch output/${prefix}.${suffix} + touch logs/elprep/elprep-${timestamp}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/elprep/filter/meta.yml b/modules/nf-core/elprep/filter/meta.yml index 4876c3bce3e..01d76648e91 100644 --- a/modules/nf-core/elprep/filter/meta.yml +++ b/modules/nf-core/elprep/filter/meta.yml @@ -13,7 +13,7 @@ tools: documentation: "https://github.com/ExaScience/elprep" tool_dev_url: "https://github.com/ExaScience/elprep" doi: "10.1371/journal.pone.0244471" - licence: "['AGPL v3']" + licence: ["AGPL v3"] input: - meta: type: map @@ -42,7 +42,7 @@ input: type: file description: Elfasta file, required for BQSR and variant calling. pattern: "*.elfasta" - - known_sites: + - known_sites_elsites: type: file description: Optional elsites file containing known SNPs for BQSR. pattern: "*.elsites" @@ -77,6 +77,10 @@ output: type: file description: Sorted, markdup, optionally BQSR BAM/SAM file pattern: "*.{bam,sam}" + - logs: + type: list + description: Runtime log files + pattern: "elprep-*.log" - metrics: type: file description: Optional duplicate metrics file generated by elprep diff --git a/modules/nf-core/elprep/filter/tests/main.nf.test b/modules/nf-core/elprep/filter/tests/main.nf.test new file mode 100644 index 00000000000..413bff1a5a8 --- /dev/null +++ b/modules/nf-core/elprep/filter/tests/main.nf.test @@ -0,0 +1,103 @@ + +nextflow_process { + + name "Test Process ELPREP_FILTER" + script "../main.nf" + process "ELPREP_FILTER" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "elprep" + tag "elprep/filter" + + test("test-elprep-filter") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + input[1] = true + input[2] = true + input[3] = [] + input[4] = [] + input[5] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.elfasta', checkIfExists: true) + input[6] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.elsites', checkIfExists: true) + input[7] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + input[8] = [] + input[9] = [] + input[10] = true + input[11] = true + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.logs }, // name is unstable + { assert snapshot( + bam(process.out.bam[0][1]).getReadsMD5(), + file(process.out.metrics[0][1]).readLines()[5..7], + process.out.recall, + file(process.out.gvcf[0][1]).name, // unstable + process.out.table, + process.out.activity_profile, + process.out.assembly_regions, + process.out.versions + ).match() + } + ) + } + } + + test("test-elprep-filter-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + input[1] = true + input[2] = true + input[3] = [] + input[4] = [] + input[5] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.elfasta', checkIfExists: true) + input[6] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/vcf/dbsnp_146.hg38.elsites', checkIfExists: true) + input[7] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + input[8] = [] + input[9] = [] + input[10] = true + input[11] = true + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.logs }, // name is unstable + { assert snapshot( + process.out.bam, + process.out.metrics, + process.out.recall, + process.out.gvcf, + process.out.table, + process.out.activity_profile, + process.out.assembly_regions, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/elprep/filter/tests/main.nf.test.snap b/modules/nf-core/elprep/filter/tests/main.nf.test.snap new file mode 100644 index 00000000000..49b13c2408f --- /dev/null +++ b/modules/nf-core/elprep/filter/tests/main.nf.test.snap @@ -0,0 +1,90 @@ +{ + "test-elprep-filter": { + "content": [ + "463ac3b905fbf4ddf113a94dbfa8d69f", + [ + "## METRICS CLASS\tpicard.sam.DuplicationMetrics", + "LIBRARY\tUNPAIRED_READS_EXAMINED\tREAD_PAIRS_EXAMINED\tSECONDARY_OR_SUPPLEMENTARY_RDS\tUNMAPPED_READS\tUNPAIRED_READ_DUPLICATES\tREAD_PAIR_DUPLICATES\tREAD_PAIR_OPTICAL_DUPLICATES\tPERCENT_DUPLICATION\tESTIMATED_LIBRARY_SIZE", + "Unknown Library\t0\t0\t0\t0\t0\t0\t0\tNaN" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.recall:md5,291d996c0bb26193df85a0c9d7390073" + ] + ], + "test.g.vcf.gz", + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.activity_profile.igv:md5,52f765837ac969cb82c3c75be5608d4f" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.assembly_regions.igv:md5,861fd57e241bd89cebe8f21267fb4c78" + ] + ], + [ + "versions.yml:md5,8193703d0cedd662b76ea48940dac55d" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T19:53:43.782054" + }, + "test-elprep-filter-stub": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,8193703d0cedd662b76ea48940dac55d" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-06T19:56:09.856424" + } +} \ No newline at end of file diff --git a/modules/nf-core/elprep/filter/tests/nextflow.config b/modules/nf-core/elprep/filter/tests/nextflow.config new file mode 100644 index 00000000000..3304bd3555f --- /dev/null +++ b/modules/nf-core/elprep/filter/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: ELPREP_FILTER { + ext.args = "--mark-duplicates " + } +} diff --git a/modules/nf-core/elprep/merge/environment.yml b/modules/nf-core/elprep/merge/environment.yml index 4bfbdb6bc8b..841e7cdb7bb 100644 --- a/modules/nf-core/elprep/merge/environment.yml +++ b/modules/nf-core/elprep/merge/environment.yml @@ -1,7 +1,5 @@ -name: elprep_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::elprep=5.1.2 diff --git a/modules/nf-core/elprep/merge/meta.yml b/modules/nf-core/elprep/merge/meta.yml index 6dd8ebacfba..ec7ec6de292 100644 --- a/modules/nf-core/elprep/merge/meta.yml +++ b/modules/nf-core/elprep/merge/meta.yml @@ -11,7 +11,7 @@ tools: documentation: "https://github.com/ExaScience/elprep" tool_dev_url: "https://github.com/ExaScience/elprep" doi: "10.1371/journal.pone.0244471" - licence: "['AGPL v3']" + licence: ["AGPL v3"] input: - meta: type: map diff --git a/modules/nf-core/elprep/split/environment.yml b/modules/nf-core/elprep/split/environment.yml index fad2617b13a..38dd4f4724b 100644 --- a/modules/nf-core/elprep/split/environment.yml +++ b/modules/nf-core/elprep/split/environment.yml @@ -1,7 +1,5 @@ -name: elprep_split channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::elprep=5.1.2 + - bioconda::elprep=5.1.3 diff --git a/modules/nf-core/elprep/split/main.nf b/modules/nf-core/elprep/split/main.nf index 1f1c56a4759..c5bf3082a08 100644 --- a/modules/nf-core/elprep/split/main.nf +++ b/modules/nf-core/elprep/split/main.nf @@ -4,8 +4,8 @@ process ELPREP_SPLIT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/elprep:5.1.2--he881be0_0': - 'biocontainers/elprep:5.1.2--he881be0_0' }" + 'https://depot.galaxyproject.org/singularity/elprep:5.1.3--he881be0_1': + 'biocontainers/elprep:5.1.3--he881be0_1' }" input: tuple val(meta), path(bam) @@ -28,6 +28,7 @@ process ELPREP_SPLIT { mv ${bam} input/ mkdir ${prefix} + mkdir logs elprep split \\ input \\ @@ -35,6 +36,7 @@ process ELPREP_SPLIT { $args \\ $single_end \\ --nr-of-threads $task.cpus \\ + --log-path ./logs \\ --output-prefix $prefix cat <<-END_VERSIONS > versions.yml @@ -42,4 +44,20 @@ process ELPREP_SPLIT { elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def out_type = args.contains('--output-type bam') ? 'bam' : 'sam' + + """ + mkdir -p output + + touch output/${prefix}-group00001.${out_type} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + elprep: \$(elprep 2>&1 | head -n2 | tail -n1 |sed 's/^.*version //;s/ compiled.*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/elprep/split/meta.yml b/modules/nf-core/elprep/split/meta.yml index 040e4815497..c3854146a95 100644 --- a/modules/nf-core/elprep/split/meta.yml +++ b/modules/nf-core/elprep/split/meta.yml @@ -3,6 +3,7 @@ description: Split bam file into manageable chunks keywords: - bam - split by chromosome + - chunk tools: - "elprep": description: "elPrep is a high-performance tool for preparing .sam/.bam files for variant calling in sequencing pipelines. It can be used as a drop-in replacement for SAMtools/Picard/GATK4." @@ -10,7 +11,7 @@ tools: documentation: "https://github.com/ExaScience/elprep" tool_dev_url: "https://github.com/ExaScience/elprep" doi: "10.1371/journal.pone.0244471" - licence: "['AGPL v3']" + licence: ["AGPL v3"] input: - meta: type: map diff --git a/modules/nf-core/elprep/split/tests/main.nf.test b/modules/nf-core/elprep/split/tests/main.nf.test new file mode 100644 index 00000000000..31a1725aeca --- /dev/null +++ b/modules/nf-core/elprep/split/tests/main.nf.test @@ -0,0 +1,63 @@ + +nextflow_process { + + name "Test Process ELPREP_SPLIT" + script "../main.nf" + process "ELPREP_SPLIT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "elprep" + tag "elprep/split" + + test("test-elprep-split") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.bam[0][1].collect { file(it).name }, // bam -> htsjdk.samtools.SAMFormatException: Error parsing SAM header. Unrecognized header record type. + process.out.versions + ).match() + } + ) + } + } + + test("test-elprep-split-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/elprep/split/tests/main.nf.test.snap b/modules/nf-core/elprep/split/tests/main.nf.test.snap new file mode 100644 index 00000000000..7f515ecfa2c --- /dev/null +++ b/modules/nf-core/elprep/split/tests/main.nf.test.snap @@ -0,0 +1,54 @@ +{ + "test-elprep-split": { + "content": [ + [ + "test-group00001.bam", + "test-unmapped.bam", + "test-spread.bam" + ], + [ + "versions.yml:md5,fd989d5e1ce05707a9a09560821d89bf" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T21:43:58.227397" + }, + "test-elprep-split-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test-group00001.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,fd989d5e1ce05707a9a09560821d89bf" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test-group00001.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,fd989d5e1ce05707a9a09560821d89bf" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T21:41:54.304571" + } +} \ No newline at end of file diff --git a/modules/nf-core/elprep/split/tests/nextflow.config b/modules/nf-core/elprep/split/tests/nextflow.config new file mode 100644 index 00000000000..f6b0acea71a --- /dev/null +++ b/modules/nf-core/elprep/split/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName : ELPREP_SPLIT { + ext.args = "--contig-group-size 1 --output-type bam" + } +} diff --git a/modules/nf-core/emboss/cons/environment.yml b/modules/nf-core/emboss/cons/environment.yml index 84758784eac..6c075a72d92 100644 --- a/modules/nf-core/emboss/cons/environment.yml +++ b/modules/nf-core/emboss/cons/environment.yml @@ -1,7 +1,5 @@ -name: emboss_cons channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::emboss=6.6.0 diff --git a/modules/nf-core/emboss/cons/tests/main.nf.test b/modules/nf-core/emboss/cons/tests/main.nf.test new file mode 100644 index 00000000000..7c7818fd08a --- /dev/null +++ b/modules/nf-core/emboss/cons/tests/main.nf.test @@ -0,0 +1,57 @@ + +nextflow_process { + + name "Test Process EMBOSS_CONS" + script "../main.nf" + process "EMBOSS_CONS" + + tag "modules" + tag "modules_nfcore" + tag "emboss" + tag "emboss/cons" + + test("test-emboss-cons") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/alignment/all_sites.fas', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-emboss-cons-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/alignment/all_sites.fas', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/emboss/cons/tests/main.nf.test.snap b/modules/nf-core/emboss/cons/tests/main.nf.test.snap new file mode 100644 index 00000000000..883a6d3d6b2 --- /dev/null +++ b/modules/nf-core/emboss/cons/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-emboss-cons-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3495d4763506d986454c42f631314776" + ], + "consensus": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3495d4763506d986454c42f631314776" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:11:24.452798" + }, + "test-emboss-cons": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,af060c54c3f15b1a376048eadf9344ec" + ] + ], + "1": [ + "versions.yml:md5,3495d4763506d986454c42f631314776" + ], + "consensus": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fa:md5,af060c54c3f15b1a376048eadf9344ec" + ] + ], + "versions": [ + "versions.yml:md5,3495d4763506d986454c42f631314776" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:11:19.557103" + } +} \ No newline at end of file diff --git a/modules/nf-core/emboss/revseq/environment.yml b/modules/nf-core/emboss/revseq/environment.yml index cc8acbdfe67..6c075a72d92 100644 --- a/modules/nf-core/emboss/revseq/environment.yml +++ b/modules/nf-core/emboss/revseq/environment.yml @@ -1,7 +1,5 @@ -name: emboss_revseq channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::emboss=6.6.0 diff --git a/modules/nf-core/emboss/revseq/tests/main.nf.test b/modules/nf-core/emboss/revseq/tests/main.nf.test new file mode 100644 index 00000000000..b8f980ea6db --- /dev/null +++ b/modules/nf-core/emboss/revseq/tests/main.nf.test @@ -0,0 +1,57 @@ + +nextflow_process { + + name "Test Process EMBOSS_REVSEQ" + script "../main.nf" + process "EMBOSS_REVSEQ" + + tag "modules" + tag "modules_nfcore" + tag "emboss" + tag "emboss/revseq" + + test("test-emboss-revseq") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-emboss-revseq-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/emboss/revseq/tests/main.nf.test.snap b/modules/nf-core/emboss/revseq/tests/main.nf.test.snap new file mode 100644 index 00000000000..cf064fbebb5 --- /dev/null +++ b/modules/nf-core/emboss/revseq/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test-emboss-revseq-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.rev.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,6036bdf4f510114f18e8304e88b7c453" + ], + "revseq": [ + [ + { + "id": "test", + "single_end": false + }, + "test.rev.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6036bdf4f510114f18e8304e88b7c453" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T22:23:57.293555" + }, + "test-emboss-revseq": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.rev.fasta:md5,78a4b77f08b5c95ab24e592f543f679c" + ] + ], + "1": [ + "versions.yml:md5,6036bdf4f510114f18e8304e88b7c453" + ], + "revseq": [ + [ + { + "id": "test", + "single_end": false + }, + "test.rev.fasta:md5,78a4b77f08b5c95ab24e592f543f679c" + ] + ], + "versions": [ + "versions.yml:md5,6036bdf4f510114f18e8304e88b7c453" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-05T22:23:52.761673" + } +} \ No newline at end of file diff --git a/modules/nf-core/emboss/seqret/environment.yml b/modules/nf-core/emboss/seqret/environment.yml index 5390009c4a1..6c075a72d92 100644 --- a/modules/nf-core/emboss/seqret/environment.yml +++ b/modules/nf-core/emboss/seqret/environment.yml @@ -1,7 +1,5 @@ -name: emboss_seqret channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::emboss=6.6.0 diff --git a/modules/nf-core/emmtyper/environment.yml b/modules/nf-core/emmtyper/environment.yml index e82e5086907..93aed9cf50f 100644 --- a/modules/nf-core/emmtyper/environment.yml +++ b/modules/nf-core/emmtyper/environment.yml @@ -1,7 +1,5 @@ -name: emmtyper channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::emmtyper=0.2.0 diff --git a/modules/nf-core/emmtyper/tests/main.nf.test b/modules/nf-core/emmtyper/tests/main.nf.test new file mode 100644 index 00000000000..12884647c8a --- /dev/null +++ b/modules/nf-core/emmtyper/tests/main.nf.test @@ -0,0 +1,32 @@ + +nextflow_process { + + name "Test Process EMMTYPER" + script "../main.nf" + process "EMMTYPER" + + tag "modules" + tag "modules_nfcore" + tag "emmtyper" + + test("test-emmtyper") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/emmtyper/tests/main.nf.test.snap b/modules/nf-core/emmtyper/tests/main.nf.test.snap new file mode 100644 index 00000000000..f990ca15405 --- /dev/null +++ b/modules/nf-core/emmtyper/tests/main.nf.test.snap @@ -0,0 +1,37 @@ +{ + "test-emmtyper": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,c727ba859adec9ca8ff0e091ecf79c62" + ] + ], + "1": [ + "versions.yml:md5,8028be40b22a6bec2ce48bbc811c663a" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,c727ba859adec9ca8ff0e091ecf79c62" + ] + ], + "versions": [ + "versions.yml:md5,8028be40b22a6bec2ce48bbc811c663a" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:15:05.509952" + } +} \ No newline at end of file diff --git a/modules/nf-core/endorspy/environment.yml b/modules/nf-core/endorspy/environment.yml index ce790813a4e..fea7004305f 100644 --- a/modules/nf-core/endorspy/environment.yml +++ b/modules/nf-core/endorspy/environment.yml @@ -1,7 +1,5 @@ -name: endorspy channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::endorspy=1.3 diff --git a/modules/nf-core/endorspy/meta.yml b/modules/nf-core/endorspy/meta.yml index d1a363e01f4..4578998425b 100644 --- a/modules/nf-core/endorspy/meta.yml +++ b/modules/nf-core/endorspy/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://github.com/aidaanva/endorS.py" tool_dev_url: "https://github.com/aidaanva/endorS.py" doi: "10.7717/peerj.10947" - licence: "['GPL v3']" + licence: ["GPL v3"] input: - meta: type: map diff --git a/modules/nf-core/ensemblvep/download/environment.yml b/modules/nf-core/ensemblvep/download/environment.yml index 2ea8642fe42..283a45bbdf1 100644 --- a/modules/nf-core/ensemblvep/download/environment.yml +++ b/modules/nf-core/ensemblvep/download/environment.yml @@ -1,7 +1,5 @@ -name: ensemblvep_download channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::ensembl-vep=111.0 + - bioconda::ensembl-vep=112.0 diff --git a/modules/nf-core/ensemblvep/download/main.nf b/modules/nf-core/ensemblvep/download/main.nf index f9e025a5521..555c3c66454 100644 --- a/modules/nf-core/ensemblvep/download/main.nf +++ b/modules/nf-core/ensemblvep/download/main.nf @@ -4,8 +4,8 @@ process ENSEMBLVEP_DOWNLOAD { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ensembl-vep:111.0--pl5321h2a3209d_0' : - 'biocontainers/ensembl-vep:111.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:112.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:112.0--pl5321h2a3209d_0' }" input: tuple val(meta), val(assembly), val(species), val(cache_version) diff --git a/modules/nf-core/ensemblvep/download/tests/main.nf.test b/modules/nf-core/ensemblvep/download/tests/main.nf.test index 760c9d56431..ac41cc3f325 100644 --- a/modules/nf-core/ensemblvep/download/tests/main.nf.test +++ b/modules/nf-core/ensemblvep/download/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"112_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -41,7 +41,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"112_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version diff --git a/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap index 6ea596fbde6..9e303c5486e 100644 --- a/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap +++ b/modules/nf-core/ensemblvep/download/tests/main.nf.test.snap @@ -5,130 +5,130 @@ "0": [ [ { - "id": "111_WBcel235" + "id": "112_WBcel235" }, [ [ [ [ - "1-1000000.gz:md5,4da54db2f781d08975630811fd831585", - "10000001-11000000.gz:md5,7bee73e51d08f5e6de1796614105c5de", - "1000001-2000000.gz:md5,e8beff9020e261d78988c37e804cc89a", - "11000001-12000000.gz:md5,1a31b2dcf58822e837cd91b7a74a8b4f", - "12000001-13000000.gz:md5,34522be2ee5bd3cf51a9b151c877fe35", - "13000001-14000000.gz:md5,4e5a7b604f8aea2ad9de79b75ed89a6b", - "14000001-15000000.gz:md5,65146be110ea58b64ab8518bcbfbde9d", - "15000001-16000000.gz:md5,a39fdb7b0b056c0254574353351722eb", - "2000001-3000000.gz:md5,b72a04531477615dc4d2c530d09e60df", - "3000001-4000000.gz:md5,50dae46f370e1468c8f8f2c97cc75f0b", - "4000001-5000000.gz:md5,e58e124073689212e5311fbd8ccce415", - "5000001-6000000.gz:md5,db27434dc8be9557f97aa09a95126836", - "6000001-7000000.gz:md5,a5131e3ee41b329eb55fb3849ddb1471", - "7000001-8000000.gz:md5,61e1fbe1a82892a0f9f6ee0380fa60bc", - "8000001-9000000.gz:md5,48166dd4518ec21f597b6acca73809bb", - "9000001-10000000.gz:md5,3e416c856f40f36ec0ed3f42a93b2267" + "1-1000000.gz:md5,c7df2324c613caafe70024bb156b077c", + "10000001-11000000.gz:md5,baee612beb1fc7b931d1b4c34df9a366", + "1000001-2000000.gz:md5,4fefec2bbbcdc22022ba22e2b36fe118", + "11000001-12000000.gz:md5,e06df8391870440be75a3a0fed05ad29", + "12000001-13000000.gz:md5,3abd252ef8e0c79d7be07dfe7503c38b", + "13000001-14000000.gz:md5,9b20be645c68c1ef16f0aaadc9d1899d", + "14000001-15000000.gz:md5,c80817caa2a893c8059ad9a66e1c2c1a", + "15000001-16000000.gz:md5,595cf5694cba18c82cff8f0ab882c08a", + "2000001-3000000.gz:md5,b1e24d27d0ef74c85926c1fad795e07b", + "3000001-4000000.gz:md5,ec32b7b8263ee176c97269a34b77232d", + "4000001-5000000.gz:md5,017e3d44b66c6b343c6b9d2265f4a539", + "5000001-6000000.gz:md5,d0723825e78aceac2345548928e3c2b9", + "6000001-7000000.gz:md5,b73797333b2493592b4ebfe72c817c2d", + "7000001-8000000.gz:md5,665647b964cd5a66d8d02aa5104ca3be", + "8000001-9000000.gz:md5,d98e077bf36e071f651c9a5f7661f294", + "9000001-10000000.gz:md5,828987069dd14db0ecf1f18c05b83ea9" ], [ - "1-1000000.gz:md5,06b83c3bd2c651c5a8a96f0865d54a53", - "10000001-11000000.gz:md5,79b3348f860370d1697e6d4de128fca3", - "1000001-2000000.gz:md5,f98e31f3e25c0a419ebeee5b17527b00", - "11000001-12000000.gz:md5,5f23214fdef1f7637f6046dc751155ed", - "12000001-13000000.gz:md5,9a4422905679e543a92d47142b1acba1", - "13000001-14000000.gz:md5,c5db99e7d56f2115f8da8fe3af83314a", - "14000001-15000000.gz:md5,66b65af3732c0495dc74f3071203ac2f", - "15000001-16000000.gz:md5,d4c30dc42925cc92dc594d4145544f33", - "2000001-3000000.gz:md5,ff9b3fd1235468c738e9201e2fa98e08", - "3000001-4000000.gz:md5,c649308c7d3b4891a8c6f95e583f3a08", - "4000001-5000000.gz:md5,c53d2fa6695248d0a725ef70325aae91", - "5000001-6000000.gz:md5,5481fb4b60ebd97256f5d52c42aee0bd", - "6000001-7000000.gz:md5,94b82e096bacb091e0ef55bcd08b8ab8", - "7000001-8000000.gz:md5,83f571dfaf8b891bf27208466e6f7d8c", - "8000001-9000000.gz:md5,4f07e30c7d772544bc6e99bac371b97b", - "9000001-10000000.gz:md5,f1439765f6428ae99516d95dc5df3926" + "1-1000000.gz:md5,f9c71b88d2173861735f6bbb1628fb7b", + "10000001-11000000.gz:md5,caef13b68ca547ed551aef70c6d35045", + "1000001-2000000.gz:md5,493c2f368edeb6bbfe7ad237aff36c4b", + "11000001-12000000.gz:md5,65d6e583c532ac05033663d0fa52952c", + "12000001-13000000.gz:md5,fbba6aa2b41aa4d3e8a5bed643361d47", + "13000001-14000000.gz:md5,dcb85a41d106a9e34ed2835992aa8610", + "14000001-15000000.gz:md5,548e5bbf055f74d428538f1ce9a3c041", + "15000001-16000000.gz:md5,6f351d7bfac444405209c703671861f7", + "2000001-3000000.gz:md5,5fa9ad99eb57cabbbda8684df39f4e88", + "3000001-4000000.gz:md5,2cef090c5bb01f68155bb21bc694a323", + "4000001-5000000.gz:md5,beca6d18414146e139e27912458a8dbf", + "5000001-6000000.gz:md5,9d5d0f77c8057074063e59b40f9bea7c", + "6000001-7000000.gz:md5,41f6375102c67e2621f736f94998c037", + "7000001-8000000.gz:md5,926cd39b81e9c98b61afe5eaed6196da", + "8000001-9000000.gz:md5,a9d32d8678153eca5af93e0cc309568b", + "9000001-10000000.gz:md5,6eeb83014cd638a29d03c92dec5407dc" ], [ - "1-1000000.gz:md5,dab3bbb82e7ecc5430319b7723b88436", - "10000001-11000000.gz:md5,a1af0b4ce9c2ff301ac0a935a4189c58", - "1000001-2000000.gz:md5,8a70e4d08b14a4cf19b03a0556a6cae8", - "11000001-12000000.gz:md5,e866bb880cd79e612dc2081635368017", - "12000001-13000000.gz:md5,1b5be2ca310afd8289561331d19ddf07", - "13000001-14000000.gz:md5,907d2bb3f6b9b75fca9e40f1220c0cb4", - "2000001-3000000.gz:md5,783bcc5957ca4853853c5cda0418dbcd", - "3000001-4000000.gz:md5,cb2df81caa4a20215bb793ca2a792e01", - "4000001-5000000.gz:md5,2046030a187c0a86c9be02531aea0ed7", - "5000001-6000000.gz:md5,395a977401540eb90607b31ecc786a0f", - "6000001-7000000.gz:md5,e6a97128bc38649fcfa5dcb0032a570e", - "7000001-8000000.gz:md5,08804df16d4cdeb5a733d2d6b07b058e", - "8000001-9000000.gz:md5,bba084d260c12613403d144073105d9b", - "9000001-10000000.gz:md5,c0775c413018ed7964f3042112fe4e26" + "1-1000000.gz:md5,ea81b2b4955dd33fd770dc8ccc3f0af5", + "10000001-11000000.gz:md5,8c71450edf69cc9eb48aa832726cd986", + "1000001-2000000.gz:md5,3fc788203586e8f22f63b7655a4bcd2f", + "11000001-12000000.gz:md5,acaccb3801da9192cb211817c719c50c", + "12000001-13000000.gz:md5,0707f54bc90449303fa212e2389649b7", + "13000001-14000000.gz:md5,11701639fbdbf22fd0c795a23b995e10", + "2000001-3000000.gz:md5,d53ff5ffaa9bfb772edaf5affdb73beb", + "3000001-4000000.gz:md5,0de451e2296ac119319d0d3cedd4870f", + "4000001-5000000.gz:md5,37c248c0b8488a535bda18c318770dd4", + "5000001-6000000.gz:md5,3a4fb690e809c1fe9fe675bc5d8dc480", + "6000001-7000000.gz:md5,2ff968944165b45475799971da2b2715", + "7000001-8000000.gz:md5,d172ac8248f67a33f18a788c32cf02ab", + "8000001-9000000.gz:md5,a9ecda1e1cb3d81d43b0343169744d5a", + "9000001-10000000.gz:md5,ca8bd58fe35b597709a4de86dbe01c78" ], [ - "1-1000000.gz:md5,710a2c1ad83c3c9751a0f152cd98f02c", - "10000001-11000000.gz:md5,ac93a92e62043bddaa59973e26dac8e0", - "1000001-2000000.gz:md5,232ee5ab6c7295007ffc760f361e4c07", - "11000001-12000000.gz:md5,07e49ac7b78fbc29cd920b11a4d21afc", - "12000001-13000000.gz:md5,7849822cf3df022e9f273fb6a928aa8b", - "13000001-14000000.gz:md5,e3d3f0ee264694c72b3b989a542c5694", - "14000001-15000000.gz:md5,e5771b6c2fefe9f62b23c71ab873f94f", - "15000001-16000000.gz:md5,fa02114035f63a504c48005c498f8ec3", - "16000001-17000000.gz:md5,ef0fd03281afc2e636a64fd61df8c4dc", - "17000001-18000000.gz:md5,4483a6d74a07b1101dccee71a22213ed", - "2000001-3000000.gz:md5,f164cbfdc8bc12efd7c26df3935fe190", - "3000001-4000000.gz:md5,ff05a42801004994a4f30f081bc8945a", - "4000001-5000000.gz:md5,b63f51d54dc3cb4b214b54527dfa4234", - "5000001-6000000.gz:md5,6945f59a1fd50f1dfa8a2f1e55fecc12", - "6000001-7000000.gz:md5,3f27a3cb19ece2a9e87da6fe6476faaa", - "7000001-8000000.gz:md5,05bffc6e8af7a80fdd6cbc53e5512d0c", - "8000001-9000000.gz:md5,8a3594ee1eb15d7aa8edeb325e485dce", - "9000001-10000000.gz:md5,338bce56200690d450d5fcac65a91be7" + "1-1000000.gz:md5,189037eb5ce432a41c198b69fa11dba1", + "10000001-11000000.gz:md5,8cbb19d243093b735f055a7e7d8506b4", + "1000001-2000000.gz:md5,f634365a563f459fd4a91e139a962620", + "11000001-12000000.gz:md5,3d05e3298731cfa83a0c8e7e14708fd5", + "12000001-13000000.gz:md5,2678ad4b5516f90af54e9460bfe9cdf8", + "13000001-14000000.gz:md5,a885dd1cb05d981ddc5f522e0ead4850", + "14000001-15000000.gz:md5,bc540a102a909b80c6e4b1374e1be69e", + "15000001-16000000.gz:md5,a49f32c55dc2dcb36dcdaffe061f6677", + "16000001-17000000.gz:md5,250ca77e8ec4f6c001c4797a8d09d1d5", + "17000001-18000000.gz:md5,4067d8d30595d4700f3eba5aee92b785", + "2000001-3000000.gz:md5,07ecf8c7e69931af567e94f48e51462e", + "3000001-4000000.gz:md5,e1cfaf343f111867baee5b01060f7e22", + "4000001-5000000.gz:md5,de905e75eb386d7a3dcbc76d69a6e439", + "5000001-6000000.gz:md5,36f2fd0fa37f36485dbc90054f3deeee", + "6000001-7000000.gz:md5,b0e1f3179f2a527c3187aa08942246ed", + "7000001-8000000.gz:md5,ea93a4d60f2a538d6e7335b14d09f0b6", + "8000001-9000000.gz:md5,8b0443d2833dacd4f82023b16be84da1", + "9000001-10000000.gz:md5,54eff9f655ae0f1c18ba6efeeefac5e8" ], [ - "1-1000000.gz:md5,779fda1352c0b1d635aa752c185e6ce2" + "1-1000000.gz:md5,64e3e539e8af16775cc4657c605cc585" ], [ - "1-1000000.gz:md5,267b3134411641d12bb6efcfd5e9d48d", - "10000001-11000000.gz:md5,4f7473abf622b57ca3c8d6de098759f7", - "1000001-2000000.gz:md5,5587d56269638b9cc88bdb7ae5dacc58", - "11000001-12000000.gz:md5,3da928f2caf09b9e3df58f9d1be2c541", - "12000001-13000000.gz:md5,eae3125082e1674f40fcfb8bb7da23e3", - "13000001-14000000.gz:md5,6a91eccbe0cf05737e2d2971d5618876", - "14000001-15000000.gz:md5,60c9b08ad4f674c0394a7c16dee2713e", - "15000001-16000000.gz:md5,b36c052923f3d3e3cc8db9c2852e1e16", - "16000001-17000000.gz:md5,0d0d7a8735aadda492912d032fd8733b", - "17000001-18000000.gz:md5,cf57648ef4cbc3325cff87e6b4b89653", - "18000001-19000000.gz:md5,5c649205050bfcbb4414db329659dadc", - "19000001-20000000.gz:md5,48838329ef3e8c26dd8b1ba82f925704", - "20000001-21000000.gz:md5,c7e1643d2880881fe5d44f718b8e6755", - "2000001-3000000.gz:md5,94849146caeca44e256aec58f1a914b8", - "3000001-4000000.gz:md5,4601fbb22fda2cbc4ed397707f8f7afd", - "4000001-5000000.gz:md5,7c8617d40b6d2e9a37802691f64f775e", - "5000001-6000000.gz:md5,0e81ba81f807f8429351e46dd8385e0e", - "6000001-7000000.gz:md5,6e86fccda1dc539e291bd5768ffd0dad", - "7000001-8000000.gz:md5,f0bf0306012d738fc71f7a26d7af2d81", - "8000001-9000000.gz:md5,0f3da0d0c714760bc2c39bc6696b74d1", - "9000001-10000000.gz:md5,4e0e2ba92378f6e1f261d5e59d8e3d9f" + "1-1000000.gz:md5,0874a0bc852217ed68364921662e4b9b", + "10000001-11000000.gz:md5,46eb3254cf0452bcc8fed5d279bcef35", + "1000001-2000000.gz:md5,2d313518641f5efbe09d1ffd4e4523d5", + "11000001-12000000.gz:md5,2f6a28eb26832af84c9d5c40607ffa39", + "12000001-13000000.gz:md5,3dc37f2082fc45663a88aad0f67506e6", + "13000001-14000000.gz:md5,cd5185227b576640454922e060f00525", + "14000001-15000000.gz:md5,af9fe314326ae20b99a89a8aaa45d0d0", + "15000001-16000000.gz:md5,ff02629cfde390e7eed097296cea0ccb", + "16000001-17000000.gz:md5,7cb1e4babe5b867358bf4f49d9a3d58e", + "17000001-18000000.gz:md5,09588f85610505fdb95117932661a5b9", + "18000001-19000000.gz:md5,cba448de43edcee8d423c1278a76c61f", + "19000001-20000000.gz:md5,af1ee9201a78d537e6df555d3690277d", + "20000001-21000000.gz:md5,1a63895964ba6101c0109990213ec17e", + "2000001-3000000.gz:md5,02d0dc41894283e82ce2da023eb81663", + "3000001-4000000.gz:md5,64d9e97703894f5051349da978e0a3cf", + "4000001-5000000.gz:md5,1b69fdb6993a70e8f6688a03b4626a00", + "5000001-6000000.gz:md5,c4b0e3d33aa451e081ccef0dbbfcc1f5", + "6000001-7000000.gz:md5,26425e131cacb5ba8d68f6e9de39094c", + "7000001-8000000.gz:md5,1c0fcee419cccd5b4268329f7d001d2a", + "8000001-9000000.gz:md5,7515ee504db75bccbdd9d282429a999b", + "9000001-10000000.gz:md5,8647b733b4eba24aaf21b3d983461b1b" ], [ - "1-1000000.gz:md5,83a0a200cb053b1f28e41fe62068d49a", - "10000001-11000000.gz:md5,2f84058256242378b7d14ef526ed42ea", - "1000001-2000000.gz:md5,c655f70a1d16eef55a5003cdb63434ab", - "11000001-12000000.gz:md5,6d5c34d7a61fa4764c546d1b46a5c90d", - "12000001-13000000.gz:md5,84fceee383bb28edb8d749c744a10932", - "13000001-14000000.gz:md5,aadd01464ca36c813a831f5c2016ba02", - "14000001-15000000.gz:md5,94a5325ca01192d5eea218b30f933ec4", - "15000001-16000000.gz:md5,de84954b08d570585a448d8831c12e6d", - "16000001-17000000.gz:md5,be4954afe2236d62226307f8c9f95820", - "17000001-18000000.gz:md5,8fdacfb47fc5728eb27b22bbb8c9b301", - "2000001-3000000.gz:md5,83552c17d88c3986c56c681b0b49bb97", - "3000001-4000000.gz:md5,deb3bc27c8d431d60fc89a6fe49bcbc6", - "4000001-5000000.gz:md5,98de5bbb694c73f7ffde16fb92069117", - "5000001-6000000.gz:md5,7c5a116261bf41309b18c22b0cba5f52", - "6000001-7000000.gz:md5,fb0d2dc71bd0c9263ff23825d8a4ef64", - "7000001-8000000.gz:md5,2375dcd7787e7ca5d26442cea0ff6710", - "8000001-9000000.gz:md5,979f986c27b91a62873e639e3ebeae43", - "9000001-10000000.gz:md5,b80f6906a724e4b0d6c21dd4c77663fd" + "1-1000000.gz:md5,a252da6c7c69644ff29276d15796f457", + "10000001-11000000.gz:md5,e7376cbf07ee7fd1fb8214c9bc739e64", + "1000001-2000000.gz:md5,566d7342a45728a784af7ba5c2e630cb", + "11000001-12000000.gz:md5,bf44ab823c1d51cb7841958761a7cd4d", + "12000001-13000000.gz:md5,ec1494ff61067a130c05afabee046164", + "13000001-14000000.gz:md5,2b24e155be6ae36a62e7ea3b1a0a3118", + "14000001-15000000.gz:md5,3215b3d56cd19a305c8d8f2d1f517825", + "15000001-16000000.gz:md5,6fa2abd0ff33750387780798dc6bd821", + "16000001-17000000.gz:md5,c2a1e5012a895ab95662d83d387f641a", + "17000001-18000000.gz:md5,eb398d2f8bc90b519a82588b8dcbad60", + "2000001-3000000.gz:md5,b78320f16b4caafe9708f95b69668265", + "3000001-4000000.gz:md5,e04cd4871f53108aaa780dbb3718b7f7", + "4000001-5000000.gz:md5,47bd8029ef9fffb5ee2ebb0fa8b91110", + "5000001-6000000.gz:md5,a6c404381dab5da8453b265fb0f374c3", + "6000001-7000000.gz:md5,417b7a492977b76f823634128e3ea2da", + "7000001-8000000.gz:md5,d0f9d030f7f4ad834d1538c7aaace5cf", + "8000001-9000000.gz:md5,58b2eca4ddeea8d2746242b18be1dba4", + "9000001-10000000.gz:md5,62cf6898fa164616c36117472ec10ce9" ], - "chr_synonyms.txt:md5,8a6fce00cc7817ec727c49b7954f10bc", + "chr_synonyms.txt:md5,c7df2db509525b8ff0d95ef927882764", "info.txt:md5,33ccb74a030a9a345051628c337cb8af" ] ] @@ -136,135 +136,135 @@ ] ], "1": [ - "versions.yml:md5,954fd177c394ba167d575a6aac47390b" + "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ], "cache": [ [ { - "id": "111_WBcel235" + "id": "112_WBcel235" }, [ [ [ [ - "1-1000000.gz:md5,4da54db2f781d08975630811fd831585", - "10000001-11000000.gz:md5,7bee73e51d08f5e6de1796614105c5de", - "1000001-2000000.gz:md5,e8beff9020e261d78988c37e804cc89a", - "11000001-12000000.gz:md5,1a31b2dcf58822e837cd91b7a74a8b4f", - "12000001-13000000.gz:md5,34522be2ee5bd3cf51a9b151c877fe35", - "13000001-14000000.gz:md5,4e5a7b604f8aea2ad9de79b75ed89a6b", - "14000001-15000000.gz:md5,65146be110ea58b64ab8518bcbfbde9d", - "15000001-16000000.gz:md5,a39fdb7b0b056c0254574353351722eb", - "2000001-3000000.gz:md5,b72a04531477615dc4d2c530d09e60df", - "3000001-4000000.gz:md5,50dae46f370e1468c8f8f2c97cc75f0b", - "4000001-5000000.gz:md5,e58e124073689212e5311fbd8ccce415", - "5000001-6000000.gz:md5,db27434dc8be9557f97aa09a95126836", - "6000001-7000000.gz:md5,a5131e3ee41b329eb55fb3849ddb1471", - "7000001-8000000.gz:md5,61e1fbe1a82892a0f9f6ee0380fa60bc", - "8000001-9000000.gz:md5,48166dd4518ec21f597b6acca73809bb", - "9000001-10000000.gz:md5,3e416c856f40f36ec0ed3f42a93b2267" + "1-1000000.gz:md5,c7df2324c613caafe70024bb156b077c", + "10000001-11000000.gz:md5,baee612beb1fc7b931d1b4c34df9a366", + "1000001-2000000.gz:md5,4fefec2bbbcdc22022ba22e2b36fe118", + "11000001-12000000.gz:md5,e06df8391870440be75a3a0fed05ad29", + "12000001-13000000.gz:md5,3abd252ef8e0c79d7be07dfe7503c38b", + "13000001-14000000.gz:md5,9b20be645c68c1ef16f0aaadc9d1899d", + "14000001-15000000.gz:md5,c80817caa2a893c8059ad9a66e1c2c1a", + "15000001-16000000.gz:md5,595cf5694cba18c82cff8f0ab882c08a", + "2000001-3000000.gz:md5,b1e24d27d0ef74c85926c1fad795e07b", + "3000001-4000000.gz:md5,ec32b7b8263ee176c97269a34b77232d", + "4000001-5000000.gz:md5,017e3d44b66c6b343c6b9d2265f4a539", + "5000001-6000000.gz:md5,d0723825e78aceac2345548928e3c2b9", + "6000001-7000000.gz:md5,b73797333b2493592b4ebfe72c817c2d", + "7000001-8000000.gz:md5,665647b964cd5a66d8d02aa5104ca3be", + "8000001-9000000.gz:md5,d98e077bf36e071f651c9a5f7661f294", + "9000001-10000000.gz:md5,828987069dd14db0ecf1f18c05b83ea9" ], [ - "1-1000000.gz:md5,06b83c3bd2c651c5a8a96f0865d54a53", - "10000001-11000000.gz:md5,79b3348f860370d1697e6d4de128fca3", - "1000001-2000000.gz:md5,f98e31f3e25c0a419ebeee5b17527b00", - "11000001-12000000.gz:md5,5f23214fdef1f7637f6046dc751155ed", - "12000001-13000000.gz:md5,9a4422905679e543a92d47142b1acba1", - "13000001-14000000.gz:md5,c5db99e7d56f2115f8da8fe3af83314a", - "14000001-15000000.gz:md5,66b65af3732c0495dc74f3071203ac2f", - "15000001-16000000.gz:md5,d4c30dc42925cc92dc594d4145544f33", - "2000001-3000000.gz:md5,ff9b3fd1235468c738e9201e2fa98e08", - "3000001-4000000.gz:md5,c649308c7d3b4891a8c6f95e583f3a08", - "4000001-5000000.gz:md5,c53d2fa6695248d0a725ef70325aae91", - "5000001-6000000.gz:md5,5481fb4b60ebd97256f5d52c42aee0bd", - "6000001-7000000.gz:md5,94b82e096bacb091e0ef55bcd08b8ab8", - "7000001-8000000.gz:md5,83f571dfaf8b891bf27208466e6f7d8c", - "8000001-9000000.gz:md5,4f07e30c7d772544bc6e99bac371b97b", - "9000001-10000000.gz:md5,f1439765f6428ae99516d95dc5df3926" + "1-1000000.gz:md5,f9c71b88d2173861735f6bbb1628fb7b", + "10000001-11000000.gz:md5,caef13b68ca547ed551aef70c6d35045", + "1000001-2000000.gz:md5,493c2f368edeb6bbfe7ad237aff36c4b", + "11000001-12000000.gz:md5,65d6e583c532ac05033663d0fa52952c", + "12000001-13000000.gz:md5,fbba6aa2b41aa4d3e8a5bed643361d47", + "13000001-14000000.gz:md5,dcb85a41d106a9e34ed2835992aa8610", + "14000001-15000000.gz:md5,548e5bbf055f74d428538f1ce9a3c041", + "15000001-16000000.gz:md5,6f351d7bfac444405209c703671861f7", + "2000001-3000000.gz:md5,5fa9ad99eb57cabbbda8684df39f4e88", + "3000001-4000000.gz:md5,2cef090c5bb01f68155bb21bc694a323", + "4000001-5000000.gz:md5,beca6d18414146e139e27912458a8dbf", + "5000001-6000000.gz:md5,9d5d0f77c8057074063e59b40f9bea7c", + "6000001-7000000.gz:md5,41f6375102c67e2621f736f94998c037", + "7000001-8000000.gz:md5,926cd39b81e9c98b61afe5eaed6196da", + "8000001-9000000.gz:md5,a9d32d8678153eca5af93e0cc309568b", + "9000001-10000000.gz:md5,6eeb83014cd638a29d03c92dec5407dc" ], [ - "1-1000000.gz:md5,dab3bbb82e7ecc5430319b7723b88436", - "10000001-11000000.gz:md5,a1af0b4ce9c2ff301ac0a935a4189c58", - "1000001-2000000.gz:md5,8a70e4d08b14a4cf19b03a0556a6cae8", - "11000001-12000000.gz:md5,e866bb880cd79e612dc2081635368017", - "12000001-13000000.gz:md5,1b5be2ca310afd8289561331d19ddf07", - "13000001-14000000.gz:md5,907d2bb3f6b9b75fca9e40f1220c0cb4", - "2000001-3000000.gz:md5,783bcc5957ca4853853c5cda0418dbcd", - "3000001-4000000.gz:md5,cb2df81caa4a20215bb793ca2a792e01", - "4000001-5000000.gz:md5,2046030a187c0a86c9be02531aea0ed7", - "5000001-6000000.gz:md5,395a977401540eb90607b31ecc786a0f", - "6000001-7000000.gz:md5,e6a97128bc38649fcfa5dcb0032a570e", - "7000001-8000000.gz:md5,08804df16d4cdeb5a733d2d6b07b058e", - "8000001-9000000.gz:md5,bba084d260c12613403d144073105d9b", - "9000001-10000000.gz:md5,c0775c413018ed7964f3042112fe4e26" + "1-1000000.gz:md5,ea81b2b4955dd33fd770dc8ccc3f0af5", + "10000001-11000000.gz:md5,8c71450edf69cc9eb48aa832726cd986", + "1000001-2000000.gz:md5,3fc788203586e8f22f63b7655a4bcd2f", + "11000001-12000000.gz:md5,acaccb3801da9192cb211817c719c50c", + "12000001-13000000.gz:md5,0707f54bc90449303fa212e2389649b7", + "13000001-14000000.gz:md5,11701639fbdbf22fd0c795a23b995e10", + "2000001-3000000.gz:md5,d53ff5ffaa9bfb772edaf5affdb73beb", + "3000001-4000000.gz:md5,0de451e2296ac119319d0d3cedd4870f", + "4000001-5000000.gz:md5,37c248c0b8488a535bda18c318770dd4", + "5000001-6000000.gz:md5,3a4fb690e809c1fe9fe675bc5d8dc480", + "6000001-7000000.gz:md5,2ff968944165b45475799971da2b2715", + "7000001-8000000.gz:md5,d172ac8248f67a33f18a788c32cf02ab", + "8000001-9000000.gz:md5,a9ecda1e1cb3d81d43b0343169744d5a", + "9000001-10000000.gz:md5,ca8bd58fe35b597709a4de86dbe01c78" ], [ - "1-1000000.gz:md5,710a2c1ad83c3c9751a0f152cd98f02c", - "10000001-11000000.gz:md5,ac93a92e62043bddaa59973e26dac8e0", - "1000001-2000000.gz:md5,232ee5ab6c7295007ffc760f361e4c07", - "11000001-12000000.gz:md5,07e49ac7b78fbc29cd920b11a4d21afc", - "12000001-13000000.gz:md5,7849822cf3df022e9f273fb6a928aa8b", - "13000001-14000000.gz:md5,e3d3f0ee264694c72b3b989a542c5694", - "14000001-15000000.gz:md5,e5771b6c2fefe9f62b23c71ab873f94f", - "15000001-16000000.gz:md5,fa02114035f63a504c48005c498f8ec3", - "16000001-17000000.gz:md5,ef0fd03281afc2e636a64fd61df8c4dc", - "17000001-18000000.gz:md5,4483a6d74a07b1101dccee71a22213ed", - "2000001-3000000.gz:md5,f164cbfdc8bc12efd7c26df3935fe190", - "3000001-4000000.gz:md5,ff05a42801004994a4f30f081bc8945a", - "4000001-5000000.gz:md5,b63f51d54dc3cb4b214b54527dfa4234", - "5000001-6000000.gz:md5,6945f59a1fd50f1dfa8a2f1e55fecc12", - "6000001-7000000.gz:md5,3f27a3cb19ece2a9e87da6fe6476faaa", - "7000001-8000000.gz:md5,05bffc6e8af7a80fdd6cbc53e5512d0c", - "8000001-9000000.gz:md5,8a3594ee1eb15d7aa8edeb325e485dce", - "9000001-10000000.gz:md5,338bce56200690d450d5fcac65a91be7" + "1-1000000.gz:md5,189037eb5ce432a41c198b69fa11dba1", + "10000001-11000000.gz:md5,8cbb19d243093b735f055a7e7d8506b4", + "1000001-2000000.gz:md5,f634365a563f459fd4a91e139a962620", + "11000001-12000000.gz:md5,3d05e3298731cfa83a0c8e7e14708fd5", + "12000001-13000000.gz:md5,2678ad4b5516f90af54e9460bfe9cdf8", + "13000001-14000000.gz:md5,a885dd1cb05d981ddc5f522e0ead4850", + "14000001-15000000.gz:md5,bc540a102a909b80c6e4b1374e1be69e", + "15000001-16000000.gz:md5,a49f32c55dc2dcb36dcdaffe061f6677", + "16000001-17000000.gz:md5,250ca77e8ec4f6c001c4797a8d09d1d5", + "17000001-18000000.gz:md5,4067d8d30595d4700f3eba5aee92b785", + "2000001-3000000.gz:md5,07ecf8c7e69931af567e94f48e51462e", + "3000001-4000000.gz:md5,e1cfaf343f111867baee5b01060f7e22", + "4000001-5000000.gz:md5,de905e75eb386d7a3dcbc76d69a6e439", + "5000001-6000000.gz:md5,36f2fd0fa37f36485dbc90054f3deeee", + "6000001-7000000.gz:md5,b0e1f3179f2a527c3187aa08942246ed", + "7000001-8000000.gz:md5,ea93a4d60f2a538d6e7335b14d09f0b6", + "8000001-9000000.gz:md5,8b0443d2833dacd4f82023b16be84da1", + "9000001-10000000.gz:md5,54eff9f655ae0f1c18ba6efeeefac5e8" ], [ - "1-1000000.gz:md5,779fda1352c0b1d635aa752c185e6ce2" + "1-1000000.gz:md5,64e3e539e8af16775cc4657c605cc585" ], [ - "1-1000000.gz:md5,267b3134411641d12bb6efcfd5e9d48d", - "10000001-11000000.gz:md5,4f7473abf622b57ca3c8d6de098759f7", - "1000001-2000000.gz:md5,5587d56269638b9cc88bdb7ae5dacc58", - "11000001-12000000.gz:md5,3da928f2caf09b9e3df58f9d1be2c541", - "12000001-13000000.gz:md5,eae3125082e1674f40fcfb8bb7da23e3", - "13000001-14000000.gz:md5,6a91eccbe0cf05737e2d2971d5618876", - "14000001-15000000.gz:md5,60c9b08ad4f674c0394a7c16dee2713e", - "15000001-16000000.gz:md5,b36c052923f3d3e3cc8db9c2852e1e16", - "16000001-17000000.gz:md5,0d0d7a8735aadda492912d032fd8733b", - "17000001-18000000.gz:md5,cf57648ef4cbc3325cff87e6b4b89653", - "18000001-19000000.gz:md5,5c649205050bfcbb4414db329659dadc", - "19000001-20000000.gz:md5,48838329ef3e8c26dd8b1ba82f925704", - "20000001-21000000.gz:md5,c7e1643d2880881fe5d44f718b8e6755", - "2000001-3000000.gz:md5,94849146caeca44e256aec58f1a914b8", - "3000001-4000000.gz:md5,4601fbb22fda2cbc4ed397707f8f7afd", - "4000001-5000000.gz:md5,7c8617d40b6d2e9a37802691f64f775e", - "5000001-6000000.gz:md5,0e81ba81f807f8429351e46dd8385e0e", - "6000001-7000000.gz:md5,6e86fccda1dc539e291bd5768ffd0dad", - "7000001-8000000.gz:md5,f0bf0306012d738fc71f7a26d7af2d81", - "8000001-9000000.gz:md5,0f3da0d0c714760bc2c39bc6696b74d1", - "9000001-10000000.gz:md5,4e0e2ba92378f6e1f261d5e59d8e3d9f" + "1-1000000.gz:md5,0874a0bc852217ed68364921662e4b9b", + "10000001-11000000.gz:md5,46eb3254cf0452bcc8fed5d279bcef35", + "1000001-2000000.gz:md5,2d313518641f5efbe09d1ffd4e4523d5", + "11000001-12000000.gz:md5,2f6a28eb26832af84c9d5c40607ffa39", + "12000001-13000000.gz:md5,3dc37f2082fc45663a88aad0f67506e6", + "13000001-14000000.gz:md5,cd5185227b576640454922e060f00525", + "14000001-15000000.gz:md5,af9fe314326ae20b99a89a8aaa45d0d0", + "15000001-16000000.gz:md5,ff02629cfde390e7eed097296cea0ccb", + "16000001-17000000.gz:md5,7cb1e4babe5b867358bf4f49d9a3d58e", + "17000001-18000000.gz:md5,09588f85610505fdb95117932661a5b9", + "18000001-19000000.gz:md5,cba448de43edcee8d423c1278a76c61f", + "19000001-20000000.gz:md5,af1ee9201a78d537e6df555d3690277d", + "20000001-21000000.gz:md5,1a63895964ba6101c0109990213ec17e", + "2000001-3000000.gz:md5,02d0dc41894283e82ce2da023eb81663", + "3000001-4000000.gz:md5,64d9e97703894f5051349da978e0a3cf", + "4000001-5000000.gz:md5,1b69fdb6993a70e8f6688a03b4626a00", + "5000001-6000000.gz:md5,c4b0e3d33aa451e081ccef0dbbfcc1f5", + "6000001-7000000.gz:md5,26425e131cacb5ba8d68f6e9de39094c", + "7000001-8000000.gz:md5,1c0fcee419cccd5b4268329f7d001d2a", + "8000001-9000000.gz:md5,7515ee504db75bccbdd9d282429a999b", + "9000001-10000000.gz:md5,8647b733b4eba24aaf21b3d983461b1b" ], [ - "1-1000000.gz:md5,83a0a200cb053b1f28e41fe62068d49a", - "10000001-11000000.gz:md5,2f84058256242378b7d14ef526ed42ea", - "1000001-2000000.gz:md5,c655f70a1d16eef55a5003cdb63434ab", - "11000001-12000000.gz:md5,6d5c34d7a61fa4764c546d1b46a5c90d", - "12000001-13000000.gz:md5,84fceee383bb28edb8d749c744a10932", - "13000001-14000000.gz:md5,aadd01464ca36c813a831f5c2016ba02", - "14000001-15000000.gz:md5,94a5325ca01192d5eea218b30f933ec4", - "15000001-16000000.gz:md5,de84954b08d570585a448d8831c12e6d", - "16000001-17000000.gz:md5,be4954afe2236d62226307f8c9f95820", - "17000001-18000000.gz:md5,8fdacfb47fc5728eb27b22bbb8c9b301", - "2000001-3000000.gz:md5,83552c17d88c3986c56c681b0b49bb97", - "3000001-4000000.gz:md5,deb3bc27c8d431d60fc89a6fe49bcbc6", - "4000001-5000000.gz:md5,98de5bbb694c73f7ffde16fb92069117", - "5000001-6000000.gz:md5,7c5a116261bf41309b18c22b0cba5f52", - "6000001-7000000.gz:md5,fb0d2dc71bd0c9263ff23825d8a4ef64", - "7000001-8000000.gz:md5,2375dcd7787e7ca5d26442cea0ff6710", - "8000001-9000000.gz:md5,979f986c27b91a62873e639e3ebeae43", - "9000001-10000000.gz:md5,b80f6906a724e4b0d6c21dd4c77663fd" + "1-1000000.gz:md5,a252da6c7c69644ff29276d15796f457", + "10000001-11000000.gz:md5,e7376cbf07ee7fd1fb8214c9bc739e64", + "1000001-2000000.gz:md5,566d7342a45728a784af7ba5c2e630cb", + "11000001-12000000.gz:md5,bf44ab823c1d51cb7841958761a7cd4d", + "12000001-13000000.gz:md5,ec1494ff61067a130c05afabee046164", + "13000001-14000000.gz:md5,2b24e155be6ae36a62e7ea3b1a0a3118", + "14000001-15000000.gz:md5,3215b3d56cd19a305c8d8f2d1f517825", + "15000001-16000000.gz:md5,6fa2abd0ff33750387780798dc6bd821", + "16000001-17000000.gz:md5,c2a1e5012a895ab95662d83d387f641a", + "17000001-18000000.gz:md5,eb398d2f8bc90b519a82588b8dcbad60", + "2000001-3000000.gz:md5,b78320f16b4caafe9708f95b69668265", + "3000001-4000000.gz:md5,e04cd4871f53108aaa780dbb3718b7f7", + "4000001-5000000.gz:md5,47bd8029ef9fffb5ee2ebb0fa8b91110", + "5000001-6000000.gz:md5,a6c404381dab5da8453b265fb0f374c3", + "6000001-7000000.gz:md5,417b7a492977b76f823634128e3ea2da", + "7000001-8000000.gz:md5,d0f9d030f7f4ad834d1538c7aaace5cf", + "8000001-9000000.gz:md5,58b2eca4ddeea8d2746242b18be1dba4", + "9000001-10000000.gz:md5,62cf6898fa164616c36117472ec10ce9" ], - "chr_synonyms.txt:md5,8a6fce00cc7817ec727c49b7954f10bc", + "chr_synonyms.txt:md5,c7df2db509525b8ff0d95ef927882764", "info.txt:md5,33ccb74a030a9a345051628c337cb8af" ] ] @@ -272,15 +272,15 @@ ] ], "versions": [ - "versions.yml:md5,954fd177c394ba167d575a6aac47390b" + "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T17:20:01.921038" + "timestamp": "2024-09-02T13:19:08.690863" }, "celegans - download - stub": { "content": [ @@ -288,7 +288,7 @@ "0": [ [ { - "id": "111_WBcel235" + "id": "112_WBcel235" }, [ @@ -296,12 +296,12 @@ ] ], "1": [ - "versions.yml:md5,954fd177c394ba167d575a6aac47390b" + "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ], "cache": [ [ { - "id": "111_WBcel235" + "id": "112_WBcel235" }, [ @@ -309,14 +309,14 @@ ] ], "versions": [ - "versions.yml:md5,954fd177c394ba167d575a6aac47390b" + "versions.yml:md5,e32852e9cba2a298b7518ce610011b14" ] } ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T18:09:54.909036" + "timestamp": "2024-09-02T13:19:23.308683" } } \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/download/tests/nextflow.config b/modules/nf-core/ensemblvep/download/tests/nextflow.config index 882bce41a04..9aa481645ef 100644 --- a/modules/nf-core/ensemblvep/download/tests/nextflow.config +++ b/modules/nf-core/ensemblvep/download/tests/nextflow.config @@ -1,5 +1,5 @@ params { - vep_cache_version = "111" + vep_cache_version = "112" vep_genome = "WBcel235" vep_species = "caenorhabditis_elegans" } diff --git a/modules/nf-core/ensemblvep/environment.yml b/modules/nf-core/ensemblvep/environment.yml index fd8a592a613..e94bfeb2cb0 100644 --- a/modules/nf-core/ensemblvep/environment.yml +++ b/modules/nf-core/ensemblvep/environment.yml @@ -1,9 +1,7 @@ # You can use this file to create a conda environment for this module: # conda env create -f environment.yml -name: nf-core-vep-111.0 channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::ensembl-vep=111.0 diff --git a/modules/nf-core/ensemblvep/filtervep/environment.yml b/modules/nf-core/ensemblvep/filtervep/environment.yml index 07cb9dba2ac..283a45bbdf1 100644 --- a/modules/nf-core/ensemblvep/filtervep/environment.yml +++ b/modules/nf-core/ensemblvep/filtervep/environment.yml @@ -1,7 +1,5 @@ -name: ensemblvep_filtervep channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::ensembl-vep=111.0 + - bioconda::ensembl-vep=112.0 diff --git a/modules/nf-core/ensemblvep/filtervep/main.nf b/modules/nf-core/ensemblvep/filtervep/main.nf index 7eec3cb74a0..a56bdb832ed 100644 --- a/modules/nf-core/ensemblvep/filtervep/main.nf +++ b/modules/nf-core/ensemblvep/filtervep/main.nf @@ -4,8 +4,8 @@ process ENSEMBLVEP_FILTERVEP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ensembl-vep:111.0--pl5321h2a3209d_0' : - 'biocontainers/ensembl-vep:111.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:112.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:112.0--pl5321h2a3209d_0' }" input: tuple val(meta), path(input) @@ -47,4 +47,3 @@ process ENSEMBLVEP_FILTERVEP { END_VERSIONS """ } - diff --git a/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test new file mode 100644 index 00000000000..1852e2ab7e2 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test @@ -0,0 +1,136 @@ +nextflow_process { + + name "Test Process ENSEMBLVEP_FILTERVEP" + script "../main.nf" + process "ENSEMBLVEP_FILTERVEP" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "ensemblvep" + tag "ensemblvep/vep" + tag "ensemblvep/filtervep" + tag "ensemblvep/download" + + // Test for filtering VCF file + test("test_ensemblvep_filtervep_vcf") { + config "./vcf.config" + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../download/main.nf" + + process { + """ + input[0] = Channel.of([ + [id:"112_WBcel235"], + params.vep_genome, + params.vep_species, + params.vep_cache_version + ]) + """ + } + } + run("ENSEMBLVEP_VEP") { + script "../../vep/main.nf" + + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] + ]) + input[1] = params.vep_genome + input[2] = params.vep_species + input[3] = params.vep_cache_version + input[4] = ENSEMBLVEP_DOWNLOAD.out.cache.map{ meta, cache -> [cache] } + input[5] = Channel.value([ + [id:"fasta"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[6] = [] + """ + } + } + } + + when { + process { + """ + input[0] = ENSEMBLVEP_VEP.out.vcf + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.output.get(0).get(1)).readLines().first().contains("##fileformat=VCFv4.2") } + ) + } + } + + // Test for filtering TAB file + test("test_ensemblvep_filtervep_tab_gz") { + config "./tab.gz.config" + + setup { + run("ENSEMBLVEP_DOWNLOAD") { + script "../../download/main.nf" + + process { + """ + input[0] = Channel.of([ + [id:"112_WBcel235"], + params.vep_genome, + params.vep_species, + params.vep_cache_version + ]) + """ + } + } + run("ENSEMBLVEP_VEP") { + script "../../vep/main.nf" + + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf', checkIfExists: true), + [] + ]) + input[1] = params.vep_genome + input[2] = params.vep_species + input[3] = params.vep_cache_version + input[4] = ENSEMBLVEP_DOWNLOAD.out.cache.map{ meta, cache -> [cache] } + input[5] = Channel.value([ + [id:"fasta"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ]) + input[6] = [] + """ + } + } + } + + when { + process { + """ + input[0] = ENSEMBLVEP_VEP.out.tab + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + { assert path(process.out.output.get(0).get(1)).readLines().first().contains("## ENSEMBL VARIANT EFFECT PREDICTOR v112.0") } + ) + } + } +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap new file mode 100644 index 00000000000..ddaa1dc1f17 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/main.nf.test.snap @@ -0,0 +1,26 @@ +{ + "test_ensemblvep_filtervep_vcf": { + "content": [ + [ + "versions.yml:md5,4d3217834548bbe6784e102e9348461d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T13:38:25.18143" + }, + "test_ensemblvep_filtervep_tab_gz": { + "content": [ + [ + "versions.yml:md5,4d3217834548bbe6784e102e9348461d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T13:57:11.471669" + } +} \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config b/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config new file mode 100644 index 00000000000..aee2e62b02f --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/nextflow.config @@ -0,0 +1,10 @@ +/* +======================================================================================== + Nextflow config file for running tests +======================================================================================== +*/ +params { + vep_cache_version = "112" + vep_genome = "WBcel235" + vep_species = "caenorhabditis_elegans" +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config b/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config new file mode 100644 index 00000000000..0aa5ea75228 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/tab.gz.config @@ -0,0 +1,24 @@ +/* +======================================================================================== + Nextflow config file for running tests +======================================================================================== +*/ + +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: ENSEMBLVEP_DOWNLOAD { + ext.args = '--AUTO c --CONVERT --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE' + } + + withName: ENSEMBLVEP_VEP { + ext.args = '--tab' + ext.prefix = { "${meta.id}_vep" } + } + + withName: ENSEMBLVEP_FILTERVEP { + ext.args = '--filter "Feature_type is Transcript"' + ext.suffix = "tab" + } +} diff --git a/modules/nf-core/ensemblvep/filtervep/tests/tags.yml b/modules/nf-core/ensemblvep/filtervep/tests/tags.yml new file mode 100644 index 00000000000..b43bf40d6f2 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/tags.yml @@ -0,0 +1,2 @@ +ensemblvep/filtervep: + - "modules/nf-core/ensemblvep/filtervep/**" diff --git a/modules/nf-core/ensemblvep/filtervep/tests/vcf.config b/modules/nf-core/ensemblvep/filtervep/tests/vcf.config new file mode 100644 index 00000000000..0b65fe5c4f1 --- /dev/null +++ b/modules/nf-core/ensemblvep/filtervep/tests/vcf.config @@ -0,0 +1,23 @@ +/* +======================================================================================== + Nextflow config file for running tests +======================================================================================== +*/ + +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: ENSEMBLVEP_DOWNLOAD { + ext.args = '--AUTO c --CONVERT --NO_BIOPERL --NO_HTSLIB --NO_TEST --NO_UPDATE' + } + + withName: ENSEMBLVEP_VEP { + ext.args = '--vcf' + ext.prefix = { "${meta.id}_vep" } + } + + withName: ENSEMBLVEP_FILTERVEP { + ext.args = '--filter "Feature_type is Transcript"' + } +} diff --git a/modules/nf-core/ensemblvep/vep/environment.yml b/modules/nf-core/ensemblvep/vep/environment.yml index 91457c05082..283a45bbdf1 100644 --- a/modules/nf-core/ensemblvep/vep/environment.yml +++ b/modules/nf-core/ensemblvep/vep/environment.yml @@ -1,7 +1,5 @@ -name: ensemblvep_vep channels: - conda-forge - bioconda - - defaults dependencies: - - bioconda::ensembl-vep=111.0 + - bioconda::ensembl-vep=112.0 diff --git a/modules/nf-core/ensemblvep/vep/main.nf b/modules/nf-core/ensemblvep/vep/main.nf index e82471aa1da..5f33265b0da 100644 --- a/modules/nf-core/ensemblvep/vep/main.nf +++ b/modules/nf-core/ensemblvep/vep/main.nf @@ -4,8 +4,8 @@ process ENSEMBLVEP_VEP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ensembl-vep:111.0--pl5321h2a3209d_0' : - 'biocontainers/ensembl-vep:111.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:112.0--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:112.0--pl5321h2a3209d_0' }" input: tuple val(meta), path(vcf), path(custom_extra_files) @@ -20,7 +20,7 @@ process ENSEMBLVEP_VEP { tuple val(meta), path("*.vcf.gz") , optional:true, emit: vcf tuple val(meta), path("*.tab.gz") , optional:true, emit: tab tuple val(meta), path("*.json.gz") , optional:true, emit: json - path "*.summary.html" , optional:true, emit: report + path "*.html" , optional:true, emit: report path "versions.yml" , emit: versions when: @@ -60,7 +60,7 @@ process ENSEMBLVEP_VEP { echo "" | gzip > ${prefix}.vcf.gz echo "" | gzip > ${prefix}.tab.gz echo "" | gzip > ${prefix}.json.gz - touch ${prefix}.summary.html + touch ${prefix}_summary.html cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test b/modules/nf-core/ensemblvep/vep/tests/main.nf.test index 4aff84a3c10..e68fff3c0ea 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test @@ -21,7 +21,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"112_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -72,7 +72,7 @@ nextflow_process { process { """ input[0] = Channel.of([ - [id:"111_WBcel235"], + [id:"112_WBcel235"], params.vep_genome, params.vep_species, params.vep_cache_version @@ -107,7 +107,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot(process.out.versions).match() }, - { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v111.0") } + { assert path(process.out.tab.get(0).get(1)).linesGzip.contains("## ENSEMBL VARIANT EFFECT PREDICTOR v112.0") } ) } } diff --git a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap index f937b299492..1c4c0e4e9f5 100644 --- a/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap +++ b/modules/nf-core/ensemblvep/vep/tests/main.nf.test.snap @@ -2,25 +2,25 @@ "test_ensemblvep_vep_fasta_tab_gz": { "content": [ [ - "versions.yml:md5,bd2ba1b4741a7d0a224160b50859f4ba" + "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T17:35:20.694114" + "timestamp": "2024-09-02T10:15:18.228927" }, "test_ensemblvep_vep_fasta_vcf": { "content": [ [ - "versions.yml:md5,bd2ba1b4741a7d0a224160b50859f4ba" + "versions.yml:md5,d06f1eb60f534489026d682eb3aa5559" ] ], "meta": { "nf-test": "0.8.4", - "nextflow": "24.03.0" + "nextflow": "24.04.4" }, - "timestamp": "2024-04-15T17:34:41.093843" + "timestamp": "2024-09-02T10:14:50.193861" } } \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/vep/tests/nextflow.config b/modules/nf-core/ensemblvep/vep/tests/nextflow.config index 882bce41a04..9aa481645ef 100644 --- a/modules/nf-core/ensemblvep/vep/tests/nextflow.config +++ b/modules/nf-core/ensemblvep/vep/tests/nextflow.config @@ -1,5 +1,5 @@ params { - vep_cache_version = "111" + vep_cache_version = "112" vep_genome = "WBcel235" vep_species = "caenorhabditis_elegans" } diff --git a/modules/nf-core/entrezdirect/esearch/environment.yml b/modules/nf-core/entrezdirect/esearch/environment.yml index 3b0472c3d20..4aee27d35c8 100644 --- a/modules/nf-core/entrezdirect/esearch/environment.yml +++ b/modules/nf-core/entrezdirect/esearch/environment.yml @@ -1,7 +1,5 @@ -name: entrezdirect_esearch channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::entrez-direct=16.2 diff --git a/modules/nf-core/entrezdirect/esearch/meta.yml b/modules/nf-core/entrezdirect/esearch/meta.yml index cc00358aa53..e3e2ffedc90 100644 --- a/modules/nf-core/entrezdirect/esearch/meta.yml +++ b/modules/nf-core/entrezdirect/esearch/meta.yml @@ -27,10 +27,10 @@ input: Groovy Map containing sample information e.g. [ id:'test' ] - database: - type: value + type: string description: Value must be a valid Entrez database name. - term: - type: value + type: string description: | Entrez text query. All special characters must be URL encoded. Spaces may be replaced by '+' signs. diff --git a/modules/nf-core/entrezdirect/esummary/environment.yml b/modules/nf-core/entrezdirect/esummary/environment.yml index 022046e3e43..4aee27d35c8 100644 --- a/modules/nf-core/entrezdirect/esummary/environment.yml +++ b/modules/nf-core/entrezdirect/esummary/environment.yml @@ -1,7 +1,5 @@ -name: entrezdirect_esummary channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::entrez-direct=16.2 diff --git a/modules/nf-core/entrezdirect/esummary/main.nf b/modules/nf-core/entrezdirect/esummary/main.nf index 98142a16694..22b3b931a6a 100644 --- a/modules/nf-core/entrezdirect/esummary/main.nf +++ b/modules/nf-core/entrezdirect/esummary/main.nf @@ -35,4 +35,18 @@ process ENTREZDIRECT_ESUMMARY { esummary: \$(esummary -version) END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if (!uid && !uids_file) error "No input. Valid input: an identifier or a .txt file with identifiers" + if (uid && uids_file) error "Only one input is required: a single identifier or a .txt file with identifiers" + """ + touch ${prefix}.xml + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + esummary: \$(esummary -version) + END_VERSIONS + """ } diff --git a/modules/nf-core/entrezdirect/esummary/meta.yml b/modules/nf-core/entrezdirect/esummary/meta.yml index f82eaafa898..8f0dbd589e5 100644 --- a/modules/nf-core/entrezdirect/esummary/meta.yml +++ b/modules/nf-core/entrezdirect/esummary/meta.yml @@ -28,10 +28,10 @@ input: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - database: - type: value + type: string description: Value must be a valid Entrez database name ('assembly', etc). - uid: - type: value + type: string description: Unique Identifier (UID) of record in NCBI database. Cannot be used at the same time as uids_file - uids_file: type: file diff --git a/modules/nf-core/entrezdirect/esummary/tests/main.nf.test b/modules/nf-core/entrezdirect/esummary/tests/main.nf.test new file mode 100644 index 00000000000..6578a96cbef --- /dev/null +++ b/modules/nf-core/entrezdirect/esummary/tests/main.nf.test @@ -0,0 +1,122 @@ + +nextflow_process { + + name "Test Process ENTREZDIRECT_ESUMMARY" + script "../main.nf" + process "ENTREZDIRECT_ESUMMARY" + + tag "modules" + tag "modules_nfcore" + tag "entrezdirect" + tag "entrezdirect/esummary" + + test("test-entrezdirect-esummary-sra") { + + when { + process { + """ + input[0] = [ + [ id:'test_sra' ], // meta map + uid = '5135484', + [] + ] + input[1] = 'sra' + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.xml[0][1]).readLines()[0..2], + process.out.versions + ).match() + } + ) + } + } + + test("test-entrezdirect-esummary-genome") { + + when { + process { + """ + input[0] = [ + [ id:'test_genome' ], // meta map + uid = '768', + [] + ] + input[1] = 'genome' + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.xml[0][1]).readLines()[0..2], + process.out.versions + ).match() + } + ) + } + } + + test("test-entrezdirect-esummary-assembly") { + + when { + process { + """ + input[0] = [ + [ id:'test_assembly' ], // meta map + uid = '191021', + [] + ] + input[1] = 'assembly' + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.xml[0][1]).readLines()[0..2], + process.out.versions + ).match() + } + ) + } + } + + test("test-entrezdirect-esummary-assembly-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test_assembly' ], // meta map + uid = '191021', + [] + ] + input[1] = 'assembly' + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/entrezdirect/esummary/tests/main.nf.test.snap b/modules/nf-core/entrezdirect/esummary/tests/main.nf.test.snap new file mode 100644 index 00000000000..4de731269e3 --- /dev/null +++ b/modules/nf-core/entrezdirect/esummary/tests/main.nf.test.snap @@ -0,0 +1,86 @@ +{ + "test-entrezdirect-esummary-sra": { + "content": [ + [ + "", + "", + "" + ], + [ + "versions.yml:md5,def7a5887a9b4595deafe394887ca56d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T10:20:00.681054" + }, + "test-entrezdirect-esummary-assembly": { + "content": [ + [ + "", + "", + "" + ], + [ + "versions.yml:md5,def7a5887a9b4595deafe394887ca56d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T10:20:13.617106" + }, + "test-entrezdirect-esummary-assembly-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test_assembly" + }, + "test_assembly.xml:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,def7a5887a9b4595deafe394887ca56d" + ], + "versions": [ + "versions.yml:md5,def7a5887a9b4595deafe394887ca56d" + ], + "xml": [ + [ + { + "id": "test_assembly" + }, + "test_assembly.xml:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T21:27:26.876243" + }, + "test-entrezdirect-esummary-genome": { + "content": [ + [ + "", + "", + "" + ], + [ + "versions.yml:md5,def7a5887a9b4595deafe394887ca56d" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T10:20:07.587401" + } +} \ No newline at end of file diff --git a/modules/nf-core/entrezdirect/xtract/environment.yml b/modules/nf-core/entrezdirect/xtract/environment.yml index ec0abcbde25..4aee27d35c8 100644 --- a/modules/nf-core/entrezdirect/xtract/environment.yml +++ b/modules/nf-core/entrezdirect/xtract/environment.yml @@ -1,7 +1,5 @@ -name: entrezdirect_xtract channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::entrez-direct=16.2 diff --git a/modules/nf-core/entrezdirect/xtract/meta.yml b/modules/nf-core/entrezdirect/xtract/meta.yml index 3f69f822a2d..0b3cdd0321c 100644 --- a/modules/nf-core/entrezdirect/xtract/meta.yml +++ b/modules/nf-core/entrezdirect/xtract/meta.yml @@ -30,13 +30,13 @@ input: type: file description: XML text file containing query results from database. - pattern: - type: value + type: string description: String in xml_input that encloses element to search. - element: - type: value + type: string description: Space-delimited strings that will be converted to columns. - sep: - type: value + type: string description: Separator/delimiter between columns (for instance "," or "\t"). output: - meta: diff --git a/modules/nf-core/epang/place/environment.yml b/modules/nf-core/epang/place/environment.yml index a8536b1d486..6faa55f390e 100644 --- a/modules/nf-core/epang/place/environment.yml +++ b/modules/nf-core/epang/place/environment.yml @@ -1,7 +1,5 @@ -name: epang_place channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::epa-ng=0.3.8 diff --git a/modules/nf-core/epang/place/main.nf b/modules/nf-core/epang/place/main.nf index 217975ebe36..3426d8a5ed8 100644 --- a/modules/nf-core/epang/place/main.nf +++ b/modules/nf-core/epang/place/main.nf @@ -51,4 +51,22 @@ process EPANG_PLACE { epang: \$(echo \$(epa-ng --version 2>&1) | sed 's/^EPA-ng v//') END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def queryarg = queryaln ? "--query $queryaln" : "" + def refalnarg = referencealn ? "--ref-msa $referencealn" : "" + def reftreearg = referencetree ? "--tree $referencetree" : "" + def bfastarg = bfastfile ? "--bfast $bfastfile" : "" + def binaryarg = binaryfile ? "--binary $binaryfile" : "" + if ( binaryfile && ( referencealn || referencetree ) ) error "[EPANG] Cannot supply both binary and reference MSA or reference tree. Check input" + """ + touch ${prefix}.epa_info.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + epang: \$(echo \$(epa-ng --version 2>&1) | sed 's/^EPA-ng v//') + END_VERSIONS + """ } diff --git a/modules/nf-core/epang/place/meta.yml b/modules/nf-core/epang/place/meta.yml index 7d31a34972e..be90ceabfc4 100644 --- a/modules/nf-core/epang/place/meta.yml +++ b/modules/nf-core/epang/place/meta.yml @@ -11,7 +11,7 @@ tools: documentation: "https://github.com/Pbdas/epa-ng/wiki/Full-Stack-Example" tool_dev_url: "https://github.com/Pbdas/epa-ng" doi: "10.1093/sysbio/syy054" - licence: "['GNU Affero General Public License v3.0']" + licence: ["GNU Affero General Public License v3.0"] input: - meta: type: map diff --git a/modules/nf-core/epang/place/tests/main.nf.test b/modules/nf-core/epang/place/tests/main.nf.test new file mode 100644 index 00000000000..78987c50efa --- /dev/null +++ b/modules/nf-core/epang/place/tests/main.nf.test @@ -0,0 +1,79 @@ + +nextflow_process { + + name "Test Process EPANG_PLACE" + script "../main.nf" + process "EPANG_PLACE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "epang" + tag "epang/place" + + test("test-epang-place") { + + when { + process { + """ + input[0] = [ + [ id:'test', model:'LG' ], // meta map + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/epang/query.alnfaa.gz', checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/epang/reference.alnfaa.gz', checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/epang/reference.newick', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.epang }, // The entire folder including .command.sh, etc + { assert snapshot( + file(process.out.jplace[0][1]).name, + file(process.out.log[0]).name, + process.out.versions + ).match() + } + ) + } + } + + test("test-epang-place-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test', model:'LG' ], // meta map + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/epang/query.alnfaa.gz', checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/epang/reference.alnfaa.gz', checkIfExists: true), + file('https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/epang/reference.newick', checkIfExists: true) + ] + input[1] = [] + input[2] = [] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert process.out.epang }, // The entire folder including .command.sh, etc + { assert snapshot( + process.out.jplace, + file(process.out.log[0]).name, + process.out.versions + ).match() + } + ) + } + } + +} diff --git a/modules/nf-core/epang/place/tests/main.nf.test.snap b/modules/nf-core/epang/place/tests/main.nf.test.snap new file mode 100644 index 00000000000..c976c374eac --- /dev/null +++ b/modules/nf-core/epang/place/tests/main.nf.test.snap @@ -0,0 +1,32 @@ +{ + "test-epang-place-stub": { + "content": [ + [ + + ], + "test.epa_info.log", + [ + "versions.yml:md5,5f9d61fa794083a919e0f547f353ad3e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T12:09:20.297486" + }, + "test-epang-place": { + "content": [ + "test.epa_result.jplace.gz", + "test.epa_info.log", + [ + "versions.yml:md5,5f9d61fa794083a919e0f547f353ad3e" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T12:09:15.588794" + } +} \ No newline at end of file diff --git a/modules/nf-core/epang/place/tests/nextflow.config b/modules/nf-core/epang/place/tests/nextflow.config new file mode 100644 index 00000000000..9cc672a460c --- /dev/null +++ b/modules/nf-core/epang/place/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + // This is a very clear techniuqe to pass sample specific optional value arguments. + // I do not think this violates any nf-core guidelines + ext.args = { " --model ${meta.model} " } +} diff --git a/modules/nf-core/epang/split/environment.yml b/modules/nf-core/epang/split/environment.yml index 5dd7ff7711a..6faa55f390e 100644 --- a/modules/nf-core/epang/split/environment.yml +++ b/modules/nf-core/epang/split/environment.yml @@ -1,7 +1,5 @@ -name: epang_split channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::epa-ng=0.3.8 diff --git a/modules/nf-core/epang/split/meta.yml b/modules/nf-core/epang/split/meta.yml index 5af4234f0ae..21cb81ae217 100644 --- a/modules/nf-core/epang/split/meta.yml +++ b/modules/nf-core/epang/split/meta.yml @@ -11,7 +11,7 @@ tools: documentation: "https://github.com/Pbdas/epa-ng/wiki/Full-Stack-Example" tool_dev_url: "https://github.com/Pbdas/epa-ng" doi: "10.1093/sysbio/syy054" - licence: "['GNU Affero General Public License v3.0']" + licence: ["GNU Affero General Public License v3.0"] input: # Only when we have meta - meta: diff --git a/modules/nf-core/estsfs/environment.yml b/modules/nf-core/estsfs/environment.yml new file mode 100644 index 00000000000..73ad79cc3af --- /dev/null +++ b/modules/nf-core/estsfs/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::est-sfs=2.04 diff --git a/modules/nf-core/estsfs/main.nf b/modules/nf-core/estsfs/main.nf index 2c781054b94..94b47d0825c 100644 --- a/modules/nf-core/estsfs/main.nf +++ b/modules/nf-core/estsfs/main.nf @@ -3,7 +3,7 @@ process ESTSFS { label 'process_low' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda "bioconda::est-sfs=2.04" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/est-sfs:2.04--h245ed52_0': 'biocontainers/est-sfs:2.04--h245ed52_0' }" @@ -34,7 +34,8 @@ process ESTSFS { stub: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '2.04' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ touch ${prefix}_sfs.txt touch ${prefix}_pvalues.txt diff --git a/modules/nf-core/estsfs/meta.yml b/modules/nf-core/estsfs/meta.yml index cae1988afcc..9d3d0d80da1 100644 --- a/modules/nf-core/estsfs/meta.yml +++ b/modules/nf-core/estsfs/meta.yml @@ -12,7 +12,7 @@ tools: documentation: "https://sourceforge.net/projects/est-usfs/" tool_dev_url: "https://sourceforge.net/projects/est-usfs/files/est-sfs-release-2.04.tar.gz" doi: "10.1534/genetics.118.301120" - licence: "['Free for Academic Use']" + licence: ["Free for Academic Use"] input: - meta: type: map diff --git a/modules/nf-core/estsfs/tests/main.nf.test b/modules/nf-core/estsfs/tests/main.nf.test new file mode 100644 index 00000000000..33e602d9d90 --- /dev/null +++ b/modules/nf-core/estsfs/tests/main.nf.test @@ -0,0 +1,60 @@ + +nextflow_process { + + name "Test Process ESTSFS" + script "../main.nf" + process "ESTSFS" + + tag "modules" + tag "modules_nfcore" + tag "estsfs" + + test("test-estsfs") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'delete_me/estsfs/config-JC.txt', checkIfExists: true), + file(params.modules_testdata_base_path + 'delete_me/estsfs/TEST-DATA.TXT', checkIfExists: true), + file(params.modules_testdata_base_path + 'delete_me/estsfs/seedfile.txt', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-estsfs-stub") { + options '-stub' + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'delete_me/estsfs/config-JC.txt', checkIfExists: true), + file(params.modules_testdata_base_path + 'delete_me/estsfs/TEST-DATA.TXT', checkIfExists: true), + file(params.modules_testdata_base_path + 'delete_me/estsfs/seedfile.txt', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/estsfs/tests/main.nf.test.snap b/modules/nf-core/estsfs/tests/main.nf.test.snap new file mode 100644 index 00000000000..8aa4b4fa8f9 --- /dev/null +++ b/modules/nf-core/estsfs/tests/main.nf.test.snap @@ -0,0 +1,100 @@ +{ + "test-estsfs-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_sfs.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_pvalues.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,4adede66999fba698635d81cd05a04e2" + ], + "pvalues_out": [ + [ + { + "id": "test" + }, + "test_pvalues.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sfs_out": [ + [ + { + "id": "test" + }, + "test_sfs.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4adede66999fba698635d81cd05a04e2" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T12:11:56.670919" + }, + "test-estsfs": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_sfs.txt:md5,5da246e273d22b177f0683b44fe6d80a" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_pvalues.txt:md5,254ffe06e7d453920905eb4a41a82500" + ] + ], + "2": [ + "versions.yml:md5,4adede66999fba698635d81cd05a04e2" + ], + "pvalues_out": [ + [ + { + "id": "test" + }, + "test_pvalues.txt:md5,254ffe06e7d453920905eb4a41a82500" + ] + ], + "sfs_out": [ + [ + { + "id": "test" + }, + "test_sfs.txt:md5,5da246e273d22b177f0683b44fe6d80a" + ] + ], + "versions": [ + "versions.yml:md5,4adede66999fba698635d81cd05a04e2" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-09-02T12:14:12.057558" + } +} \ No newline at end of file diff --git a/modules/nf-core/evigene/tr2aacds/environment.yml b/modules/nf-core/evigene/tr2aacds/environment.yml new file mode 100644 index 00000000000..ee044641397 --- /dev/null +++ b/modules/nf-core/evigene/tr2aacds/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::evigene=23.7.15" diff --git a/modules/nf-core/evigene/tr2aacds/main.nf b/modules/nf-core/evigene/tr2aacds/main.nf new file mode 100644 index 00000000000..1796b80de12 --- /dev/null +++ b/modules/nf-core/evigene/tr2aacds/main.nf @@ -0,0 +1,107 @@ +process EVIGENE_TR2AACDS { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/evigene:23.7.15--hdfd78af_1': + 'biocontainers/evigene:23.7.15--hdfd78af_1' }" + + input: + tuple val(meta), path(fasta) + + output: + tuple val(meta), path("dropset") , emit: dropset + tuple val(meta), path("okayset") , emit: okayset + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + def max_memory = 7*1024 + if (!task.memory) { + log.info '[evigene] Available memory not known - defaulting to 7GB. Specify process memory requirements to change this.' + } else { + max_memory = (task.memory.mega*0.8).intValue() + } + + def simple_name = fasta.simpleName + def rename_files= ( simple_name != prefix ) ? 'yes' : 'no' + """ + # Nextflow changes the container --entrypoint to /bin/bash (container default entrypoint: /usr/local/env-execute) + # Check for container variable initialisation script and source it. + if [ -f "/usr/local/env-activate.sh" ]; then + set +u # Otherwise, errors out because of various unbound variables + . "/usr/local/env-activate.sh" + set -u + fi + + \$EVIGENEHOME/scripts/prot/tr2aacds.pl \\ + $args \\ + -NCPU=$task.cpus \\ + -MAXMEM=$max_memory \\ + -cdnaseq $fasta + + if [ "$rename_files" = "yes" ]; then + find \\ + dropset \\ + -type f \\ + -exec sh -c 'mv "\$1" "\$(echo \$1 | sed s/$simple_name/$prefix/)"' sh {} \\; + + find \\ + okayset \\ + -type f \\ + -exec sh -c 'mv "\$1" "\$(echo \$1 | sed s/$simple_name/$prefix/)"' sh {} \\; + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + tr2aacds: \$(cat \$EVIGENEHOME/scripts/prot/tr2aacds.pl | sed -n 's/use constant VERSION => \\([^;]*\\);.*/\\1/p') + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def max_memory = 7*1024 + if (!task.memory) { + log.info '[evigene] Available memory not known - defaulting to 7GB. Specify process memory requirements to change this.' + } + """ + # Nextflow changes the container --entrypoint to /bin/bash (container default entrypoint: /usr/local/env-execute) + # Check for container variable initialisation script and source it. + if [ -f "/usr/local/env-activate.sh" ]; then + set +u # Otherwise, errors out because of various unbound variables + . "/usr/local/env-activate.sh" + set -u + fi + + mkdir dropset + touch dropset/${prefix}.drop.aa + touch dropset/${prefix}.drop.cds + touch dropset/${prefix}.drop.tr + + mkdir okayset + touch okayset/${prefix}.ann.txt + touch okayset/${prefix}.cull.aa + touch okayset/${prefix}.cull.cds + touch okayset/${prefix}.cull.mrna + touch okayset/${prefix}.genesum.txt + touch okayset/${prefix}.mainalt.tab + touch okayset/${prefix}.okay.aa + touch okayset/${prefix}.okay.cds + touch okayset/${prefix}.okay.mrna + touch okayset/${prefix}.pubids + touch okayset/${prefix}.pubids.old + touch okayset/${prefix}.pubids.realt.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + tr2aacds: \$(cat \$EVIGENEHOME/scripts/prot/tr2aacds.pl | sed -n 's/use constant VERSION => \\([^;]*\\);.*/\\1/p') + END_VERSIONS + """ +} diff --git a/modules/nf-core/evigene/tr2aacds/meta.yml b/modules/nf-core/evigene/tr2aacds/meta.yml new file mode 100644 index 00000000000..9642ed8bd66 --- /dev/null +++ b/modules/nf-core/evigene/tr2aacds/meta.yml @@ -0,0 +1,56 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "evigene_tr2aacds" +description: Uses evigene/scripts/prot/tr2aacds.pl to filter a transcript assembly +keywords: + - genomics + - transcript + - assembly + - clean + - polish + - filter + - redundant + - duplicate +tools: + - "evigene": + description: | + EvidentialGene is a genome informatics project for "Evidence Directed Gene Construction + for Eukaryotes", for constructing high quality, accurate gene sets for animals and + plants (any eukaryotes), being developed by Don Gilbert at Indiana University, gilbertd at indiana edu. + homepage: "http://arthropods.eugenes.org/EvidentialGene/evigene/" + documentation: "http://arthropods.eugenes.org/EvidentialGene/evigene/" + tool_dev_url: "http://arthropods.eugenes.org/EvidentialGene/evigene/" + doi: "10.7490/f1000research.1112594.1 " + licence: ["Don Gilbert, gilbertd At indiana edu, 2018"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - fasta: + type: file + description: Transcript assembly in fasta format + pattern: "*.{fsa,fa,fasta,fsa.gz,fa.gz,fasta.gz}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - dropset: + type: directory + description: Directory containing dropped transcripts and associated files + pattern: "dropset" + - okayset: + type: directory + description: Directory containing included transcripts and associated files + pattern: "okayset" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@GallVp" +maintainers: + - "@GallVp" diff --git a/modules/nf-core/evigene/tr2aacds/tests/main.nf.test b/modules/nf-core/evigene/tr2aacds/tests/main.nf.test new file mode 100644 index 00000000000..720550c9aea --- /dev/null +++ b/modules/nf-core/evigene/tr2aacds/tests/main.nf.test @@ -0,0 +1,64 @@ +nextflow_process { + + name "Test Process EVIGENE_TR2AACDS" + script "../main.nf" + process "EVIGENE_TR2AACDS" + + tag "modules" + tag "modules_nfcore" + tag "evigene" + tag "evigene/tr2aacds" + + test("homo_sapiens - transcriptome_fasta") { + when { + process { + """ + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/transcriptome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.dropset[0][1], + file(process.out.okayset[0][1]).listFiles().collect { it.name }.toSorted(), + process.out.versions, + ).match() + } + ) + } + + } + + test("stub") { + + options '-stub' + + when { + process { + """ + + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/transcriptome.fasta', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/evigene/tr2aacds/tests/main.nf.test.snap b/modules/nf-core/evigene/tr2aacds/tests/main.nf.test.snap new file mode 100644 index 00000000000..2aa3ea0414f --- /dev/null +++ b/modules/nf-core/evigene/tr2aacds/tests/main.nf.test.snap @@ -0,0 +1,120 @@ +{ + "stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.drop.aa:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.drop.cds:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.drop.tr:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ann.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.cull.aa:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.cull.cds:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.cull.mrna:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.genesum.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.mainalt.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.okay.aa:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.okay.cds:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.okay.mrna:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.pubids:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.pubids.old:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.pubids.realt.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "2": [ + "versions.yml:md5,57e8000ce92f5f8d590e7baffa762e84" + ], + "dropset": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.drop.aa:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.drop.cds:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.drop.tr:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "okayset": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.ann.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.cull.aa:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.cull.cds:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.cull.mrna:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.genesum.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.mainalt.tab:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.okay.aa:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.okay.cds:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.okay.mrna:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.pubids:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.pubids.old:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.pubids.realt.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,57e8000ce92f5f8d590e7baffa762e84" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-30T13:24:57.680066" + }, + "homo_sapiens - transcriptome_fasta": { + "content": [ + [ + "test.drop.aa:md5,b43c660c34a419ec35090c163a4e4a54", + "test.drop.cds:md5,5adb810e379fde7d2057a34ead7eaa58", + "test.drop.tr:md5,5f38aa1a7e7adb09ce34c0bd74727d67" + ], + [ + "test.ann.txt", + "test.cull.aa", + "test.cull.cds", + "test.cull.mrna", + "test.genesum.txt", + "test.mainalt.tab", + "test.okay.aa", + "test.okay.cds", + "test.okay.mrna", + "test.pubids", + "test.pubids.old", + "test.pubids.realt.log" + ], + [ + "versions.yml:md5,57e8000ce92f5f8d590e7baffa762e84" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-06-30T13:46:54.373144" + } +} \ No newline at end of file diff --git a/modules/nf-core/expansionhunter/environment.yml b/modules/nf-core/expansionhunter/environment.yml index 90a3bfff220..07db4374d40 100644 --- a/modules/nf-core/expansionhunter/environment.yml +++ b/modules/nf-core/expansionhunter/environment.yml @@ -1,9 +1,6 @@ -name: expansionhunter - channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::expansionhunter=5.0.0 diff --git a/modules/nf-core/expansionhunter/tests/main.nf.test b/modules/nf-core/expansionhunter/tests/main.nf.test index ef15e133e19..40c0f2361e5 100644 --- a/modules/nf-core/expansionhunter/tests/main.nf.test +++ b/modules/nf-core/expansionhunter/tests/main.nf.test @@ -13,12 +13,12 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), ] - input[1] = [[id:'fasta'],file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - input[2] = [[id:'fasta_fai'],file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true)] - input[3] = [[id:'catalogue'],file(params.test_data['homo_sapiens']['genome']['repeat_expansions'], checkIfExists: true)] + input[1] = [[id:'fasta'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] + input[2] = [[id:'fasta_fai'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)] + input[3] = [[id:'catalogue'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/loci/repeat_expansions.json', checkIfExists: true)] """ } } @@ -40,12 +40,12 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), ] - input[1] = [[id:'fasta'],file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true)] - input[2] = [[id:'fasta_fai'],file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true)] - input[3] = [[id:'catalogue'],file(params.test_data['homo_sapiens']['genome']['repeat_expansions'], checkIfExists: true)] + input[1] = [[id:'fasta'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] + input[2] = [[id:'fasta_fai'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)] + input[3] = [[id:'catalogue'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/loci/repeat_expansions.json', checkIfExists: true)] """ } } diff --git a/modules/nf-core/expansionhunterdenovo/merge/environment.yml b/modules/nf-core/expansionhunterdenovo/merge/environment.yml index 3409da29843..da1383d5349 100644 --- a/modules/nf-core/expansionhunterdenovo/merge/environment.yml +++ b/modules/nf-core/expansionhunterdenovo/merge/environment.yml @@ -1,7 +1,5 @@ -name: expansionhunterdenovo_merge channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::expansionhunterdenovo=0.9.0 diff --git a/modules/nf-core/expansionhunterdenovo/merge/meta.yml b/modules/nf-core/expansionhunterdenovo/merge/meta.yml index a0eb8e2d6df..a7aa59fb405 100644 --- a/modules/nf-core/expansionhunterdenovo/merge/meta.yml +++ b/modules/nf-core/expansionhunterdenovo/merge/meta.yml @@ -10,7 +10,7 @@ tools: homepage: "https://github.com/Illumina/ExpansionHunterDenovo" documentation: "https://github.com/Illumina/ExpansionHunterDenovo/blob/master/documentation/00_Introduction.md" tool_dev_url: "https://github.com/Illumina/ExpansionHunterDenovo" - licence: "['Apache License 2.0']" + licence: ["Apache License 2.0"] input: - meta: type: map diff --git a/modules/nf-core/expansionhunterdenovo/profile/environment.yml b/modules/nf-core/expansionhunterdenovo/profile/environment.yml index fe58596b8a7..da1383d5349 100644 --- a/modules/nf-core/expansionhunterdenovo/profile/environment.yml +++ b/modules/nf-core/expansionhunterdenovo/profile/environment.yml @@ -1,7 +1,5 @@ -name: expansionhunterdenovo_profile channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::expansionhunterdenovo=0.9.0 diff --git a/modules/nf-core/expansionhunterdenovo/profile/meta.yml b/modules/nf-core/expansionhunterdenovo/profile/meta.yml index d10fdd1e7da..68fac10a2a5 100644 --- a/modules/nf-core/expansionhunterdenovo/profile/meta.yml +++ b/modules/nf-core/expansionhunterdenovo/profile/meta.yml @@ -13,7 +13,7 @@ tools: homepage: "https://github.com/Illumina/ExpansionHunterDenovo" documentation: "https://github.com/Illumina/ExpansionHunterDenovo/blob/master/documentation/00_Introduction.md" tool_dev_url: "https://github.com/Illumina/ExpansionHunterDenovo" - licence: "['Apache License 2.0']" + licence: ["Apache License 2.0"] input: - meta: type: map diff --git a/modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test b/modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test new file mode 100644 index 00000000000..d77e9e248b2 --- /dev/null +++ b/modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test @@ -0,0 +1,63 @@ + +nextflow_process { + + name "Test Process EXPANSIONHUNTERDENOVO_PROFILE" + script "../main.nf" + process "EXPANSIONHUNTERDENOVO_PROFILE" + + tag "modules" + tag "modules_nfcore" + tag "expansionhunterdenovo" + tag "expansionhunterdenovo/profile" + + test("test-expansionhunterdenovo-profile") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true) + ] + input[1] = [ [id:'fasta'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [ [id:'fasta_fai'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-expansionhunterdenovo-profile-cram") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true) + ] + input[1] = [ [id:'fasta'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) ] + input[2] = [ [id:'fasta_fai'],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test.snap b/modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test.snap new file mode 100644 index 00000000000..fbba24047d6 --- /dev/null +++ b/modules/nf-core/expansionhunterdenovo/profile/tests/main.nf.test.snap @@ -0,0 +1,144 @@ +{ + "test-expansionhunterdenovo-profile": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.locus.tsv:md5,225b2e8975f3ba50058db999824fef66" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.motif.tsv:md5,7828d4d4c33ad4a8d70313f9e89758d7" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.str_profile.json:md5,8709992cefee025118798df3ca878d0d" + ] + ], + "3": [ + "versions.yml:md5,db98daacc305d0cba3ff6103a62a1677" + ], + "locus_tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.locus.tsv:md5,225b2e8975f3ba50058db999824fef66" + ] + ], + "motif_tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.motif.tsv:md5,7828d4d4c33ad4a8d70313f9e89758d7" + ] + ], + "str_profile": [ + [ + { + "id": "test", + "single_end": false + }, + "test.str_profile.json:md5,8709992cefee025118798df3ca878d0d" + ] + ], + "versions": [ + "versions.yml:md5,db98daacc305d0cba3ff6103a62a1677" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:35:00.483786" + }, + "test-expansionhunterdenovo-profile-cram": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.locus.tsv:md5,225b2e8975f3ba50058db999824fef66" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.motif.tsv:md5,7828d4d4c33ad4a8d70313f9e89758d7" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.str_profile.json:md5,8709992cefee025118798df3ca878d0d" + ] + ], + "3": [ + "versions.yml:md5,db98daacc305d0cba3ff6103a62a1677" + ], + "locus_tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.locus.tsv:md5,225b2e8975f3ba50058db999824fef66" + ] + ], + "motif_tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.motif.tsv:md5,7828d4d4c33ad4a8d70313f9e89758d7" + ] + ], + "str_profile": [ + [ + { + "id": "test", + "single_end": false + }, + "test.str_profile.json:md5,8709992cefee025118798df3ca878d0d" + ] + ], + "versions": [ + "versions.yml:md5,db98daacc305d0cba3ff6103a62a1677" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-28T13:35:06.781505" + } +} \ No newline at end of file diff --git a/modules/nf-core/falco/environment.yml b/modules/nf-core/falco/environment.yml index eeedb5b734d..c48809ccc67 100644 --- a/modules/nf-core/falco/environment.yml +++ b/modules/nf-core/falco/environment.yml @@ -1,7 +1,5 @@ -name: falco channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::falco=1.2.1 diff --git a/modules/nf-core/famsa/align/environment.yml b/modules/nf-core/famsa/align/environment.yml index c41cda2af07..08b6f88908a 100644 --- a/modules/nf-core/famsa/align/environment.yml +++ b/modules/nf-core/famsa/align/environment.yml @@ -1,7 +1,5 @@ -name: famsa_align channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::famsa=2.2.2 diff --git a/modules/nf-core/famsa/align/tests/main.nf.test b/modules/nf-core/famsa/align/tests/main.nf.test index 2d7cac3c4e0..8e91c3084e0 100644 --- a/modules/nf-core/famsa/align/tests/main.nf.test +++ b/modules/nf-core/famsa/align/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] input[1] = [[:],[]] input[2] = false @@ -40,7 +40,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] input[1] = [[:],[]] input[2] = true @@ -66,7 +66,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] """ } @@ -77,7 +77,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] input[1] = FAMSA_GUIDETREE.out.tree.collect{ meta, tree -> tree }.map{ tree -> [[ id: 'test_summary'], tree]} input[2] = true diff --git a/modules/nf-core/famsa/guidetree/environment.yml b/modules/nf-core/famsa/guidetree/environment.yml index 28be1c7f7fc..08b6f88908a 100644 --- a/modules/nf-core/famsa/guidetree/environment.yml +++ b/modules/nf-core/famsa/guidetree/environment.yml @@ -1,7 +1,5 @@ -name: famsa_guidetree channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::famsa=2.2.2 diff --git a/modules/nf-core/famsa/guidetree/main.nf b/modules/nf-core/famsa/guidetree/main.nf index 7d8f46cdeaf..498112e8fe4 100644 --- a/modules/nf-core/famsa/guidetree/main.nf +++ b/modules/nf-core/famsa/guidetree/main.nf @@ -46,4 +46,3 @@ process FAMSA_GUIDETREE { END_VERSIONS """ } - diff --git a/modules/nf-core/famsa/guidetree/tests/main.nf.test b/modules/nf-core/famsa/guidetree/tests/main.nf.test index 867e7812b01..4c01a6e9c16 100644 --- a/modules/nf-core/famsa/guidetree/tests/main.nf.test +++ b/modules/nf-core/famsa/guidetree/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/faqcs/environment.yml b/modules/nf-core/faqcs/environment.yml index fa58ef19c6f..d019c4f8bfb 100644 --- a/modules/nf-core/faqcs/environment.yml +++ b/modules/nf-core/faqcs/environment.yml @@ -1,7 +1,5 @@ -name: faqcs channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::faqcs=2.10 diff --git a/modules/nf-core/faqcs/main.nf b/modules/nf-core/faqcs/main.nf index 3e79124c55d..7560a55e4cb 100644 --- a/modules/nf-core/faqcs/main.nf +++ b/modules/nf-core/faqcs/main.nf @@ -132,4 +132,3 @@ process FAQCS { END_VERSIONS """ } - diff --git a/modules/nf-core/fargene/environment.yml b/modules/nf-core/fargene/environment.yml index 56629ff4051..ade4d77097e 100644 --- a/modules/nf-core/fargene/environment.yml +++ b/modules/nf-core/fargene/environment.yml @@ -1,7 +1,5 @@ -name: fargene channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fargene=0.1 diff --git a/modules/nf-core/fargene/main.nf b/modules/nf-core/fargene/main.nf index b2feb86a300..42aa2ca2766 100644 --- a/modules/nf-core/fargene/main.nf +++ b/modules/nf-core/fargene/main.nf @@ -17,6 +17,7 @@ process FARGENE { tuple val(meta), path("*.log") , emit: log tuple val(meta), path("${prefix}/results_summary.txt") , emit: txt tuple val(meta), path("${prefix}/hmmsearchresults/*.out") , optional: true, emit: hmm + tuple val(meta), path("${prefix}/hmmsearchresults/retrieved-*.out") , optional: true, emit: hmm_genes tuple val(meta), path("${prefix}/predictedGenes/predicted-orfs.fasta") , optional: true, emit: orfs tuple val(meta), path("${prefix}/predictedGenes/predicted-orfs-amino.fasta") , optional: true, emit: orfs_amino tuple val(meta), path("${prefix}/predictedGenes/retrieved-contigs.fasta") , optional: true, emit: contigs @@ -24,7 +25,7 @@ process FARGENE { tuple val(meta), path("${prefix}/predictedGenes/*filtered.fasta") , optional: true, emit: filtered tuple val(meta), path("${prefix}/predictedGenes/*filtered-peptides.fasta") , optional: true, emit: filtered_pept tuple val(meta), path("${prefix}/retrievedFragments/all_retrieved_*.fastq") , optional: true, emit: fragments - tuple val(meta), path("${prefix}/retrievedFragments/retrievedFragments/trimmedReads/*.fasta"), optional: true, emit: trimmed + tuple val(meta), path("${prefix}/retrievedFragments/trimmedReads/*.fasta") , optional: true, emit: trimmed tuple val(meta), path("${prefix}/spades_assembly/*") , optional: true, emit: spades tuple val(meta), path("${prefix}/tmpdir/*.fasta") , optional: true, emit: metagenome tuple val(meta), path("${prefix}/tmpdir/*.out") , optional: true, emit: tmp @@ -50,4 +51,33 @@ process FARGENE { fargene: $VERSION END_VERSIONS """ + + stub: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '0.1' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${prefix}.log + mkdir -p ${prefix}/{hmmsearchresults,predictedGenes,retrievedFragments} + mkdir -p ${prefix}/retrievedFragments/trimmedReads/ + + touch ${prefix}/results_summary.txt + touch ${prefix}/hmmsearchresults/retrieved-${prefix}.out + touch ${prefix}/hmmsearchresults/${prefix}.out + touch ${prefix}/predictedGenes/predicted-orfs.fasta + touch ${prefix}/predictedGenes/predicted-orfs-amino.fasta + touch ${prefix}/predictedGenes/retrieved-contigs.fasta + touch ${prefix}/predictedGenes/retrieved-contigs-peptides.fasta + touch ${prefix}/predictedGenes/${prefix}-filtered.fasta + touch ${prefix}/predictedGenes/${prefix}-filtered-peptides.fasta + touch ${prefix}/retrievedFragments/all_retrieved_${prefix}.fastq + touch ${prefix}/retrievedFragments/trimmedReads/${prefix}.fasta + + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fargene: $VERSION + END_VERSIONS + """ + } diff --git a/modules/nf-core/fargene/meta.yml b/modules/nf-core/fargene/meta.yml index 8f1540b16e0..9fc5ce0f8eb 100644 --- a/modules/nf-core/fargene/meta.yml +++ b/modules/nf-core/fargene/meta.yml @@ -46,8 +46,12 @@ output: pattern: "*.{txt}" - hmm: type: file - description: output from hmmsearch + description: output from hmmsearch (both single gene annotations + contigs) pattern: "*.{out}" + - hmm_genes: + type: file + description: output from hmmsearch (single gene annotations only) + pattern: "retrieved-*.{out}" - orfs: type: file description: open reading frames (ORFs) diff --git a/modules/nf-core/fargene/tests/main.nf.test b/modules/nf-core/fargene/tests/main.nf.test index bc19ac5868d..2f4e3fc6329 100644 --- a/modules/nf-core/fargene/tests/main.nf.test +++ b/modules/nf-core/fargene/tests/main.nf.test @@ -7,24 +7,54 @@ nextflow_process { tag "modules" tag "modules_nfcore" tag "fargene" + tag "gunzip" + + setup { + + run("GUNZIP") { + script "../../gunzip/main.nf" + process { + """ + input[0] = Channel.fromList([ + tuple([ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true)) + ]) + """ + } + } + } test("fargene - bacteroides fragilis - contigs.fa.gz") { - setup { - - run("GUNZIP") { - script "../../gunzip/main.nf" - process { - """ - input[0] = Channel.fromList([ - tuple([ id:'test', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true)) - ]) - """ + when { + process { + """ + input[0] = GUNZIP.out.gunzip + input[1] = 'class_a' + """ + } + } + + then { + assertAll { + { assert process.success } + { assert snapshot( + process.out.txt, + path(process.out.log[0][1]).readLines().last().contains("Output can be found in"), + path(process.out.hmm[0][1]).readLines().last().contains("[ok]"), + file(process.out.tmp[0][1].find { file(it).name == "tmp.out" }).readLines().last().contains("[ok]"), + process.out.versions + ).match() } } } + } + + test("fargene - bacteroides fragilis - contigs.fa.gz - stub") { + + options "-stub" + when { process { """ @@ -35,12 +65,10 @@ nextflow_process { } then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.versions).match("versions") }, - { assert snapshot(process.out.txt).match("txt") }, - { assert path(process.out.log.get(0).get(1)).exists() }, - ) + assertAll { + { assert process.success } + { assert snapshot(process.out).match() } + } } } diff --git a/modules/nf-core/fargene/tests/main.nf.test.snap b/modules/nf-core/fargene/tests/main.nf.test.snap index 0e28de411cd..54724f1bd23 100644 --- a/modules/nf-core/fargene/tests/main.nf.test.snap +++ b/modules/nf-core/fargene/tests/main.nf.test.snap @@ -1,5 +1,262 @@ { - "txt": { + "fargene - bacteroides fragilis - contigs.fa.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "results_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + [ + { + "id": "test", + "single_end": false + }, + "all_retrieved_test.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "11": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "12": [ + + ], + "13": [ + + ], + "14": [ + + ], + "15": [ + "versions.yml:md5,a146d432794c87b5850fb7c4cbee11fc" + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "retrieved-test.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "retrieved-test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "predicted-orfs.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "predicted-orfs-amino.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": false + }, + "retrieved-contigs.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test", + "single_end": false + }, + "retrieved-contigs-peptides.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test", + "single_end": false + }, + "test-filtered.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test", + "single_end": false + }, + "test-filtered-peptides.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "contigs": [ + [ + { + "id": "test", + "single_end": false + }, + "retrieved-contigs.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "contigs_pept": [ + [ + { + "id": "test", + "single_end": false + }, + "retrieved-contigs-peptides.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "filtered": [ + [ + { + "id": "test", + "single_end": false + }, + "test-filtered.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "filtered_pept": [ + [ + { + "id": "test", + "single_end": false + }, + "test-filtered-peptides.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fragments": [ + [ + { + "id": "test", + "single_end": false + }, + "all_retrieved_test.fastq:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "hmm": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "retrieved-test.out:md5,d41d8cd98f00b204e9800998ecf8427e", + "test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "hmm_genes": [ + [ + { + "id": "test", + "single_end": false + }, + "retrieved-test.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metagenome": [ + + ], + "orfs": [ + [ + { + "id": "test", + "single_end": false + }, + "predicted-orfs.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "orfs_amino": [ + [ + { + "id": "test", + "single_end": false + }, + "predicted-orfs-amino.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "spades": [ + + ], + "tmp": [ + + ], + "trimmed": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "results_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,a146d432794c87b5850fb7c4cbee11fc" + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-12T15:08:54.830926802" + }, + "fargene - bacteroides fragilis - contigs.fa.gz": { "content": [ [ [ @@ -9,16 +266,18 @@ }, "results_summary.txt:md5,690d351cfc52577263ef4cfab1c81f50" ] - ] - ], - "timestamp": "2023-11-28T16:42:10.29998128" - }, - "versions": { - "content": [ + ], + true, + true, + true, [ "versions.yml:md5,a146d432794c87b5850fb7c4cbee11fc" ] ], - "timestamp": "2023-11-28T16:42:10.290144568" + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-12T15:24:49.384451483" } } \ No newline at end of file diff --git a/modules/nf-core/fastani/environment.yml b/modules/nf-core/fastani/environment.yml index 2d8c92e8859..bcfc7b4a1be 100644 --- a/modules/nf-core/fastani/environment.yml +++ b/modules/nf-core/fastani/environment.yml @@ -1,7 +1,5 @@ -name: fastani channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fastani=1.32 diff --git a/modules/nf-core/fastani/tests/main.nf.test b/modules/nf-core/fastani/tests/main.nf.test index 98c7933f4d7..a4318db49ee 100644 --- a/modules/nf-core/fastani/tests/main.nf.test +++ b/modules/nf-core/fastani/tests/main.nf.test @@ -14,9 +14,9 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['illumina']['contigs_fasta'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fasta/contigs.fasta', checkIfExists: true) """ } } diff --git a/modules/nf-core/fastavalidator/environment.yml b/modules/nf-core/fastavalidator/environment.yml index 70f346efe3d..44d55c1faf9 100644 --- a/modules/nf-core/fastavalidator/environment.yml +++ b/modules/nf-core/fastavalidator/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "fastavalidator" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::py_fasta_validator=0.6" diff --git a/modules/nf-core/fastavalidator/tests/main.nf.test b/modules/nf-core/fastavalidator/tests/main.nf.test index bb8c22cf779..39b00d8b968 100644 --- a/modules/nf-core/fastavalidator/tests/main.nf.test +++ b/modules/nf-core/fastavalidator/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } @@ -40,7 +40,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_gff3'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.gff3', checkIfExists: true) ] """ } diff --git a/modules/nf-core/fastawindows/environment.yml b/modules/nf-core/fastawindows/environment.yml index ce557158c7a..6775fb2e6ff 100644 --- a/modules/nf-core/fastawindows/environment.yml +++ b/modules/nf-core/fastawindows/environment.yml @@ -1,7 +1,5 @@ -name: fastawindows channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fasta_windows=0.2.4 diff --git a/modules/nf-core/fastawindows/main.nf b/modules/nf-core/fastawindows/main.nf index 03cc8c57b0d..bf5a3b72eff 100644 --- a/modules/nf-core/fastawindows/main.nf +++ b/modules/nf-core/fastawindows/main.nf @@ -32,6 +32,25 @@ process FASTAWINDOWS { --fasta $fasta \\ --output ${prefix} + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fasta_windows: \$(fasta_windows --version | cut -d' ' -f3) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir -p fw_out + + touch fw_out/${prefix}_freq_windows.tsv + touch fw_out/${prefix}_mononuc_windows.tsv + touch fw_out/${prefix}_dinuc_windows.tsv + touch fw_out/${prefix}_trinuc_windows.tsv + touch fw_out/${prefix}_tetranuc_windows.tsv + + cat <<-END_VERSIONS > versions.yml "${task.process}": fasta_windows: \$(fasta_windows --version | cut -d' ' -f3) diff --git a/modules/nf-core/fastawindows/meta.yml b/modules/nf-core/fastawindows/meta.yml index 494cc1b6afd..87f1d8b7dcf 100644 --- a/modules/nf-core/fastawindows/meta.yml +++ b/modules/nf-core/fastawindows/meta.yml @@ -9,7 +9,7 @@ tools: - "fastawindows": description: "fasta_windows is a tool written for Darwin Tree of Life chromosomal level genome assemblies. The executable takes a fasta formatted file and calculates some statistics of interest in windows" homepage: "https://github.com/tolkit/fasta_windows" - licence: "['MIT']" + licence: ["MIT"] input: - meta: type: map diff --git a/modules/nf-core/fastawindows/tests/main.nf.test b/modules/nf-core/fastawindows/tests/main.nf.test new file mode 100644 index 00000000000..f4bea49f446 --- /dev/null +++ b/modules/nf-core/fastawindows/tests/main.nf.test @@ -0,0 +1,57 @@ + +nextflow_process { + + name "Test Process FASTAWINDOWS" + script "../main.nf" + process "FASTAWINDOWS" + + tag "modules" + tag "modules_nfcore" + tag "fastawindows" + + test("test-fastawindows") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test-fastawindows-stub") { + options '-stub' + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/fastawindows/tests/main.nf.test.snap b/modules/nf-core/fastawindows/tests/main.nf.test.snap new file mode 100644 index 00000000000..f3474d3eaf6 --- /dev/null +++ b/modules/nf-core/fastawindows/tests/main.nf.test.snap @@ -0,0 +1,196 @@ +{ + "test-fastawindows-stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_freq_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_mononuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test_dinuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test_trinuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test_tetranuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + "versions.yml:md5,4e46686969aa8883f8092693ebcf7dab" + ], + "dinuc": [ + [ + { + "id": "test" + }, + "test_dinuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "freq": [ + [ + { + "id": "test" + }, + "test_freq_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "mononuc": [ + [ + { + "id": "test" + }, + "test_mononuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tetranuc": [ + [ + { + "id": "test" + }, + "test_tetranuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "trinuc": [ + [ + { + "id": "test" + }, + "test_trinuc_windows.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,4e46686969aa8883f8092693ebcf7dab" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-30T09:58:57.148076" + }, + "test-fastawindows": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_freq_windows.tsv:md5,237d50ac5ec2bef3142020d569fa5765" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_mononuc_windows.tsv:md5,a1b4437d0c71d9cfd676de6bda2633f0" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test_dinuc_windows.tsv:md5,696a9f2a4b2114dfbd6b414694f56a11" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test_trinuc_windows.tsv:md5,dfb05b758f0474e937e2d6ba6fe46dae" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test_tetranuc_windows.tsv:md5,e621537175ee8019360f8b6e8f4330b7" + ] + ], + "5": [ + "versions.yml:md5,4e46686969aa8883f8092693ebcf7dab" + ], + "dinuc": [ + [ + { + "id": "test" + }, + "test_dinuc_windows.tsv:md5,696a9f2a4b2114dfbd6b414694f56a11" + ] + ], + "freq": [ + [ + { + "id": "test" + }, + "test_freq_windows.tsv:md5,237d50ac5ec2bef3142020d569fa5765" + ] + ], + "mononuc": [ + [ + { + "id": "test" + }, + "test_mononuc_windows.tsv:md5,a1b4437d0c71d9cfd676de6bda2633f0" + ] + ], + "tetranuc": [ + [ + { + "id": "test" + }, + "test_tetranuc_windows.tsv:md5,e621537175ee8019360f8b6e8f4330b7" + ] + ], + "trinuc": [ + [ + { + "id": "test" + }, + "test_trinuc_windows.tsv:md5,dfb05b758f0474e937e2d6ba6fe46dae" + ] + ], + "versions": [ + "versions.yml:md5,4e46686969aa8883f8092693ebcf7dab" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.4" + }, + "timestamp": "2024-08-29T21:22:58.322943" + } +} \ No newline at end of file diff --git a/modules/nf-core/fastk/fastk/environment.yml b/modules/nf-core/fastk/fastk/environment.yml index efb503e1454..14207ff69ae 100644 --- a/modules/nf-core/fastk/fastk/environment.yml +++ b/modules/nf-core/fastk/fastk/environment.yml @@ -1,7 +1,5 @@ -name: fastk_fastk channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::false_flag # False flag to pass nf-core/lint diff --git a/modules/nf-core/fastk/fastk/tests/main.nf.test b/modules/nf-core/fastk/fastk/tests/main.nf.test index e46d8bce036..856c36a8f8a 100644 --- a/modules/nf-core/fastk/fastk/tests/main.nf.test +++ b/modules/nf-core/fastk/fastk/tests/main.nf.test @@ -16,7 +16,7 @@ nextflow_process { """ input[0] = [ [ id:'test' , single_end: true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] """ } @@ -39,8 +39,8 @@ nextflow_process { input[0] = [ [ id:'test' , single_end: false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] """ @@ -65,7 +65,7 @@ nextflow_process { """ input[0] = [ [ id:'test' , single_end: true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] """ } @@ -90,8 +90,8 @@ nextflow_process { input[0] = [ [ id:'test' , single_end: false ], // meta map [ - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ] """ diff --git a/modules/nf-core/fastk/histex/environment.yml b/modules/nf-core/fastk/histex/environment.yml index aefa45f4bdd..3cebeff05bf 100644 --- a/modules/nf-core/fastk/histex/environment.yml +++ b/modules/nf-core/fastk/histex/environment.yml @@ -1,5 +1,3 @@ -name: fastk_histex channels: - conda-forge - bioconda - - defaults diff --git a/modules/nf-core/fastk/histex/meta.yml b/modules/nf-core/fastk/histex/meta.yml index e7497ffa81b..6fcd6bd2572 100644 --- a/modules/nf-core/fastk/histex/meta.yml +++ b/modules/nf-core/fastk/histex/meta.yml @@ -3,12 +3,13 @@ description: A fast K-mer counter for high-fidelity shotgun datasets keywords: - k-mer - histogram + - fastk tools: - "fastk": description: "A fast K-mer counter for high-fidelity shotgun datasets" homepage: "https://github.com/thegenemyers/FASTK" tool_dev_url: "https://github.com/thegenemyers/FASTK" - licence: "https://github.com/thegenemyers/FASTK/blob/master/LICENSE" + license: ["https://github.com/thegenemyers/FASTK/blob/master/LICENSE"] input: - meta: type: map diff --git a/modules/nf-core/fastk/merge/environment.yml b/modules/nf-core/fastk/merge/environment.yml index 7c09dc1a588..3cebeff05bf 100644 --- a/modules/nf-core/fastk/merge/environment.yml +++ b/modules/nf-core/fastk/merge/environment.yml @@ -1,5 +1,3 @@ -name: fastk_merge channels: - conda-forge - bioconda - - defaults diff --git a/modules/nf-core/fastk/merge/meta.yml b/modules/nf-core/fastk/merge/meta.yml index 60bfa39718c..2a3c7242983 100644 --- a/modules/nf-core/fastk/merge/meta.yml +++ b/modules/nf-core/fastk/merge/meta.yml @@ -10,7 +10,7 @@ tools: description: "A fast K-mer counter for high-fidelity shotgun datasets" homepage: "https://github.com/thegenemyers/FASTK" tool_dev_url: "https://github.com/thegenemyers/FASTK" - licence: "https://github.com/thegenemyers/FASTK/blob/master/LICENSE" + license: ["https://github.com/thegenemyers/FASTK/blob/master/LICENSE"] input: - meta: type: map diff --git a/modules/nf-core/fastme/environment.yml b/modules/nf-core/fastme/environment.yml index 5dd00e12d07..4a69cb341f9 100644 --- a/modules/nf-core/fastme/environment.yml +++ b/modules/nf-core/fastme/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "fastme" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::fastme=2.1.6.1" diff --git a/modules/nf-core/fastp/environment.yml b/modules/nf-core/fastp/environment.yml index 70389e664c2..26d4aca5ddd 100644 --- a/modules/nf-core/fastp/environment.yml +++ b/modules/nf-core/fastp/environment.yml @@ -1,7 +1,5 @@ -name: fastp channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fastp=0.23.4 diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index df60ff61e76..e1b9f565609 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -106,14 +106,16 @@ process FASTP { stub: def prefix = task.ext.prefix ?: "${meta.id}" def is_single_output = task.ext.args?.contains('--interleaved_in') || meta.single_end - def touch_reads = (is_single_output && !discard_trimmed_pass) ? "echo '' | gzip > ${prefix}.fastp.fastq.gz" : "echo '' | gzip > ${prefix}_1.fastp.fastq.gz ; echo '' | gzip > ${prefix}_2.fastp.fastq.gz" + def touch_reads = (discard_trimmed_pass) ? "" : (is_single_output) ? "echo '' | gzip > ${prefix}.fastp.fastq.gz" : "echo '' | gzip > ${prefix}_1.fastp.fastq.gz ; echo '' | gzip > ${prefix}_2.fastp.fastq.gz" def touch_merged = (!is_single_output && save_merged) ? "echo '' | gzip > ${prefix}.merged.fastq.gz" : "" + def touch_fail_fastq = (!save_trimmed_fail) ? "" : meta.single_end ? "echo '' | gzip > ${prefix}.fail.fastq.gz" : "echo '' | gzip > ${prefix}.paired.fail.fastq.gz ; echo '' | gzip > ${prefix}_1.fail.fastq.gz ; echo '' | gzip > ${prefix}_2.fail.fastq.gz" """ $touch_reads + $touch_fail_fastq + $touch_merged touch "${prefix}.fastp.json" touch "${prefix}.fastp.html" touch "${prefix}.fastp.log" - $touch_merged cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test index a659ebd9d10..30dbb8aabf2 100644 --- a/modules/nf-core/fastp/tests/main.nf.test +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -28,28 +28,33 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, { assert snapshot( - process.out.reads, process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") } + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_single_end-stub") { - - options '-stub' + test("test_fastp_paired_end") { when { + process { """ + adapter_fasta = [] + save_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ - [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false @@ -60,29 +65,29 @@ nextflow_process { } then { - assertAll( { assert process.success }, - { assert snapshot(process.out).match() } + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, + { assert snapshot( + process.out.json, + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end") { + test("fastp test_fastp_interleaved") { + config './nextflow.interleaved.config' when { - process { """ - adapter_fasta = [] - save_trimmed_pass = true - save_trimmed_fail = false - save_merged = false - input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false @@ -95,34 +100,31 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("paired end (151 cycles + 151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, + { assert process.out.reads_fail == [] }, + { assert process.out.reads_merged == [] }, { assert snapshot( process.out.reads, process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } + process.out.versions).match() } ) } } - test("test_fastp_paired_end - stub") { - - options '-stub' + test("test_fastp_single_end_trim_fail") { when { process { """ input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false - input[3] = false + input[3] = true input[4] = false """ } @@ -131,24 +133,32 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, + { assert snapshot( + process.out.json, + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("fastp test_fastp_interleaved") { + test("test_fastp_paired_end_trim_fail") { - config './nextflow.interleaved.config' + config './nextflow.save_failed.config' when { process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] ]) input[1] = [] input[2] = false - input[3] = false + input[3] = true input[4] = false """ } @@ -157,35 +167,32 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, { assert snapshot( process.out.reads, + process.out.reads_fail, + process.out.reads_merged, process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("paired end (151 cycles + 151 cycles)") } + process.out.versions).match() } ) } } - test("fastp test_fastp_interleaved - stub") { - - options '-stub' + test("test_fastp_paired_end_merged") { - config './nextflow.interleaved.config' when { - process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false input[3] = false - input[4] = false + input[4] = true """ } } @@ -193,25 +200,32 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("total reads: 75") }, + { assert snapshot( + process.out.json, + process.out.reads, + process.out.reads_fail, + process.out.reads_merged, + process.out.versions).match() }, ) } } - test("test_fastp_single_end_trim_fail") { + test("test_fastp_paired_end_merged_adapterlist") { when { - process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = [] + input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) input[2] = false - input[3] = true - input[4] = false + input[3] = false + input[4] = true """ } } @@ -219,32 +233,30 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("
") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("total bases: 13683") }, { assert snapshot( + process.out.json, process.out.reads, process.out.reads_fail, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end_trim_fail") { + test("test_fastp_single_end_qc_only") { - config './nextflow.save_failed.config' when { process { """ input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = false - input[3] = true + input[2] = true + input[3] = false input[4] = false """ } @@ -253,19 +265,22 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, { assert snapshot( + process.out.json, + process.out.reads, process.out.reads, process.out.reads_fail, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 162") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } + process.out.reads_fail, + process.out.reads_merged, + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end_merged") { + test("test_fastp_paired_end_qc_only") { when { process { @@ -276,9 +291,9 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = false + input[2] = true input[3] = false - input[4] = true + input[4] = false """ } } @@ -286,34 +301,37 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, { assert snapshot( + process.out.json, process.out.reads, + process.out.reads, + process.out.reads_fail, + process.out.reads_fail, process.out.reads_merged, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("total reads: 75") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") } + process.out.reads_merged, + process.out.versions).match() } ) } } - test("test_fastp_paired_end_merged-stub") { + test("test_fastp_single_end - stub") { - options '-stub' + options "-stub" when { + process { """ input[0] = Channel.of([ - [ id:'test', single_end:false ], // meta map - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] input[2] = false input[3] = false - input[4] = true + input[4] = false """ } } @@ -321,25 +339,33 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_paired_end_merged_adapterlist") { + test("test_fastp_paired_end - stub") { + + options "-stub" when { + process { """ + adapter_fasta = [] + save_trimmed_pass = true + save_trimmed_fail = false + save_merged = false + input[0] = Channel.of([ [ id:'test', single_end:false ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) - input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + input[1] = [] input[2] = false input[3] = false - input[4] = true + input[4] = false """ } } @@ -347,29 +373,25 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.reads, - process.out.reads_merged, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads_fail == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("total bases: 13683") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("
") } + { assert snapshot(process.out).match() } ) } } - test("test_fastp_single_end_qc_only") { + test("fastp - stub test_fastp_interleaved") { + + options "-stub" + config './nextflow.interleaved.config' when { process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], - [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + [ id:'test', single_end:true ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = true + input[2] = false input[3] = false input[4] = false """ @@ -379,55 +401,101 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.reads, - process.out.reads_fail, - process.out.reads_merged, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads == [] }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("reads passed filter: 99") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("single end (151 cycles)") }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_single_end_qc_only-stub") { + test("test_fastp_single_end_trim_fail - stub") { - options '-stub' + options "-stub" when { + process { """ input[0] = Channel.of([ - [ id:'test', single_end:true ], + [ id:'test', single_end:true ], // meta map [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] ]) input[1] = [] - input[2] = true - input[3] = false + input[2] = false + input[3] = true input[4] = false """ } } then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_fastp_paired_end_trim_fail - stub") { + options "-stub" + + config './nextflow.save_failed.config' + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true)] + ]) + input[1] = [] + input[2] = false + input[3] = true + input[4] = false + """ + } + } + + then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_paired_end_qc_only") { + test("test_fastp_paired_end_merged - stub") { + + options "-stub" when { - params { - outdir = "$outputDir" + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + input[1] = [] + input[2] = false + input[3] = false + input[4] = true + """ } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_fastp_paired_end_merged_adapterlist - stub") { + + options "-stub" + + when { process { """ input[0] = Channel.of([ @@ -435,6 +503,33 @@ nextflow_process { [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] ]) + input[1] = Channel.of([ file(params.modules_testdata_base_path + 'delete_me/fastp/adapters.fasta', checkIfExists: true) ]) + input[2] = false + input[3] = false + input[4] = true + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_fastp_single_end_qc_only - stub") { + + options "-stub" + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test', single_end:true ], + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] + ]) input[1] = [] input[2] = true input[3] = false @@ -446,24 +541,14 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot( - process.out.reads, - process.out.reads_merged, - process.out.reads_fail, - process.out.json, - process.out.versions).match() }, - { assert process.out.reads == [] }, - { assert process.out.reads_fail == [] }, - { assert process.out.reads_merged == [] }, - { assert path(process.out.log.get(0).get(1)).getText().contains("Q30 bases: 12281(88.3716%)") }, - { assert path(process.out.html.get(0).get(1)).getText().contains("The input has little adapter percentage (~0.000000%), probably it's trimmed before.") }, + { assert snapshot(process.out).match() } ) } } - test("test_fastp_paired_end_qc_only-stub") { + test("test_fastp_paired_end_qc_only - stub") { - options '-stub' + options "-stub" when { process { @@ -484,7 +569,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out).match() }, + { assert snapshot(process.out).match() } ) } } diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap index b609b9a2a77..54be7e45f7c 100644 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -1,24 +1,15 @@ { - "test_fastp_paired_end_qc_only-stub": { + "test_fastp_single_end_qc_only - stub": { "content": [ { "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "1": [ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -27,7 +18,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -36,7 +27,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -54,7 +45,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -63,7 +54,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -72,22 +63,13 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "reads": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ] + ], "reads_fail": [ @@ -104,10 +86,19 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-08T05:42:26.603745039" + "timestamp": "2024-07-05T14:31:10.841098" }, "test_fastp_paired_end": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ], [ [ { @@ -119,6 +110,48 @@ "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" ] ] + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T13:43:28.665779" + }, + "test_fastp_paired_end_merged_adapterlist": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,5914ca3f21ce162123a824e33e8564f6" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + ] + ] + ], + [ + ], [ [ @@ -126,7 +159,95 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" + ] + ], + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T13:44:18.210375" + }, + "test_fastp_single_end_qc_only": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,5cc5f01e449309e0e689ed6f51a2294a" + ] + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + + ], + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T13:44:27.380974" + }, + "test_fastp_paired_end_trim_fail": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", + "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" + ] + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", + "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", + "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + ] + ] + ], + [ + + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" ] ], [ @@ -137,9 +258,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:02:09.747686552" + "timestamp": "2024-07-05T13:43:58.749589" }, - "fastp test_fastp_interleaved - stub": { + "fastp - stub test_fastp_interleaved": { "content": [ { "0": [ @@ -238,97 +359,248 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:03:09.374379128" + "timestamp": "2024-07-05T13:50:00.270029" }, - "test_fastp_paired_end_merged_adapterlist": { + "test_fastp_single_end - stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, + { + "0": [ [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,5914ca3f21ce162123a824e33e8564f6" - ] - ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:04:47.637461379" + "timestamp": "2024-07-05T13:49:42.502789" }, - "test_fastp_single_end_qc_only": { + "test_fastp_paired_end_merged_adapterlist - stub": { "content": [ - [ - - ], - [ - - ], - [ - - ], - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,5cc5f01e449309e0e689ed6f51a2294a" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] + ], + "reads_fail": [ + + ], + "reads_merged": [ + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" ] - ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] + } ], "meta": { "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T20:11:50.885505279" + "timestamp": "2024-07-05T13:54:53.458252" }, - "test_fastp_single_end-stub": { + "test_fastp_paired_end_merged - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ] ], "1": [ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -337,7 +609,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -346,7 +618,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -355,7 +627,13 @@ ], "5": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "6": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -364,7 +642,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -373,7 +651,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -382,7 +660,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -391,16 +669,25 @@ [ { "id": "test", - "single_end": true + "single_end": false }, - "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + [ + "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ] ], "reads_fail": [ ], "reads_merged": [ - + [ + { + "id": "test", + "single_end": false + }, + "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] ], "versions": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -411,9 +698,9 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:01:55.987280865" + "timestamp": "2024-07-05T13:50:27.689379" }, - "test_fastp_paired_end_trim_fail": { + "test_fastp_paired_end_merged": { "content": [ [ [ @@ -421,10 +708,7 @@ "id": "test", "single_end": false }, - [ - "test_1.fastp.fastq.gz:md5,6ff32a64c5188b9a9192be1398c262c7", - "test_2.fastp.fastq.gz:md5,db0cb7c9977e94ac2b4b446ebd017a8a" - ] + "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" ] ], [ @@ -434,11 +718,13 @@ "single_end": false }, [ - "test.paired.fail.fastq.gz:md5,409b687c734cedd7a1fec14d316e1366", - "test_1.fail.fastq.gz:md5,4f273cf3159c13f79e8ffae12f5661f6", - "test_2.fail.fastq.gz:md5,f97b9edefb5649aab661fbc9e71fc995" + "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", + "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" ] ] + ], + [ + ], [ [ @@ -446,7 +732,7 @@ "id": "test", "single_end": false }, - "test.fastp.json:md5,4c3268ddb50ea5b33125984776aa3519" + "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" ] ], [ @@ -457,7 +743,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:03:46.458766801" + "timestamp": "2024-07-05T13:44:08.68476" }, "test_fastp_paired_end - stub": { "content": [ @@ -564,52 +850,19 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-08T05:36:36.446112695" + "timestamp": "2024-07-05T13:49:51.679221" }, - "test_fastp_paired_end_merged": { + "test_fastp_single_end": { "content": [ [ [ { "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,54b726a55e992a869fd3fa778afe1672", - "test_2.fastp.fastq.gz:md5,29d3b33b869f7b63417b8ff07bb128ba" - ] - ] - ], - [ - [ - { - "id": "test", - "single_end": false - }, - "test.merged.fastq.gz:md5,c873bb1ab3fa859dcc47306465e749d5" - ] - ], - [ - [ - { - "id": "test", - "single_end": false + "single_end": true }, - "test.fastp.json:md5,b712fd68ed0322f4bec49ff2a5237fcc" + "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" ] ], - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T13:04:09.964580373" - }, - "test_fastp_single_end": { - "content": [ [ [ { @@ -620,13 +873,10 @@ ] ], [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" - ] + + ], + [ + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -636,28 +886,25 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:01:34.044931225" + "timestamp": "2024-07-05T13:43:18.834322" }, - "test_fastp_paired_end_merged-stub": { + "test_fastp_single_end_trim_fail - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": false + "single_end": true }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "1": [ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -666,7 +913,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -675,22 +922,22 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - - ], - "5": [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] + ], + "5": [ + ], "6": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -699,7 +946,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -708,7 +955,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -717,7 +964,7 @@ [ { "id": "test", - "single_end": false + "single_end": true }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -726,25 +973,22 @@ [ { "id": "test", - "single_end": false + "single_end": true }, - [ - "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", - "test_2.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] + "test.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] ], "reads_fail": [ - - ], - "reads_merged": [ [ { "id": "test", - "single_end": false + "single_end": true }, - "test.merged.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + "test.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" ] + ], + "reads_merged": [ + ], "versions": [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -755,16 +999,16 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-08T05:39:42.022707162" + "timestamp": "2024-07-05T14:05:36.898142" }, - "test_fastp_single_end_qc_only-stub": { + "test_fastp_paired_end_trim_fail - stub": { "content": [ { "0": [ [ { "id": "test", - "single_end": true + "single_end": false }, [ "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", @@ -776,7 +1020,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -785,7 +1029,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -794,13 +1038,23 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "4": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "5": [ @@ -812,7 +1066,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -821,7 +1075,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -830,7 +1084,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -839,7 +1093,7 @@ [ { "id": "test", - "single_end": true + "single_end": false }, [ "test_1.fastp.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", @@ -848,7 +1102,17 @@ ] ], "reads_fail": [ - + [ + { + "id": "test", + "single_end": false + }, + [ + "test.paired.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_1.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940", + "test_2.fail.fastq.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ] ], "reads_merged": [ @@ -862,7 +1126,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:05:31.722431847" + "timestamp": "2024-07-05T14:05:49.212847" }, "fastp test_fastp_interleaved": { "content": [ @@ -892,7 +1156,7 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-07T22:35:04.608948751" + "timestamp": "2024-07-05T13:43:38.910832" }, "test_fastp_single_end_trim_fail": { "content": [ @@ -902,7 +1166,7 @@ "id": "test", "single_end": true }, - "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7" + "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" ] ], [ @@ -911,7 +1175,7 @@ "id": "test", "single_end": true }, - "test.fail.fastq.gz:md5,3e4aaadb66a5b8fc9b881bf39c227abd" + "test.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7" ] ], [ @@ -920,8 +1184,11 @@ "id": "test", "single_end": true }, - "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" + "test.fail.fastq.gz:md5,3e4aaadb66a5b8fc9b881bf39c227abd" ] + ], + [ + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -931,10 +1198,19 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T13:03:23.130471376" + "timestamp": "2024-07-05T13:43:48.22378" }, "test_fastp_paired_end_qc_only": { "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,623064a45912dac6f2b64e3f2e9901df" + ] + ], [ ], @@ -945,13 +1221,13 @@ ], [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,623064a45912dac6f2b64e3f2e9901df" - ] + + ], + [ + + ], + [ + ], [ "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" @@ -961,6 +1237,95 @@ "nf-test": "0.8.4", "nextflow": "24.04.2" }, - "timestamp": "2024-06-10T20:12:14.00927619" + "timestamp": "2024-07-05T13:44:36.334938" + }, + "test_fastp_paired_end_qc_only - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "json": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "reads": [ + + ], + "reads_fail": [ + + ], + "reads_merged": [ + + ], + "versions": [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + } + ], + "meta": { + "nf-test": "0.8.4", + "nextflow": "24.04.2" + }, + "timestamp": "2024-07-05T14:31:27.096468" } } \ No newline at end of file diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml index 1787b38a9aa..691d4c7638f 100644 --- a/modules/nf-core/fastqc/environment.yml +++ b/modules/nf-core/fastqc/environment.yml @@ -1,7 +1,5 @@ -name: fastqc channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index d79f1c862d9..d8989f48122 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -26,7 +26,10 @@ process FASTQC { def rename_to = old_new_pairs*.join(' ').join(' ') def renamed_files = old_new_pairs.collect{ old_name, new_name -> new_name }.join(' ') - def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') + // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) + // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 + // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label + def memory_in_mb = MemoryUnit.of("${task.memory}").toUnit('MB') / task.cpus // FastQC memory value allowed range (100 - 10000) def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 70edae4d994..e9d79a074e8 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -23,17 +23,14 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. - // looks like this:
Mon 2 Oct 2023
test.gz
- // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_single") } + { assert process.success }, + // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. + // looks like this:
Mon 2 Oct 2023
test.gz
+ // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -54,16 +51,14 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_paired") } + { assert process.success }, + { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, + { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, + { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, + { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, + { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -83,13 +78,11 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_interleaved") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -109,13 +102,11 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_bam") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -138,22 +129,20 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, - { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, - { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, - { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, - { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, - { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, - { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, - { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, - { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, - { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_multiple") } + { assert process.success }, + { assert process.out.html[0][1][0] ==~ ".*/test_1_fastqc.html" }, + { assert process.out.html[0][1][1] ==~ ".*/test_2_fastqc.html" }, + { assert process.out.html[0][1][2] ==~ ".*/test_3_fastqc.html" }, + { assert process.out.html[0][1][3] ==~ ".*/test_4_fastqc.html" }, + { assert process.out.zip[0][1][0] ==~ ".*/test_1_fastqc.zip" }, + { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, + { assert process.out.zip[0][1][2] ==~ ".*/test_3_fastqc.zip" }, + { assert process.out.zip[0][1][3] ==~ ".*/test_4_fastqc.zip" }, + { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, + { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } @@ -173,21 +162,18 @@ nextflow_process { then { assertAll ( - { assert process.success }, - - { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, - { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, - { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - - { assert snapshot(process.out.versions).match("fastqc_versions_custom_prefix") } + { assert process.success }, + { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, + { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, + { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match() } ) } } test("sarscov2 single-end [fastq] - stub") { - options "-stub" - + options "-stub" when { process { """ @@ -201,12 +187,123 @@ nextflow_process { then { assertAll ( - { assert process.success }, - { assert snapshot(process.out.html.collect { file(it[1]).getName() } + - process.out.zip.collect { file(it[1]).getName() } + - process.out.versions ).match("fastqc_stub") } + { assert process.success }, + { assert snapshot(process.out).match() } ) } } + test("sarscov2 paired-end [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 interleaved [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_interleaved.fastq.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 paired-end [bam] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 multiple [fastq] - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [id: 'test', single_end: false], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test2_2.fastq.gz', checkIfExists: true) ] + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 custom_prefix - stub") { + + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'mysample', single_end:true ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) + ]) + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index 86f7c311547..d5db3092fb5 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,88 +1,392 @@ { - "fastqc_versions_interleaved": { + "sarscov2 custom_prefix": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:07.293713" + "timestamp": "2024-07-22T11:02:16.374038" }, - "fastqc_stub": { + "sarscov2 single-end [fastq] - stub": { "content": [ - [ - "test.html", - "test.zip", - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": true + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": true + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:24.993809" + }, + "sarscov2 custom_prefix - stub": { + "content": [ + { + "0": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "mysample", + "single_end": true + }, + "mysample.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:31:01.425198" + "timestamp": "2024-07-22T11:03:10.93942" }, - "fastqc_versions_multiple": { + "sarscov2 interleaved [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:55.797907" + "timestamp": "2024-07-22T11:01:42.355718" }, - "fastqc_versions_bam": { + "sarscov2 paired-end [bam]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:40:26.795862" + "timestamp": "2024-07-22T11:01:53.276274" }, - "fastqc_versions_single": { + "sarscov2 multiple [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:27.043675" + "timestamp": "2024-07-22T11:02:05.527626" }, - "fastqc_versions_paired": { + "sarscov2 paired-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:31.188871" + }, + "sarscov2 paired-end [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:34.273566" + }, + "sarscov2 multiple [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:39:47.584191" + "timestamp": "2024-07-22T11:03:02.304411" }, - "fastqc_versions_custom_prefix": { + "sarscov2 single-end [fastq]": { "content": [ [ "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:01:19.095607" + }, + "sarscov2 interleaved [fastq] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" + }, + "timestamp": "2024-07-22T11:02:44.640184" + }, + "sarscov2 paired-end [bam] - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "html": [ + [ + { + "id": "test", + "single_end": false + }, + "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ], + "zip": [ + [ + { + "id": "test", + "single_end": false + }, + "test.zip:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2024-01-31T17:41:14.576531" + "timestamp": "2024-07-22T11:02:53.550742" } } \ No newline at end of file diff --git a/modules/nf-core/fastqscan/environment.yml b/modules/nf-core/fastqscan/environment.yml index 482a73bef8b..a041ef99ec8 100644 --- a/modules/nf-core/fastqscan/environment.yml +++ b/modules/nf-core/fastqscan/environment.yml @@ -1,7 +1,5 @@ -name: fastqscan channels: - conda-forge - bioconda - - defaults dependencies: - bioconda::fastq-scan=0.4.4 diff --git a/modules/nf-core/fastqscan/tests/main.nf.test b/modules/nf-core/fastqscan/tests/main.nf.test index f060a2b8aaf..aa08cdb690b 100644 --- a/modules/nf-core/fastqscan/tests/main.nf.test +++ b/modules/nf-core/fastqscan/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { """ input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true) ] """ } diff --git a/modules/nf-core/fastqscreen/buildfromindex/environment.yml b/modules/nf-core/fastqscreen/buildfromindex/environment.yml index 5ffa9787c72..85764e0d22b 100644 --- a/modules/nf-core/fastqscreen/buildfromindex/environment.yml +++ b/modules/nf-core/fastqscreen/buildfromindex/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "fastqscreen_buildfromindex" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::fastq-screen=0.15.3" diff --git a/modules/nf-core/fastqscreen/fastqscreen/environment.yml b/modules/nf-core/fastqscreen/fastqscreen/environment.yml index 5097f091ac4..c63c61e206a 100644 --- a/modules/nf-core/fastqscreen/fastqscreen/environment.yml +++ b/modules/nf-core/fastqscreen/fastqscreen/environment.yml @@ -1,9 +1,8 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "fastqscreen_fastqscreen" channels: - conda-forge - bioconda - - defaults dependencies: - "bioconda::fastq-screen=0.15.3" + - bioconda::perl-gdgraph=1.54 diff --git a/modules/nf-core/fastqscreen/fastqscreen/main.nf b/modules/nf-core/fastqscreen/fastqscreen/main.nf index 8686f2004de..88c4e5c5c53 100644 --- a/modules/nf-core/fastqscreen/fastqscreen/main.nf +++ b/modules/nf-core/fastqscreen/fastqscreen/main.nf @@ -12,10 +12,11 @@ process FASTQSCREEN_FASTQSCREEN { path database output: - tuple val(meta), path("*.txt") , emit: txt - tuple val(meta), path("*.png") , emit: png - tuple val(meta), path("*.html"), emit: html - path "versions.yml" , emit: versions + tuple val(meta), path("*.txt") , emit: txt + tuple val(meta), path("*.png") , emit: png , optional: true + tuple val(meta), path("*.html") , emit: html + tuple val(meta), path("*.fastq.gz"), emit: fastq, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -30,7 +31,6 @@ process FASTQSCREEN_FASTQSCREEN { --conf ${database}/fastq_screen.conf \\ $reads \\ $args \\ - --outdir . cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastqscreen/fastqscreen/meta.yml b/modules/nf-core/fastqscreen/fastqscreen/meta.yml index 623dacf72a6..e0b0120df64 100644 --- a/modules/nf-core/fastqscreen/fastqscreen/meta.yml +++ b/modules/nf-core/fastqscreen/fastqscreen/meta.yml @@ -33,8 +33,24 @@ input: output: - fastq_screen: type: directory - description: Output fastq_screen file containing alignment statistics + description: Output fastq_screen file containing png, html, txt and no_hits_fastq files pattern: "*.{_fq_screen}" + - png: + type: file + description: PNG file with graphical representation of alignments + pattern: "*.png" + - html: + type: file + description: HTML file containing mapping results as a table and graphical representation + pattern: "*.html" + - txt: + type: file + description: TXT file containing alignment statistics + pattern: "*.txt" + - no_hits_fastq: + type: file + description: FastQ file containing reads that did not align to any database (optional) + pattern: "*_nohits.fastq" - versions: type: file description: File containing software versions diff --git a/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test b/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test index 6d858a4db2d..71230a22404 100644 --- a/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test +++ b/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test @@ -10,6 +10,8 @@ nextflow_process { tag "fastqscreen" tag "fastqscreen/buildfromindex" tag "fastqscreen/fastqscreen" + tag "buildfromindex" + tag "modules_fastqscreen" setup { @@ -52,7 +54,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(process.out.version).match("version") }, + { assert snapshot(process.out.version).match() }, { assert file(process.out.txt.get(0).get(1)).exists() }, { assert file(process.out.png.get(0).get(1)).exists() }, { assert file(process.out.html.get(0).get(1)).exists() } @@ -61,6 +63,34 @@ nextflow_process { } + test("sarscov2 - human - tags") { + config './nextflow.config' + when { + process { + """ + input[0] = [[ id:'test', single_end:false ], + [file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true)] + ] + input[1] = FASTQSCREEN_BUILDFROMINDEX.out.database + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.version, + process.out.txt, + process.out.fastq, + path(process.out.html.get(0).get(1)).readLines()[0..10], + path(process.out.png.get(0).get(1)).exists() + ).match() } + ) + } + + } + test("sarscov2 - human - stub") { options "-stub" diff --git a/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test.snap b/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test.snap index b2450191939..2afffdea941 100644 --- a/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test.snap +++ b/modules/nf-core/fastqscreen/fastqscreen/tests/main.nf.test.snap @@ -1,11 +1,56 @@ { - "version": { + "sarscov2 - human": { "content": null, "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.0", + "nextflow": "24.04.4" }, - "timestamp": "2024-04-30T14:22:56.541922683" + "timestamp": "2024-08-31T05:42:29.972454812" + }, + "sarscov2 - human - tags": { + "content": [ + null, + [ + [ + { + "id": "test", + "single_end": false + }, + "test_1_screen.txt:md5,b0b0ea58bc26ebaa4d573a85e7898f25" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.tagged.fastq.gz:md5,f742b162c43ce28f80b89608d5c47f3d", + "test_1.tagged_filter.fastq.gz:md5,28527a76bb0bb3fce0ee76afe01e90aa" + ] + ] + ], + [ + "", + "", + "", + "", + "", + "", + "\t", + "\tFastQ Screen Processing Report - test_1.fastq.gz", + "\t