From 35f315e91172842b1558816757efafbc83616a1c Mon Sep 17 00:00:00 2001 From: CI Date: Sat, 26 Oct 2024 13:31:11 +0000 Subject: [PATCH] Build branch main with version main (52f44f5) Build pipeline: viash-hub.biobox.main-xrs9m Source commit: https://github.com/viash-hub/biobox/commit/52f44f5049606ac655154cf54ed53fa76b49896f Source message: Add agat sp add introns (#104) * add help * add config * add run script * add test data and expected output + script to fetch them * add tests * update changelog * Update src/agat/agat_sp_add_introns/config.vsh.yaml Co-authored-by: Dries Schaumont <5946712+DriesSchaumont@users.noreply.github.com> * Update src/agat/agat_sp_add_introns/config.vsh.yaml Co-authored-by: Dries Schaumont <5946712+DriesSchaumont@users.noreply.github.com> * Update src/agat/agat_sp_add_introns/config.vsh.yaml Co-authored-by: Dries Schaumont <5946712+DriesSchaumont@users.noreply.github.com> * # create temporary directory and clean up on exit * add set -e to test * fix create temporary directory * fix create temporary directory * add set -eo pipefail to test * add set -eo pipefail to script * remove file added by mistake * update --config description * cleanup changelog * cleanup changelog * minor changes to config * reduce test data size --------- Co-authored-by: Robrecht Cannoodt Co-authored-by: Dries Schaumont <5946712+DriesSchaumont@users.noreply.github.com> Co-authored-by: Emma Rousseau --- CHANGELOG.md | 12 +- src/agat/agat_sp_add_introns/config.vsh.yaml | 64 + src/agat/agat_sp_add_introns/help.txt | 62 + src/agat/agat_sp_add_introns/script.sh | 11 + src/agat/agat_sp_add_introns/test.sh | 34 + .../test_data/1_truncated.gff | 106 + .../agat_sp_add_introns/test_data/script.sh | 12 + .../test_data/test_output.gff | 125 + src/agat/agat_sp_statistics/config.vsh.yaml | 93 + src/agat/agat_sp_statistics/help.txt | 60 + src/agat/agat_sp_statistics/script.sh | 26 + src/agat/agat_sp_statistics/test.sh | 65 + src/agat/agat_sp_statistics/test_data/1.gff | 78 + .../agat_sp_statistics/test_data/script.sh | 14 + .../test_data/stats_out.txt | 93 + .../agat_convert_bed2gff/.config.vsh.yaml | 6 +- .../agat_convert_bed2gff/agat_convert_bed2gff | 4 +- .../agat_convert_embl2gff/.config.vsh.yaml | 6 +- .../agat_convert_embl2gff | 4 +- .../agat_convert_genscan2gff/.config.vsh.yaml | 6 +- .../agat_convert_genscan2gff | 4 +- .../agat_convert_sp_gff2gtf/.config.vsh.yaml | 6 +- .../agat_convert_sp_gff2gtf | 4 +- .../agat_convert_sp_gff2tsv/.config.vsh.yaml | 6 +- .../agat_convert_sp_gff2tsv | 4 +- .../agat_convert_sp_gxf2gxf/.config.vsh.yaml | 6 +- .../agat_convert_sp_gxf2gxf | 4 +- .../agat/agat_sp_add_introns/.config.vsh.yaml | 213 + .../agat_sp_add_introns/agat_sp_add_introns | 1166 ++++++ .../agat/agat_sp_statistics/.config.vsh.yaml | 258 ++ .../agat_sp_statistics/agat_sp_statistics | 1269 ++++++ target/executable/arriba/.config.vsh.yaml | 6 +- target/executable/arriba/arriba | 4 +- .../bbmap/bbmap_bbsplit/.config.vsh.yaml | 6 +- .../bbmap/bbmap_bbsplit/bbmap_bbsplit | 4 +- .../bcftools_annotate/.config.vsh.yaml | 6 +- .../bcftools_annotate/bcftools_annotate | 4 +- .../bcftools/bcftools_concat/.config.vsh.yaml | 6 +- .../bcftools/bcftools_concat/bcftools_concat | 4 +- .../bcftools/bcftools_norm/.config.vsh.yaml | 6 +- .../bcftools/bcftools_norm/bcftools_norm | 4 +- .../bcftools/bcftools_sort/.config.vsh.yaml | 6 +- .../bcftools/bcftools_sort/bcftools_sort | 4 +- .../bcftools/bcftools_stats/.config.vsh.yaml | 6 +- .../bcftools/bcftools_stats/bcftools_stats | 4 +- .../executable/bcl_convert/.config.vsh.yaml | 6 +- target/executable/bcl_convert/bcl_convert | 4 +- .../.config.vsh.yaml | 6 +- .../bd_rhapsody_make_reference | 4 +- .../.config.vsh.yaml | 6 +- .../bd_rhapsody_sequence_analysis | 4 +- .../bedtools_bamtofastq/.config.vsh.yaml | 6 +- .../bedtools_bamtofastq/bedtools_bamtofastq | 4 +- .../bedtools_bed12tobed6/.config.vsh.yaml | 6 +- .../bedtools_bed12tobed6/bedtools_bed12tobed6 | 4 +- .../bedtools_bedtobam/.config.vsh.yaml | 6 +- .../bedtools_bedtobam/bedtools_bedtobam | 4 +- .../bedtools_genomecov/.config.vsh.yaml | 6 +- .../bedtools_genomecov/bedtools_genomecov | 4 +- .../bedtools_getfasta/.config.vsh.yaml | 6 +- .../bedtools_getfasta/bedtools_getfasta | 4 +- .../bedtools_groupby/.config.vsh.yaml | 6 +- .../bedtools_groupby/bedtools_groupby | 4 +- .../bedtools_intersect/.config.vsh.yaml | 6 +- .../bedtools_intersect/bedtools_intersect | 4 +- .../bedtools/bedtools_links/.config.vsh.yaml | 6 +- .../bedtools/bedtools_links/bedtools_links | 4 +- .../bedtools/bedtools_merge/.config.vsh.yaml | 6 +- .../bedtools/bedtools_merge/bedtools_merge | 4 +- .../bedtools/bedtools_sort/.config.vsh.yaml | 6 +- .../bedtools/bedtools_sort/bedtools_sort | 4 +- .../busco_download_datasets/.config.vsh.yaml | 6 +- .../busco_download_datasets | 4 +- .../busco_list_datasets/.config.vsh.yaml | 6 +- .../busco_list_datasets/busco_list_datasets | 4 +- .../busco/busco_run/.config.vsh.yaml | 6 +- target/executable/busco/busco_run/busco_run | 4 +- target/executable/cutadapt/.config.vsh.yaml | 6 +- target/executable/cutadapt/cutadapt | 4 +- target/executable/falco/.config.vsh.yaml | 6 +- target/executable/falco/falco | 4 +- target/executable/fastp/.config.vsh.yaml | 6 +- target/executable/fastp/fastp | 4 +- target/executable/fastqc/.config.vsh.yaml | 6 +- target/executable/fastqc/fastqc | 4 +- .../executable/featurecounts/.config.vsh.yaml | 6 +- target/executable/featurecounts/featurecounts | 4 +- .../executable/fq_subsample/.config.vsh.yaml | 6 +- target/executable/fq_subsample/fq_subsample | 4 +- target/executable/gffread/.config.vsh.yaml | 6 +- target/executable/gffread/gffread | 4 +- .../kallisto/kallisto_index/.config.vsh.yaml | 6 +- .../kallisto/kallisto_index/kallisto_index | 4 +- .../kallisto/kallisto_quant/.config.vsh.yaml | 6 +- .../kallisto/kallisto_quant/kallisto_quant | 4 +- .../lofreq/lofreq_call/.config.vsh.yaml | 6 +- .../executable/lofreq/lofreq_call/lofreq_call | 4 +- .../lofreq/lofreq_indelqual/.config.vsh.yaml | 6 +- .../lofreq/lofreq_indelqual/lofreq_indelqual | 4 +- target/executable/multiqc/.config.vsh.yaml | 6 +- target/executable/multiqc/multiqc | 4 +- target/executable/nanoplot/.config.vsh.yaml | 6 +- target/executable/nanoplot/nanoplot | 4 +- target/executable/pear/.config.vsh.yaml | 6 +- target/executable/pear/pear | 4 +- .../qualimap/qualimap_rnaseq/.config.vsh.yaml | 6 +- .../qualimap/qualimap_rnaseq/qualimap_rnaseq | 4 +- .../.config.vsh.yaml | 6 +- .../rsem_calculate_expression | 4 +- .../rsem_prepare_reference/.config.vsh.yaml | 6 +- .../rsem_prepare_reference | 4 +- .../salmon/salmon_index/.config.vsh.yaml | 6 +- .../salmon/salmon_index/salmon_index | 4 +- .../salmon/salmon_quant/.config.vsh.yaml | 6 +- .../salmon/salmon_quant/salmon_quant | 4 +- .../samtools_collate/.config.vsh.yaml | 6 +- .../samtools_collate/samtools_collate | 4 +- .../samtools/samtools_faidx/.config.vsh.yaml | 6 +- .../samtools/samtools_faidx/samtools_faidx | 4 +- .../samtools/samtools_fasta/.config.vsh.yaml | 6 +- .../samtools/samtools_fasta/samtools_fasta | 4 +- .../samtools/samtools_fastq/.config.vsh.yaml | 6 +- .../samtools/samtools_fastq/samtools_fastq | 4 +- .../samtools_flagstat/.config.vsh.yaml | 6 +- .../samtools_flagstat/samtools_flagstat | 4 +- .../samtools_idxstats/.config.vsh.yaml | 6 +- .../samtools_idxstats/samtools_idxstats | 4 +- .../samtools/samtools_index/.config.vsh.yaml | 6 +- .../samtools/samtools_index/samtools_index | 4 +- .../samtools/samtools_sort/.config.vsh.yaml | 6 +- .../samtools/samtools_sort/samtools_sort | 4 +- .../samtools/samtools_stats/.config.vsh.yaml | 6 +- .../samtools/samtools_stats/samtools_stats | 4 +- .../samtools/samtools_view/.config.vsh.yaml | 6 +- .../samtools/samtools_view/samtools_view | 4 +- .../seqtk/seqtk_sample/.config.vsh.yaml | 6 +- .../seqtk/seqtk_sample/seqtk_sample | 4 +- .../seqtk/seqtk_subseq/.config.vsh.yaml | 6 +- .../seqtk/seqtk_subseq/seqtk_subseq | 4 +- target/executable/snpeff/.config.vsh.yaml | 6 +- target/executable/snpeff/snpeff | 4 +- target/executable/sortmerna/.config.vsh.yaml | 6 +- target/executable/sortmerna/sortmerna | 4 +- .../star/star_align_reads/.config.vsh.yaml | 6 +- .../star/star_align_reads/star_align_reads | 4 +- .../star_genome_generate/.config.vsh.yaml | 6 +- .../star_genome_generate/star_genome_generate | 4 +- target/executable/trimgalore/.config.vsh.yaml | 6 +- target/executable/trimgalore/trimgalore | 4 +- .../umi_tools_dedup/.config.vsh.yaml | 6 +- .../umi_tools/umi_tools_dedup/umi_tools_dedup | 4 +- .../umi_tools_extract/.config.vsh.yaml | 6 +- .../umi_tools_extract/umi_tools_extract | 4 +- .../umi_tools_prepareforrsem/.config.vsh.yaml | 6 +- .../umi_tools_prepareforrsem | 4 +- .../agat_convert_bed2gff/.config.vsh.yaml | 6 +- .../agat/agat_convert_bed2gff/main.nf | 6 +- .../agat_convert_embl2gff/.config.vsh.yaml | 6 +- .../agat/agat_convert_embl2gff/main.nf | 6 +- .../agat_convert_genscan2gff/.config.vsh.yaml | 6 +- .../agat/agat_convert_genscan2gff/main.nf | 6 +- .../agat_convert_sp_gff2gtf/.config.vsh.yaml | 6 +- .../agat/agat_convert_sp_gff2gtf/main.nf | 6 +- .../agat_convert_sp_gff2tsv/.config.vsh.yaml | 6 +- .../agat/agat_convert_sp_gff2tsv/main.nf | 6 +- .../agat_convert_sp_gxf2gxf/.config.vsh.yaml | 6 +- .../agat/agat_convert_sp_gxf2gxf/main.nf | 6 +- .../agat/agat_sp_add_introns/.config.vsh.yaml | 213 + .../nextflow/agat/agat_sp_add_introns/main.nf | 3607 ++++++++++++++++ .../agat/agat_sp_add_introns/nextflow.config | 126 + .../agat_sp_add_introns/nextflow_schema.json | 119 + .../agat/agat_sp_statistics/.config.vsh.yaml | 258 ++ .../nextflow/agat/agat_sp_statistics/main.nf | 3671 +++++++++++++++++ .../agat/agat_sp_statistics/nextflow.config | 126 + .../agat_sp_statistics/nextflow_schema.json | 160 + target/nextflow/arriba/.config.vsh.yaml | 6 +- target/nextflow/arriba/main.nf | 6 +- .../bbmap/bbmap_bbsplit/.config.vsh.yaml | 6 +- target/nextflow/bbmap/bbmap_bbsplit/main.nf | 6 +- .../bcftools_annotate/.config.vsh.yaml | 6 +- .../bcftools/bcftools_annotate/main.nf | 6 +- .../bcftools/bcftools_concat/.config.vsh.yaml | 6 +- .../nextflow/bcftools/bcftools_concat/main.nf | 6 +- .../bcftools/bcftools_norm/.config.vsh.yaml | 6 +- .../nextflow/bcftools/bcftools_norm/main.nf | 6 +- .../bcftools/bcftools_sort/.config.vsh.yaml | 6 +- .../nextflow/bcftools/bcftools_sort/main.nf | 6 +- .../bcftools/bcftools_stats/.config.vsh.yaml | 6 +- .../nextflow/bcftools/bcftools_stats/main.nf | 6 +- target/nextflow/bcl_convert/.config.vsh.yaml | 6 +- target/nextflow/bcl_convert/main.nf | 6 +- .../.config.vsh.yaml | 6 +- .../bd_rhapsody_make_reference/main.nf | 6 +- .../.config.vsh.yaml | 6 +- .../bd_rhapsody_sequence_analysis/main.nf | 6 +- .../bedtools_bamtofastq/.config.vsh.yaml | 6 +- .../bedtools/bedtools_bamtofastq/main.nf | 6 +- .../bedtools_bed12tobed6/.config.vsh.yaml | 6 +- .../bedtools/bedtools_bed12tobed6/main.nf | 6 +- .../bedtools_bedtobam/.config.vsh.yaml | 6 +- .../bedtools/bedtools_bedtobam/main.nf | 6 +- .../bedtools_genomecov/.config.vsh.yaml | 6 +- .../bedtools/bedtools_genomecov/main.nf | 6 +- .../bedtools_getfasta/.config.vsh.yaml | 6 +- .../bedtools/bedtools_getfasta/main.nf | 6 +- .../bedtools_groupby/.config.vsh.yaml | 6 +- .../bedtools/bedtools_groupby/main.nf | 6 +- .../bedtools_intersect/.config.vsh.yaml | 6 +- .../bedtools/bedtools_intersect/main.nf | 6 +- .../bedtools/bedtools_links/.config.vsh.yaml | 6 +- .../nextflow/bedtools/bedtools_links/main.nf | 6 +- .../bedtools/bedtools_merge/.config.vsh.yaml | 6 +- .../nextflow/bedtools/bedtools_merge/main.nf | 6 +- .../bedtools/bedtools_sort/.config.vsh.yaml | 6 +- .../nextflow/bedtools/bedtools_sort/main.nf | 6 +- .../busco_download_datasets/.config.vsh.yaml | 6 +- .../busco/busco_download_datasets/main.nf | 6 +- .../busco_list_datasets/.config.vsh.yaml | 6 +- .../busco/busco_list_datasets/main.nf | 6 +- .../nextflow/busco/busco_run/.config.vsh.yaml | 6 +- target/nextflow/busco/busco_run/main.nf | 6 +- target/nextflow/cutadapt/.config.vsh.yaml | 6 +- target/nextflow/cutadapt/main.nf | 6 +- target/nextflow/falco/.config.vsh.yaml | 6 +- target/nextflow/falco/main.nf | 6 +- target/nextflow/fastp/.config.vsh.yaml | 6 +- target/nextflow/fastp/main.nf | 6 +- target/nextflow/fastqc/.config.vsh.yaml | 6 +- target/nextflow/fastqc/main.nf | 6 +- .../nextflow/featurecounts/.config.vsh.yaml | 6 +- target/nextflow/featurecounts/main.nf | 6 +- target/nextflow/fq_subsample/.config.vsh.yaml | 6 +- target/nextflow/fq_subsample/main.nf | 6 +- target/nextflow/gffread/.config.vsh.yaml | 6 +- target/nextflow/gffread/main.nf | 6 +- .../kallisto/kallisto_index/.config.vsh.yaml | 6 +- .../nextflow/kallisto/kallisto_index/main.nf | 6 +- .../kallisto/kallisto_quant/.config.vsh.yaml | 6 +- .../nextflow/kallisto/kallisto_quant/main.nf | 6 +- .../lofreq/lofreq_call/.config.vsh.yaml | 6 +- target/nextflow/lofreq/lofreq_call/main.nf | 6 +- .../lofreq/lofreq_indelqual/.config.vsh.yaml | 6 +- .../nextflow/lofreq/lofreq_indelqual/main.nf | 6 +- target/nextflow/multiqc/.config.vsh.yaml | 6 +- target/nextflow/multiqc/main.nf | 6 +- target/nextflow/nanoplot/.config.vsh.yaml | 6 +- target/nextflow/nanoplot/main.nf | 6 +- target/nextflow/pear/.config.vsh.yaml | 6 +- target/nextflow/pear/main.nf | 6 +- .../qualimap/qualimap_rnaseq/.config.vsh.yaml | 6 +- .../nextflow/qualimap/qualimap_rnaseq/main.nf | 6 +- .../.config.vsh.yaml | 6 +- .../rsem/rsem_calculate_expression/main.nf | 6 +- .../rsem_prepare_reference/.config.vsh.yaml | 6 +- .../rsem/rsem_prepare_reference/main.nf | 6 +- .../salmon/salmon_index/.config.vsh.yaml | 6 +- target/nextflow/salmon/salmon_index/main.nf | 6 +- .../salmon/salmon_quant/.config.vsh.yaml | 6 +- target/nextflow/salmon/salmon_quant/main.nf | 6 +- .../samtools_collate/.config.vsh.yaml | 6 +- .../samtools/samtools_collate/main.nf | 6 +- .../samtools/samtools_faidx/.config.vsh.yaml | 6 +- .../nextflow/samtools/samtools_faidx/main.nf | 6 +- .../samtools/samtools_fasta/.config.vsh.yaml | 6 +- .../nextflow/samtools/samtools_fasta/main.nf | 6 +- .../samtools/samtools_fastq/.config.vsh.yaml | 6 +- .../nextflow/samtools/samtools_fastq/main.nf | 6 +- .../samtools_flagstat/.config.vsh.yaml | 6 +- .../samtools/samtools_flagstat/main.nf | 6 +- .../samtools_idxstats/.config.vsh.yaml | 6 +- .../samtools/samtools_idxstats/main.nf | 6 +- .../samtools/samtools_index/.config.vsh.yaml | 6 +- .../nextflow/samtools/samtools_index/main.nf | 6 +- .../samtools/samtools_sort/.config.vsh.yaml | 6 +- .../nextflow/samtools/samtools_sort/main.nf | 6 +- .../samtools/samtools_stats/.config.vsh.yaml | 6 +- .../nextflow/samtools/samtools_stats/main.nf | 6 +- .../samtools/samtools_view/.config.vsh.yaml | 6 +- .../nextflow/samtools/samtools_view/main.nf | 6 +- .../seqtk/seqtk_sample/.config.vsh.yaml | 6 +- target/nextflow/seqtk/seqtk_sample/main.nf | 6 +- .../seqtk/seqtk_subseq/.config.vsh.yaml | 6 +- target/nextflow/seqtk/seqtk_subseq/main.nf | 6 +- target/nextflow/snpeff/.config.vsh.yaml | 6 +- target/nextflow/snpeff/main.nf | 6 +- target/nextflow/sortmerna/.config.vsh.yaml | 6 +- target/nextflow/sortmerna/main.nf | 6 +- .../star/star_align_reads/.config.vsh.yaml | 6 +- target/nextflow/star/star_align_reads/main.nf | 6 +- .../star_genome_generate/.config.vsh.yaml | 6 +- .../star/star_genome_generate/main.nf | 6 +- target/nextflow/trimgalore/.config.vsh.yaml | 6 +- target/nextflow/trimgalore/main.nf | 6 +- .../umi_tools_dedup/.config.vsh.yaml | 6 +- .../umi_tools/umi_tools_dedup/main.nf | 6 +- .../umi_tools_extract/.config.vsh.yaml | 6 +- .../umi_tools/umi_tools_extract/main.nf | 6 +- .../umi_tools_prepareforrsem/.config.vsh.yaml | 6 +- .../umi_tools_prepareforrsem/main.nf | 6 +- 299 files changed, 12788 insertions(+), 749 deletions(-) create mode 100644 src/agat/agat_sp_add_introns/config.vsh.yaml create mode 100644 src/agat/agat_sp_add_introns/help.txt create mode 100644 src/agat/agat_sp_add_introns/script.sh create mode 100644 src/agat/agat_sp_add_introns/test.sh create mode 100644 src/agat/agat_sp_add_introns/test_data/1_truncated.gff create mode 100755 src/agat/agat_sp_add_introns/test_data/script.sh create mode 100644 src/agat/agat_sp_add_introns/test_data/test_output.gff create mode 100644 src/agat/agat_sp_statistics/config.vsh.yaml create mode 100644 src/agat/agat_sp_statistics/help.txt create mode 100644 src/agat/agat_sp_statistics/script.sh create mode 100644 src/agat/agat_sp_statistics/test.sh create mode 100644 src/agat/agat_sp_statistics/test_data/1.gff create mode 100755 src/agat/agat_sp_statistics/test_data/script.sh create mode 100644 src/agat/agat_sp_statistics/test_data/stats_out.txt create mode 100644 target/executable/agat/agat_sp_add_introns/.config.vsh.yaml create mode 100755 target/executable/agat/agat_sp_add_introns/agat_sp_add_introns create mode 100644 target/executable/agat/agat_sp_statistics/.config.vsh.yaml create mode 100755 target/executable/agat/agat_sp_statistics/agat_sp_statistics create mode 100644 target/nextflow/agat/agat_sp_add_introns/.config.vsh.yaml create mode 100644 target/nextflow/agat/agat_sp_add_introns/main.nf create mode 100644 target/nextflow/agat/agat_sp_add_introns/nextflow.config create mode 100644 target/nextflow/agat/agat_sp_add_introns/nextflow_schema.json create mode 100644 target/nextflow/agat/agat_sp_statistics/.config.vsh.yaml create mode 100644 target/nextflow/agat/agat_sp_statistics/main.nf create mode 100644 target/nextflow/agat/agat_sp_statistics/nextflow.config create mode 100644 target/nextflow/agat/agat_sp_statistics/nextflow_schema.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e59f784..a8cfc83a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ * `agat`: - `agat/agat_convert_genscan2gff`: convert a genscan file into a GFF file (PR #100). + - `agat_sp_statistics`: provides exhaustive statistics of a gft/gff file (PR #107). + * `bd_rhapsody/bd_rhapsody_sequence_analysis`: BD Rhapsody Sequence Analysis CWL pipeline (PR #96). @@ -11,6 +13,10 @@ * `nanoplot`: Plotting tool for long read sequencing data and alignments (PR #95). +* `agat`: + - `agat/agat_sp_add_introns`: add intron features to gtf/gff file without intron features (PR #104). + + ## BREAKING CHANGES * `falco`: Fix a typo in the `--reverse_complement` argument (PR #157). @@ -49,12 +55,16 @@ based on a provided sequence IDs or region coordinates file (PR #85). * `agat`: + - `agat_convert_sp_gff2gtf`: convert any GTF/GFF file into a proper GTF file (PR #76). + - `agat_convert_bed2gff`: convert bed file to gff format (PR #97). + - `agat_convert_embl2gff`: convert an EMBL file into GFF format (PR #99). - `agat/agat_convert_sp_gff2gtf`: convert any GTF/GFF file into a proper GTF file (PR #76). - `agat/agat_convert_bed2gff`: convert bed file to gff format (PR #97). - `agat/agat_convert_embl2gff`: convert an EMBL file into GFF format (PR #99). - `agat/agat_convert_sp_gff2tsv`: convert gtf/gff file into tabulated file (PR #102). - `agat/agat_convert_sp_gxf2gxf`: fixes and/or standardizes any GTF/GFF file into full sorted GTF/GFF file (PR #103). + * `bedtools`: - `bedtools/bedtools_intersect`: Allows one to screen for overlaps between two sets of genomic features (PR #94). - `bedtools/bedtools_sort`: Sorts a feature file (bed/gff/vcf) by chromosome and other criteria (PR #98). @@ -88,9 +98,9 @@ - `kallisto_index`: Create a kallisto index (PR #149). - `kallisto_quant`: Quantifying abundances of transcripts from RNA-Seq data, or more generally of target sequences using high-throughput sequencing reads (PR #152). - * `trimgalore`: Quality and adapter trimming for fastq files (PR #117). + ## MINOR CHANGES * `busco` components: update BUSCO to `5.7.1` (PR #72). diff --git a/src/agat/agat_sp_add_introns/config.vsh.yaml b/src/agat/agat_sp_add_introns/config.vsh.yaml new file mode 100644 index 00000000..06ec8474 --- /dev/null +++ b/src/agat/agat_sp_add_introns/config.vsh.yaml @@ -0,0 +1,64 @@ +name: agat_sp_add_introns +namespace: agat +description: | + Add intronic elements to a gtf/gff file without intron features. +keywords: [gene annotations, GTF conversion] +links: + homepage: https://github.com/NBISweden/AGAT + documentation: https://agat.readthedocs.io/en/latest/tools/agat_sp_add_introns.html + issue_tracker: https://github.com/NBISweden/AGAT/issues + repository: https://github.com/NBISweden/AGAT +references: + doi: 10.5281/zenodo.3552717 +license: GPL-3.0 +requirements: + commands: [agat] +authors: + - __merge__: /src/_authors/leila_paquay.yaml + roles: [ author, maintainer ] + +argument_groups: + - name: Inputs + arguments: + - name: --gff + alternatives: [-f, --ref, --reffile] + description: Input GTF/GFF file. + type: file + required: true + example: input.gff + - name: Outputs + arguments: + - name: --output + alternatives: [-o, --out, --outfile, --gtf] + description: Output GFF3 file. + type: file + direction: output + required: true + example: output.gff + - name: Arguments + arguments: + - name: --config + alternatives: [-c] + description: | + AGAT config file. By default AGAT takes the original agat_config.yaml shipped with AGAT. The `--config` option + gives you the possibility to use your own AGAT config file (located elsewhere or named differently). + type: file + example: custom_agat_config.yaml +resources: + - type: bash_script + path: script.sh +test_resources: + - type: bash_script + path: test.sh + - type: file + path: test_data +engines: + - type: docker + image: quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0 + setup: + - type: docker + run: | + agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.txt +runners: + - type: executable + - type: nextflow \ No newline at end of file diff --git a/src/agat/agat_sp_add_introns/help.txt b/src/agat/agat_sp_add_introns/help.txt new file mode 100644 index 00000000..48dc1ace --- /dev/null +++ b/src/agat/agat_sp_add_introns/help.txt @@ -0,0 +1,62 @@ +```sh +agat_sp_add_introns.pl --help +``` + + ------------------------------------------------------------------------------ +| Another GFF Analysis Toolkit (AGAT) - Version: v1.4.0 | +| https://github.com/NBISweden/AGAT | +| National Bioinformatics Infrastructure Sweden (NBIS) - www.nbis.se | + ------------------------------------------------------------------------------ + + +Name: + agat_sp_add_introns.pl + +Description: + The script aims to add intron features to gtf/gff file without intron + features. + +Usage: + agat_sp_add_introns.pl --gff infile --out outFile + agat_sp_add_introns.pl --help + +Options: + --gff, -f, --ref or -reffile + Input GTF/GFF file. + + --out, --output or -o + Output GFF3 file. + + -c or --config + String - 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). + + --help or -h + Display this helpful text. + +Feedback: + Did you find a bug?: + Do not hesitate to report bugs to help us keep track of the bugs and + their resolution. Please use the GitHub issue tracking system available + at this address: + + https://github.com/NBISweden/AGAT/issues + + Ensure that the bug was not already reported by searching under Issues. + If you're unable to find an (open) issue addressing the problem, open a new one. + Try as much as possible to include in the issue when relevant: + - a clear description, + - as much relevant information as possible, + - the command used, + - a data sample, + - an explanation of the expected behaviour that is not occurring. + + Do you want to contribute?: + You are very welcome, visit this address for the Contributing + guidelines: + https://github.com/NBISweden/AGAT/blob/master/CONTRIBUTING.md \ No newline at end of file diff --git a/src/agat/agat_sp_add_introns/script.sh b/src/agat/agat_sp_add_introns/script.sh new file mode 100644 index 00000000..95cacee4 --- /dev/null +++ b/src/agat/agat_sp_add_introns/script.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -eo pipefail + +## VIASH START +## VIASH END + +agat_sp_add_introns.pl \ + -f "$par_gff" \ + -o "$par_output" \ + ${par_config:+--config "${par_config}"} diff --git a/src/agat/agat_sp_add_introns/test.sh b/src/agat/agat_sp_add_introns/test.sh new file mode 100644 index 00000000..d7144d91 --- /dev/null +++ b/src/agat/agat_sp_add_introns/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -eo pipefail + +## VIASH START +## VIASH END + +test_dir="${meta_resources_dir}/test_data" + +# create temporary directory and clean up on exit +TMPDIR=$(mktemp -d "$meta_temp_dir/$meta_functionality_name-XXXXXX") +function clean_up { + [[ -d "$TMPDIR" ]] && rm -rf "$TMPDIR" +} +trap clean_up EXIT + +echo "> Run $meta_name with test data" +"$meta_executable" \ + --gff "$test_dir/1_truncated.gff" \ + --output "$TMPDIR/output.gff" + +echo ">> Checking output" +[ ! -f "$TMPDIR/output.gff" ] && echo "Output file output.gff does not exist" && exit 1 + +echo ">> Check if output is empty" +[ ! -s "$TMPDIR/output.gff" ] && echo "Output file output.gff is empty" && exit 1 + +echo ">> Check if output matches expected output" +diff "$TMPDIR/output.gff" "$test_dir/test_output.gff" +if [ $? -ne 0 ]; then + echo "Output file output.gff does not match expected output" + exit 1 +fi +echo "> Test successful" \ No newline at end of file diff --git a/src/agat/agat_sp_add_introns/test_data/1_truncated.gff b/src/agat/agat_sp_add_introns/test_data/1_truncated.gff new file mode 100644 index 00000000..a86a94d9 --- /dev/null +++ b/src/agat/agat_sp_add_introns/test_data/1_truncated.gff @@ -0,0 +1,106 @@ +##gff-version 3 +##sequence-region 1 1 43270923 +#!genome-build RAP-DB IRGSP-1.0 +#!genome-version IRGSP-1.0 +#!genome-date 2015-10 +#!genome-build-accession GCA_001433935.1 +1 RAP-DB chromosome 1 43270923 . . . ID=chromosome:1;Alias=Chr1,AP014957.1,NC_029256.1 +### +1 irgsp repeat_region 2000 2100 . + . ID=fakeRepeat1 +### +1 irgsp gene 2983 10815 . + . ID=gene:Os01g0100100;biotype=protein_coding;description=RabGAP/TBC domain containing protein. (Os01t0100100-01);gene_id=Os01g0100100;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 2983 10815 . + . ID=transcript:Os01t0100100-01;Parent=gene:Os01g0100100;biotype=protein_coding;transcript_id=Os01t0100100-01 +1 irgsp exon 2983 3268 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon1;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon1;rank=1 +1 irgsp five_prime_UTR 2983 3268 . + . Parent=transcript:Os01t0100100-01 +1 irgsp five_prime_UTR 3354 3448 . + . Parent=transcript:Os01t0100100-01 +1 irgsp exon 3354 3616 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=-1;exon_id=Os01t0100100-01.exon2;rank=2 +1 irgsp CDS 3449 3616 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 4357 4455 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon3;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100100-01.exon3;rank=3 +1 irgsp CDS 4357 4455 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 5457 5560 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon4;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100100-01.exon4;rank=4 +1 irgsp CDS 5457 5560 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 7136 7944 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon5;constitutive=1;ensembl_end_phase=1;ensembl_phase=2;exon_id=Os01t0100100-01.exon5;rank=5 +1 irgsp CDS 7136 7944 . + 1 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 8028 8150 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon6;constitutive=1;ensembl_end_phase=1;ensembl_phase=1;exon_id=Os01t0100100-01.exon6;rank=6 +1 irgsp CDS 8028 8150 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 8232 8320 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon7;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100100-01.exon7;rank=7 +1 irgsp CDS 8232 8320 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 8408 8608 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon8;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100100-01.exon8;rank=8 +1 irgsp CDS 8408 8608 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 9210 9615 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon9;constitutive=1;ensembl_end_phase=1;ensembl_phase=0;exon_id=Os01t0100100-01.exon9;rank=9 +1 irgsp CDS 9210 9615 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 10102 10187 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon10;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100100-01.exon10;rank=10 +1 irgsp CDS 10102 10187 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 10274 10297 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 10274 10430 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon11;constitutive=1;ensembl_end_phase=-1;ensembl_phase=0;exon_id=Os01t0100100-01.exon11;rank=11 +1 irgsp three_prime_UTR 10298 10430 . + . Parent=transcript:Os01t0100100-01 +1 irgsp exon 10504 10815 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp three_prime_UTR 10504 10815 . + . Parent=transcript:Os01t0100100-01 +### +1 irgsp gene 11218 12435 . + . ID=gene:Os01g0100200;biotype=protein_coding;description=Conserved hypothetical protein. (Os01t0100200-01);gene_id=Os01g0100200;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 11218 12435 . + . ID=transcript:Os01t0100200-01;Parent=gene:Os01g0100200;biotype=protein_coding;transcript_id=Os01t0100200-01 +1 irgsp five_prime_UTR 11218 11797 . + . Parent=transcript:Os01t0100200-01 +1 irgsp exon 11218 12060 . + . Parent=transcript:Os01t0100200-01;Name=Os01t0100200-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100200-01.exon1;rank=1 +1 irgsp CDS 11798 12060 . + 0 ID=CDS:Os01t0100200-01;Parent=transcript:Os01t0100200-01;protein_id=Os01t0100200-01 +1 irgsp CDS 12152 12317 . + 1 ID=CDS:Os01t0100200-01;Parent=transcript:Os01t0100200-01;protein_id=Os01t0100200-01 +1 irgsp exon 12152 12435 . + . Parent=transcript:Os01t0100200-01;Name=Os01t0100200-01.exon2;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100200-01.exon2;rank=2 +1 irgsp three_prime_UTR 12318 12435 . + . Parent=transcript:Os01t0100200-01 +### +1 irgsp gene 11372 12284 . - . ID=gene:Os01g0100300;biotype=protein_coding;description=Cytochrome P450 domain containing protein. (Os01t0100300-00);gene_id=Os01g0100300;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 11372 12284 . - . ID=transcript:Os01t0100300-00;Parent=gene:Os01g0100300;biotype=protein_coding;transcript_id=Os01t0100300-00 +1 irgsp exon 11372 12042 . - . Parent=transcript:Os01t0100300-00;Name=Os01t0100300-00.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100300-00.exon2;rank=2 +1 irgsp CDS 11372 12042 . - 2 ID=CDS:Os01t0100300-00;Parent=transcript:Os01t0100300-00;protein_id=Os01t0100300-00 +1 irgsp exon 12146 12284 . - . Parent=transcript:Os01t0100300-00;Name=Os01t0100300-00.exon1;constitutive=1;ensembl_end_phase=1;ensembl_phase=0;exon_id=Os01t0100300-00.exon1;rank=1 +1 irgsp CDS 12146 12284 . - 0 ID=CDS:Os01t0100300-00;Parent=transcript:Os01t0100300-00;protein_id=Os01t0100300-00 +### +1 irgsp gene 12721 15685 . + . ID=gene:Os01g0100400;biotype=protein_coding;description=Similar to Pectinesterase-like protein. (Os01t0100400-01);gene_id=Os01g0100400;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 12721 15685 . + . ID=transcript:Os01t0100400-01;Parent=gene:Os01g0100400;biotype=protein_coding;transcript_id=Os01t0100400-01 +1 irgsp five_prime_UTR 12721 12773 . + . Parent=transcript:Os01t0100400-01 +1 irgsp exon 12721 13813 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100400-01.exon1;rank=1 +1 irgsp CDS 12774 13813 . + 0 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 13906 14271 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=2;exon_id=Os01t0100400-01.exon2;rank=2 +1 irgsp CDS 13906 14271 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 14359 14437 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon3;constitutive=1;ensembl_end_phase=0;ensembl_phase=2;exon_id=Os01t0100400-01.exon3;rank=3 +1 irgsp CDS 14359 14437 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 14969 15171 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon4;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100400-01.exon4;rank=4 +1 irgsp CDS 14969 15171 . + 0 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp CDS 15266 15359 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 15266 15685 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon5;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100400-01.exon5;rank=5 +1 irgsp three_prime_UTR 15360 15685 . + . Parent=transcript:Os01t0100400-01 +### +1 irgsp gene 12808 13978 . - . ID=gene:Os01g0100466;biotype=protein_coding;description=Hypothetical protein. (Os01t0100466-00);gene_id=Os01g0100466;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 12808 13978 . - . ID=transcript:Os01t0100466-00;Parent=gene:Os01g0100466;biotype=protein_coding;transcript_id=Os01t0100466-00 +1 irgsp three_prime_UTR 12808 12868 . - . Parent=transcript:Os01t0100466-00 +1 irgsp exon 12808 13782 . - . Parent=transcript:Os01t0100466-00;Name=Os01t0100466-00.exon2;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100466-00.exon2;rank=2 +1 irgsp CDS 12869 13102 . - 0 ID=CDS:Os01t0100466-00;Parent=transcript:Os01t0100466-00;protein_id=Os01t0100466-00 +1 irgsp five_prime_UTR 13103 13782 . - . Parent=transcript:Os01t0100466-00 +1 irgsp exon 13880 13978 . - . Parent=transcript:Os01t0100466-00;Name=Os01t0100466-00.exon1;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100466-00.exon1;rank=1 +1 irgsp five_prime_UTR 13880 13978 . - . Parent=transcript:Os01t0100466-00 +### +1 irgsp gene 16399 20144 . + . ID=gene:Os01g0100500;biotype=protein_coding;description=Immunoglobulin-like domain containing protein. (Os01t0100500-01);gene_id=Os01g0100500;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 16399 20144 . + . ID=transcript:Os01t0100500-01;Parent=gene:Os01g0100500;biotype=protein_coding;transcript_id=Os01t0100500-01 +1 irgsp five_prime_UTR 16399 16598 . + . Parent=transcript:Os01t0100500-01 +1 irgsp exon 16399 16976 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon1;constitutive=1;ensembl_end_phase=0;ensembl_phase=-1;exon_id=Os01t0100500-01.exon1;rank=1 +1 irgsp CDS 16599 16976 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp exon 17383 17474 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100500-01.exon2;rank=2 +1 irgsp CDS 17383 17474 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp exon 17558 18258 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon3;constitutive=1;ensembl_end_phase=1;ensembl_phase=2;exon_id=Os01t0100500-01.exon3;rank=3 +1 irgsp CDS 17558 18258 . + 1 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp exon 18501 18571 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon4;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100500-01.exon4;rank=4 +1 irgsp CDS 18501 18571 . + 2 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp exon 18968 19057 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon5;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100500-01.exon5;rank=5 +1 irgsp CDS 18968 19057 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp exon 19142 19321 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon6;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100500-01.exon6;rank=6 +1 irgsp CDS 19142 19321 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp CDS 19531 19593 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp exon 19531 19629 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon7;constitutive=1;ensembl_end_phase=-1;ensembl_phase=0;exon_id=Os01t0100500-01.exon7;rank=7 +1 irgsp three_prime_UTR 19594 19629 . + . Parent=transcript:Os01t0100500-01 +1 irgsp exon 19734 20144 . + . Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp three_prime_UTR 19734 20144 . + . Parent=transcript:Os01t0100500-01 +### +1 irgsp gene 22841 26892 . + . ID=gene:Os01g0100600;biotype=protein_coding;description=Single-stranded nucleic acid binding R3H domain containing protein. (Os01t0100600-01);gene_id=Os01g0100600;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 22841 26892 . + . ID=transcript:Os01t0100600-01;Parent=gene:Os01g0100600;biotype=protein_coding;transcript_id=Os01t0100600-01 +1 irgsp five_prime_UTR 22841 23231 . + . Parent=transcript:Os01t0100600-01 +1 irgsp exon 22841 23281 . + . Parent=transcript:Os01t0100600-01;Name=Os01t0100600-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100600-01.exon1;rank=1 +1 irgsp CDS 23232 23281 . + 0 ID=CDS:Os01t0100600-01;Parent=transcript:Os01t0100600-01;protein_id=Os01t0100600-01 +1 irgsp exon 23572 23847 . + . Parent=transcript:Os01t0100600-01;Name=Os01t0100600-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=2;exon_id=Os01t0100600-01.exon2;rank=2 diff --git a/src/agat/agat_sp_add_introns/test_data/script.sh b/src/agat/agat_sp_add_introns/test_data/script.sh new file mode 100755 index 00000000..e5880652 --- /dev/null +++ b/src/agat/agat_sp_add_introns/test_data/script.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# clone repo +if [ ! -d /tmp/agat_source ]; then + git clone --depth 1 --single-branch --branch master https://github.com/NBISweden/AGAT /tmp/agat_source +fi + +# copy test data +cp -r /tmp/agat_source/t/scripts_output/in/1.gff src/agat/agat_sp_add_introns/test_data +cp -r /tmp/agat_source/t/scripts_output/out/agat_sp_add_introns_1.gff src/agat/agat_sp_add_introns/test_data + +head -n 106 "src/agat/agat_sp_add_introns/test_data/1.gff" > "src/agat/agat_sp_add_introns/test_data/1_truncated.gff" \ No newline at end of file diff --git a/src/agat/agat_sp_add_introns/test_data/test_output.gff b/src/agat/agat_sp_add_introns/test_data/test_output.gff new file mode 100644 index 00000000..607907f6 --- /dev/null +++ b/src/agat/agat_sp_add_introns/test_data/test_output.gff @@ -0,0 +1,125 @@ +##gff-version 3 +##sequence-region 1 1 43270923 +#!genome-build RAP-DB IRGSP-1.0 +#!genome-version IRGSP-1.0 +#!genome-date 2015-10 +#!genome-build-accession GCA_001433935.1 +1 RAP-DB chromosome 1 43270923 . . . ID=chromosome:1;Alias=Chr1,AP014957.1,NC_029256.1 +1 irgsp repeat_region 2000 2100 . + . ID=fakeRepeat1 +1 irgsp gene 2983 10815 . + . ID=gene:Os01g0100100;biotype=protein_coding;description=RabGAP/TBC domain containing protein. (Os01t0100100-01);gene_id=Os01g0100100;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 2983 10815 . + . ID=transcript:Os01t0100100-01;Parent=gene:Os01g0100100;biotype=protein_coding;transcript_id=Os01t0100100-01 +1 irgsp exon 2983 3268 . + . ID=Os01t0100100-01.exon1;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon1;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon1;rank=1 +1 irgsp exon 3354 3616 . + . ID=Os01t0100100-01.exon2;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=-1;exon_id=Os01t0100100-01.exon2;rank=2 +1 irgsp exon 4357 4455 . + . ID=Os01t0100100-01.exon3;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon3;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100100-01.exon3;rank=3 +1 irgsp exon 5457 5560 . + . ID=Os01t0100100-01.exon4;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon4;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100100-01.exon4;rank=4 +1 irgsp exon 7136 7944 . + . ID=Os01t0100100-01.exon5;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon5;constitutive=1;ensembl_end_phase=1;ensembl_phase=2;exon_id=Os01t0100100-01.exon5;rank=5 +1 irgsp exon 8028 8150 . + . ID=Os01t0100100-01.exon6;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon6;constitutive=1;ensembl_end_phase=1;ensembl_phase=1;exon_id=Os01t0100100-01.exon6;rank=6 +1 irgsp exon 8232 8320 . + . ID=Os01t0100100-01.exon7;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon7;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100100-01.exon7;rank=7 +1 irgsp exon 8408 8608 . + . ID=Os01t0100100-01.exon8;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon8;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100100-01.exon8;rank=8 +1 irgsp exon 9210 9615 . + . ID=Os01t0100100-01.exon9;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon9;constitutive=1;ensembl_end_phase=1;ensembl_phase=0;exon_id=Os01t0100100-01.exon9;rank=9 +1 irgsp exon 10102 10187 . + . ID=Os01t0100100-01.exon10;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon10;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100100-01.exon10;rank=10 +1 irgsp exon 10274 10430 . + . ID=Os01t0100100-01.exon11;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon11;constitutive=1;ensembl_end_phase=-1;ensembl_phase=0;exon_id=Os01t0100100-01.exon11;rank=11 +1 irgsp exon 10504 10815 . + . ID=Os01t0100100-01.exon12;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp CDS 3449 3616 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 4357 4455 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 5457 5560 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 7136 7944 . + 1 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 8028 8150 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 8232 8320 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 8408 8608 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 9210 9615 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 10102 10187 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 10274 10297 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp five_prime_UTR 2983 3268 . + . ID=agat-five_prime_utr-1;Parent=transcript:Os01t0100100-01 +1 irgsp five_prime_UTR 3354 3448 . + . ID=agat-five_prime_utr-2;Parent=transcript:Os01t0100100-01 +1 irgsp intron 3269 3353 . + . ID=intron_added-1;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 3617 4356 . + . ID=intron_added-2;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 4456 5456 . + . ID=intron_added-3;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 5561 7135 . + . ID=intron_added-4;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 7945 8027 . + . ID=intron_added-5;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 8151 8231 . + . ID=intron_added-6;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 8321 8407 . + . ID=intron_added-7;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 8609 9209 . + . ID=intron_added-8;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 9616 10101 . + . ID=intron_added-9;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 10188 10273 . + . ID=intron_added-10;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp intron 10431 10503 . + . ID=intron_added-11;Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp three_prime_UTR 10298 10430 . + . ID=agat-three_prime_utr-1;Parent=transcript:Os01t0100100-01 +1 irgsp three_prime_UTR 10504 10815 . + . ID=agat-three_prime_utr-2;Parent=transcript:Os01t0100100-01 +1 irgsp gene 11218 12435 . + . ID=gene:Os01g0100200;biotype=protein_coding;description=Conserved hypothetical protein. (Os01t0100200-01);gene_id=Os01g0100200;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 11218 12435 . + . ID=transcript:Os01t0100200-01;Parent=gene:Os01g0100200;biotype=protein_coding;transcript_id=Os01t0100200-01 +1 irgsp exon 11218 12060 . + . ID=Os01t0100200-01.exon1;Parent=transcript:Os01t0100200-01;Name=Os01t0100200-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100200-01.exon1;rank=1 +1 irgsp exon 12152 12435 . + . ID=Os01t0100200-01.exon2;Parent=transcript:Os01t0100200-01;Name=Os01t0100200-01.exon2;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100200-01.exon2;rank=2 +1 irgsp CDS 11798 12060 . + 0 ID=CDS:Os01t0100200-01;Parent=transcript:Os01t0100200-01;protein_id=Os01t0100200-01 +1 irgsp CDS 12152 12317 . + 1 ID=CDS:Os01t0100200-01;Parent=transcript:Os01t0100200-01;protein_id=Os01t0100200-01 +1 irgsp five_prime_UTR 11218 11797 . + . ID=agat-five_prime_utr-3;Parent=transcript:Os01t0100200-01 +1 irgsp intron 12061 12151 . + . ID=intron_added-12;Parent=transcript:Os01t0100200-01;Name=Os01t0100200-01.exon2;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100200-01.exon2;rank=2 +1 irgsp three_prime_UTR 12318 12435 . + . ID=agat-three_prime_utr-3;Parent=transcript:Os01t0100200-01 +1 irgsp gene 11372 12284 . - . ID=gene:Os01g0100300;biotype=protein_coding;description=Cytochrome P450 domain containing protein. (Os01t0100300-00);gene_id=Os01g0100300;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 11372 12284 . - . ID=transcript:Os01t0100300-00;Parent=gene:Os01g0100300;biotype=protein_coding;transcript_id=Os01t0100300-00 +1 irgsp exon 11372 12042 . - . ID=Os01t0100300-00.exon2;Parent=transcript:Os01t0100300-00;Name=Os01t0100300-00.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100300-00.exon2;rank=2 +1 irgsp exon 12146 12284 . - . ID=Os01t0100300-00.exon1;Parent=transcript:Os01t0100300-00;Name=Os01t0100300-00.exon1;constitutive=1;ensembl_end_phase=1;ensembl_phase=0;exon_id=Os01t0100300-00.exon1;rank=1 +1 irgsp CDS 11372 12042 . - 2 ID=CDS:Os01t0100300-00;Parent=transcript:Os01t0100300-00;protein_id=Os01t0100300-00 +1 irgsp CDS 12146 12284 . - 0 ID=CDS:Os01t0100300-00;Parent=transcript:Os01t0100300-00;protein_id=Os01t0100300-00 +1 irgsp intron 12043 12145 . - . ID=intron_added-13;Parent=transcript:Os01t0100300-00;Name=Os01t0100300-00.exon1;constitutive=1;ensembl_end_phase=1;ensembl_phase=0;exon_id=Os01t0100300-00.exon1;rank=1 +1 irgsp gene 12721 15685 . + . ID=gene:Os01g0100400;biotype=protein_coding;description=Similar to Pectinesterase-like protein. (Os01t0100400-01);gene_id=Os01g0100400;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 12721 15685 . + . ID=transcript:Os01t0100400-01;Parent=gene:Os01g0100400;biotype=protein_coding;transcript_id=Os01t0100400-01 +1 irgsp exon 12721 13813 . + . ID=Os01t0100400-01.exon1;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100400-01.exon1;rank=1 +1 irgsp exon 13906 14271 . + . ID=Os01t0100400-01.exon2;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=2;exon_id=Os01t0100400-01.exon2;rank=2 +1 irgsp exon 14359 14437 . + . ID=Os01t0100400-01.exon3;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon3;constitutive=1;ensembl_end_phase=0;ensembl_phase=2;exon_id=Os01t0100400-01.exon3;rank=3 +1 irgsp exon 14969 15171 . + . ID=Os01t0100400-01.exon4;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon4;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100400-01.exon4;rank=4 +1 irgsp exon 15266 15685 . + . ID=Os01t0100400-01.exon5;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon5;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100400-01.exon5;rank=5 +1 irgsp CDS 12774 13813 . + 0 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp CDS 13906 14271 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp CDS 14359 14437 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp CDS 14969 15171 . + 0 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp CDS 15266 15359 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp five_prime_UTR 12721 12773 . + . ID=agat-five_prime_utr-4;Parent=transcript:Os01t0100400-01 +1 irgsp intron 13814 13905 . + . ID=intron_added-14;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon5;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100400-01.exon5;rank=5 +1 irgsp intron 14272 14358 . + . ID=intron_added-15;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon5;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100400-01.exon5;rank=5 +1 irgsp intron 14438 14968 . + . ID=intron_added-16;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon5;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100400-01.exon5;rank=5 +1 irgsp intron 15172 15265 . + . ID=intron_added-17;Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon5;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100400-01.exon5;rank=5 +1 irgsp three_prime_UTR 15360 15685 . + . ID=agat-three_prime_utr-4;Parent=transcript:Os01t0100400-01 +1 irgsp gene 12808 13978 . - . ID=gene:Os01g0100466;biotype=protein_coding;description=Hypothetical protein. (Os01t0100466-00);gene_id=Os01g0100466;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 12808 13978 . - . ID=transcript:Os01t0100466-00;Parent=gene:Os01g0100466;biotype=protein_coding;transcript_id=Os01t0100466-00 +1 irgsp exon 12808 13782 . - . ID=Os01t0100466-00.exon2;Parent=transcript:Os01t0100466-00;Name=Os01t0100466-00.exon2;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100466-00.exon2;rank=2 +1 irgsp exon 13880 13978 . - . ID=Os01t0100466-00.exon1;Parent=transcript:Os01t0100466-00;Name=Os01t0100466-00.exon1;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100466-00.exon1;rank=1 +1 irgsp CDS 12869 13102 . - 0 ID=CDS:Os01t0100466-00;Parent=transcript:Os01t0100466-00;protein_id=Os01t0100466-00 +1 irgsp five_prime_UTR 13103 13782 . - . ID=agat-five_prime_utr-5;Parent=transcript:Os01t0100466-00 +1 irgsp five_prime_UTR 13880 13978 . - . ID=agat-five_prime_utr-6;Parent=transcript:Os01t0100466-00 +1 irgsp intron 13783 13879 . - . ID=intron_added-18;Parent=transcript:Os01t0100466-00;Name=Os01t0100466-00.exon1;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100466-00.exon1;rank=1 +1 irgsp three_prime_UTR 12808 12868 . - . ID=agat-three_prime_utr-5;Parent=transcript:Os01t0100466-00 +1 irgsp gene 16399 20144 . + . ID=gene:Os01g0100500;biotype=protein_coding;description=Immunoglobulin-like domain containing protein. (Os01t0100500-01);gene_id=Os01g0100500;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 16399 20144 . + . ID=transcript:Os01t0100500-01;Parent=gene:Os01g0100500;biotype=protein_coding;transcript_id=Os01t0100500-01 +1 irgsp exon 16399 16976 . + . ID=Os01t0100500-01.exon1;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon1;constitutive=1;ensembl_end_phase=0;ensembl_phase=-1;exon_id=Os01t0100500-01.exon1;rank=1 +1 irgsp exon 17383 17474 . + . ID=Os01t0100500-01.exon2;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100500-01.exon2;rank=2 +1 irgsp exon 17558 18258 . + . ID=Os01t0100500-01.exon3;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon3;constitutive=1;ensembl_end_phase=1;ensembl_phase=2;exon_id=Os01t0100500-01.exon3;rank=3 +1 irgsp exon 18501 18571 . + . ID=Os01t0100500-01.exon4;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon4;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100500-01.exon4;rank=4 +1 irgsp exon 18968 19057 . + . ID=Os01t0100500-01.exon5;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon5;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100500-01.exon5;rank=5 +1 irgsp exon 19142 19321 . + . ID=Os01t0100500-01.exon6;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon6;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100500-01.exon6;rank=6 +1 irgsp exon 19531 19629 . + . ID=Os01t0100500-01.exon7;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon7;constitutive=1;ensembl_end_phase=-1;ensembl_phase=0;exon_id=Os01t0100500-01.exon7;rank=7 +1 irgsp exon 19734 20144 . + . ID=Os01t0100500-01.exon8;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp CDS 16599 16976 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp CDS 17383 17474 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp CDS 17558 18258 . + 1 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp CDS 18501 18571 . + 2 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp CDS 18968 19057 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp CDS 19142 19321 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp CDS 19531 19593 . + 0 ID=CDS:Os01t0100500-01;Parent=transcript:Os01t0100500-01;protein_id=Os01t0100500-01 +1 irgsp five_prime_UTR 16399 16598 . + . ID=agat-five_prime_utr-7;Parent=transcript:Os01t0100500-01 +1 irgsp intron 16977 17382 . + . ID=intron_added-19;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp intron 17475 17557 . + . ID=intron_added-20;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp intron 18259 18500 . + . ID=intron_added-21;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp intron 18572 18967 . + . ID=intron_added-22;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp intron 19058 19141 . + . ID=intron_added-23;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp intron 19322 19530 . + . ID=intron_added-24;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp intron 19630 19733 . + . ID=intron_added-25;Parent=transcript:Os01t0100500-01;Name=Os01t0100500-01.exon8;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100500-01.exon8;rank=8 +1 irgsp three_prime_UTR 19594 19629 . + . ID=agat-three_prime_utr-6;Parent=transcript:Os01t0100500-01 +1 irgsp three_prime_UTR 19734 20144 . + . ID=agat-three_prime_utr-7;Parent=transcript:Os01t0100500-01 +1 irgsp gene 22841 26892 . + . ID=gene:Os01g0100600;biotype=protein_coding;description=Single-stranded nucleic acid binding R3H domain containing protein. (Os01t0100600-01);gene_id=Os01g0100600;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 22841 26892 . + . ID=transcript:Os01t0100600-01;Parent=gene:Os01g0100600;biotype=protein_coding;transcript_id=Os01t0100600-01 +1 irgsp exon 22841 23281 . + . ID=Os01t0100600-01.exon1;Parent=transcript:Os01t0100600-01;Name=Os01t0100600-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100600-01.exon1;rank=1 +1 irgsp exon 23572 26892 . + . ID=Os01t0100600-01.exon2;Parent=transcript:Os01t0100600-01;Name=Os01t0100600-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=2;exon_id=Os01t0100600-01.exon2;rank=2 +1 irgsp CDS 23232 23281 . + 0 ID=CDS:Os01t0100600-01;Parent=transcript:Os01t0100600-01;protein_id=Os01t0100600-01 +1 irgsp five_prime_UTR 22841 23231 . + . ID=agat-five_prime_utr-8;Parent=transcript:Os01t0100600-01 +1 irgsp intron 23282 23571 . + . ID=intron_added-26;Parent=transcript:Os01t0100600-01;Name=Os01t0100600-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=2;exon_id=Os01t0100600-01.exon2;rank=2 +1 AGAT three_prime_UTR 23572 26892 . + . ID=agat-three_prime_utr-8;Parent=transcript:Os01t0100600-01;Name=Os01t0100600-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100600-01.exon1;rank=1 diff --git a/src/agat/agat_sp_statistics/config.vsh.yaml b/src/agat/agat_sp_statistics/config.vsh.yaml new file mode 100644 index 00000000..6890bb84 --- /dev/null +++ b/src/agat/agat_sp_statistics/config.vsh.yaml @@ -0,0 +1,93 @@ +name: agat_sp_statistics +namespace: agat +description: | + The script provides exhaustive statistics of a gft/gff file. + + If you have isoforms in your file, even if correct, some values calculated + might sounds incoherent: e.g. total length mRNA can be superior than the + genome size. Because all isoforms length is added... It is why by + default we always compute the statistics twice when there are isoforms, + once with the isoforms, once without (In that case we keep the longest + isoform per locus). +keywords: [gene annotations, statistics, gff] +links: + homepage: https://github.com/NBISweden/AGAT + documentation: https://agat.readthedocs.io/en/latest/tools/agat_sp_statistics.html + issue_tracker: https://github.com/NBISweden/AGAT/issues + repository: https://github.com/NBISweden/AGAT +references: + doi: 10.5281/zenodo.3552717 +license: GPL-3.0 +requirements: + - commands: [agat] +authors: + - __merge__: /src/_authors/leila_paquay.yaml + roles: [ author, maintainer ] + +argument_groups: + - name: Inputs + arguments: + - name: --gff + alternatives: [-i] + description: Input GTF/GFF file. + type: file + required: true + example: input.gff + - name: --gs_fasta + description: | + Genome size directly from a fasta file to compute more statistics. + type: file + example: genome.fasta + - name: Outputs + arguments: + - name: --output + alternatives: [-o] + description: | + The file where the results will be written. + type: file + direction: output + required: true + example: output.txt + - name: Options + arguments: + - name: --plot + alternatives: [-p, -d] + description: | + When this option is used, an histogram of distribution of the features will be printed in pdf files. + type: boolean_true + - name: --gs_size + description: | + Genome size in nucleotides to compute more statistics. + type: integer + example: 1000000 + - name: --verbose + alternatives: [-v] + description: | + Verbose option. To modify verbosity. Default is 1. 0 is quiet, 2 and 3 are increasing verbosity. + type: integer + example: 1 + - name: --config + alternatives: [-c] + description: | + AGAT config file. By default AGAT takes the original agat_config.yaml shipped with AGAT. The `--config` + option gives you the possibility to use your own AGAT config file (located elsewhere or named differently). + type: file + example: custom_agat_config.yaml +resources: + - type: bash_script + path: script.sh +test_resources: + - type: bash_script + path: test.sh + - type: file + path: test_data +engines: + - type: docker + image: quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0 + setup: + - type: docker + run: | + agat --version | sed 's/.*v\.//; s/\s.*//' | sed 's/^/AGAT: /' > /var/software_versions.txt +runners: + - type: executable + - type: nextflow \ No newline at end of file diff --git a/src/agat/agat_sp_statistics/help.txt b/src/agat/agat_sp_statistics/help.txt new file mode 100644 index 00000000..fa6ef24d --- /dev/null +++ b/src/agat/agat_sp_statistics/help.txt @@ -0,0 +1,60 @@ +```sh +agat_sp_statistics.pl --help +``` + + ------------------------------------------------------------------------------ +| Another GFF Analysis Toolkit (AGAT) - Version: v1.4.0 | +| https://github.com/NBISweden/AGAT | +| National Bioinformatics Infrastructure Sweden (NBIS) - www.nbis.se | + ------------------------------------------------------------------------------ + + +Name: + agat_sp_statistics.pl + +Description: + The script provides exhaustive statistics of a gft/gff file. /!\ If you + have isoforms in your file, even if correct, some values calculated + might sounds incoherent: e.g. total length mRNA can be superior than the + genome size. Because all isoforms length is added... It is why by + default we always compute the statistics twice when there are isoforms, + once with the isoforms, once without (In that case we keep the longest + isoform per locus). + +Usage: + agat_sp_statistics.pl --gff file.gff [ -o outfile ] + agat_sp_statistics.pl --help + +Options: + --gff or -i + Input GTF/GFF file. + + --gs, -f or -g + This option inform about the genome size in oder to compute more + statistics. You can give the size in Nucleotide or directly the + fasta file. + + -d or -p + When this option is used, an histogram of distribution of the + features will be printed in pdf files. (d means distribution, p + means plot). + + -v or --verbose + Verbose option. To modify verbosity. Default is 1. 0 is quiet, 2 + and 3 are increasing verbosity. + + --output or -o + File where will be written the result. If no output file is + specified, the output will be written to STDOUT. + + -c or --config + String - 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). + + -h or --help + Display this helpful text. \ No newline at end of file diff --git a/src/agat/agat_sp_statistics/script.sh b/src/agat/agat_sp_statistics/script.sh new file mode 100644 index 00000000..9865c4b2 --- /dev/null +++ b/src/agat/agat_sp_statistics/script.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +set -eo pipefail + +## VIASH START +## VIASH END + +# unset flags +[[ "$par_d" == "false" ]] && unset par_d + +if [[ -n "$par_gs_size" && -n "$par_gs_fasta" ]]; then + echo "[error] Please provide only one of the following options to set genome size: --gs_size or --gs_fasta" + exit 1 +fi + +# run agat_sp_statistics +agat_sp_statistics.pl \ + -i "$par_gff" \ + -o "$par_output" \ + ${par_plot:+-d} \ + ${par_gs_size:+--gs "${par_gs_size}"} \ + ${par_gs_fasta:+--gs "${par_gs_fasta}"} \ + ${par_verbose:+--verbose "${par_verbose}"} \ + ${par_config:+--config "${par_config}"} + + diff --git a/src/agat/agat_sp_statistics/test.sh b/src/agat/agat_sp_statistics/test.sh new file mode 100644 index 00000000..35f42ee0 --- /dev/null +++ b/src/agat/agat_sp_statistics/test.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -eo pipefail + +test_dir="${meta_resources_dir}/test_data" + +# create temporary directory and clean up on exit +TMPDIR=$(mktemp -d "$meta_temp_dir/$meta_functionality_name-XXXXXX") +function clean_up { + [[ -d "$TMPDIR" ]] && rm -rf "$TMPDIR" +} +trap clean_up EXIT + +cd "$TMPDIR" + +mkdir test1 +pushd test1 + +echo "> Run $meta_name with test data and --emblmygff3" +"$meta_executable" \ + --gff "$test_dir/1.gff" \ + --output "output.txt" \ + +echo ">> Checking output" +[ ! -f "output.txt" ] && echo "Output file output.txt does not exist" && exit 1 + +echo ">> Check if output is empty" +[ ! -s "output.txt" ] && echo "Output file output.txt is empty" && exit 1 + +echo ">> Check if output matches expected output" +diff "output.txt" "$test_dir/stats_out.txt" +if [ $? -ne 0 ]; then + echo "Output file output.txt does not match expected output" + exit 1 +fi + +echo "> Test successful" + + +popd +mkdir test2 +pushd test2 + +cat < genome.fasta +>sample_sequence +ATGCGTACGTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC +EOF + +echo "> Run $meta_name with both gs_size and gs_fasta" +error_message=$("$meta_executable" \ + --gff "$test_dir/1.gff" \ + --output "output.txt" \ + --gs_size "1000000" \ + --gs_fasta "genome.fasta" 2>&1 || true) + +expected_error="[error] Please provide only one of the following options to set genome size: --gs_size or --gs_fasta" +if [[ "$error_message" != *"$expected_error"* ]]; then + echo "Output error message: $error_message does not match expected error message: $expected_error" + exit 1 +fi + +echo "> Error test successful" + +echo "---- All tests succeeded! ----" +exit 0 \ No newline at end of file diff --git a/src/agat/agat_sp_statistics/test_data/1.gff b/src/agat/agat_sp_statistics/test_data/1.gff new file mode 100644 index 00000000..775d14fd --- /dev/null +++ b/src/agat/agat_sp_statistics/test_data/1.gff @@ -0,0 +1,78 @@ +##gff-version 3 +##sequence-region 1 1 43270923 +#!genome-build RAP-DB IRGSP-1.0 +#!genome-version IRGSP-1.0 +#!genome-date 2015-10 +#!genome-build-accession GCA_001433935.1 +1 RAP-DB chromosome 1 43270923 . . . ID=chromosome:1;Alias=Chr1,AP014957.1,NC_029256.1 +### +1 irgsp repeat_region 2000 2100 . + . ID=fakeRepeat1 +### +1 irgsp gene 2983 10815 . + . ID=gene:Os01g0100100;biotype=protein_coding;description=RabGAP/TBC domain containing protein. (Os01t0100100-01);gene_id=Os01g0100100;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 2983 10815 . + . ID=transcript:Os01t0100100-01;Parent=gene:Os01g0100100;biotype=protein_coding;transcript_id=Os01t0100100-01 +1 irgsp exon 2983 3268 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon1;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon1;rank=1 +1 irgsp five_prime_UTR 2983 3268 . + . Parent=transcript:Os01t0100100-01 +1 irgsp five_prime_UTR 3354 3448 . + . Parent=transcript:Os01t0100100-01 +1 irgsp exon 3354 3616 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=-1;exon_id=Os01t0100100-01.exon2;rank=2 +1 irgsp CDS 3449 3616 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 4357 4455 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon3;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100100-01.exon3;rank=3 +1 irgsp CDS 4357 4455 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 5457 5560 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon4;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100100-01.exon4;rank=4 +1 irgsp CDS 5457 5560 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 7136 7944 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon5;constitutive=1;ensembl_end_phase=1;ensembl_phase=2;exon_id=Os01t0100100-01.exon5;rank=5 +1 irgsp CDS 7136 7944 . + 1 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 8028 8150 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon6;constitutive=1;ensembl_end_phase=1;ensembl_phase=1;exon_id=Os01t0100100-01.exon6;rank=6 +1 irgsp CDS 8028 8150 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 8232 8320 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon7;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100100-01.exon7;rank=7 +1 irgsp CDS 8232 8320 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 8408 8608 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon8;constitutive=1;ensembl_end_phase=0;ensembl_phase=0;exon_id=Os01t0100100-01.exon8;rank=8 +1 irgsp CDS 8408 8608 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 9210 9615 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon9;constitutive=1;ensembl_end_phase=1;ensembl_phase=0;exon_id=Os01t0100100-01.exon9;rank=9 +1 irgsp CDS 9210 9615 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 10102 10187 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon10;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100100-01.exon10;rank=10 +1 irgsp CDS 10102 10187 . + 2 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp CDS 10274 10297 . + 0 ID=CDS:Os01t0100100-01;Parent=transcript:Os01t0100100-01;protein_id=Os01t0100100-01 +1 irgsp exon 10274 10430 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon11;constitutive=1;ensembl_end_phase=-1;ensembl_phase=0;exon_id=Os01t0100100-01.exon11;rank=11 +1 irgsp three_prime_UTR 10298 10430 . + . Parent=transcript:Os01t0100100-01 +1 irgsp exon 10504 10815 . + . Parent=transcript:Os01t0100100-01;Name=Os01t0100100-01.exon12;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100100-01.exon12;rank=12 +1 irgsp three_prime_UTR 10504 10815 . + . Parent=transcript:Os01t0100100-01 +### +1 irgsp gene 11218 12435 . + . ID=gene:Os01g0100200;biotype=protein_coding;description=Conserved hypothetical protein. (Os01t0100200-01);gene_id=Os01g0100200;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 11218 12435 . + . ID=transcript:Os01t0100200-01;Parent=gene:Os01g0100200;biotype=protein_coding;transcript_id=Os01t0100200-01 +1 irgsp five_prime_UTR 11218 11797 . + . Parent=transcript:Os01t0100200-01 +1 irgsp exon 11218 12060 . + . Parent=transcript:Os01t0100200-01;Name=Os01t0100200-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100200-01.exon1;rank=1 +1 irgsp CDS 11798 12060 . + 0 ID=CDS:Os01t0100200-01;Parent=transcript:Os01t0100200-01;protein_id=Os01t0100200-01 +1 irgsp CDS 12152 12317 . + 1 ID=CDS:Os01t0100200-01;Parent=transcript:Os01t0100200-01;protein_id=Os01t0100200-01 +1 irgsp exon 12152 12435 . + . Parent=transcript:Os01t0100200-01;Name=Os01t0100200-01.exon2;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100200-01.exon2;rank=2 +1 irgsp three_prime_UTR 12318 12435 . + . Parent=transcript:Os01t0100200-01 +### +1 irgsp gene 11372 12284 . - . ID=gene:Os01g0100300;biotype=protein_coding;description=Cytochrome P450 domain containing protein. (Os01t0100300-00);gene_id=Os01g0100300;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 11372 12284 . - . ID=transcript:Os01t0100300-00;Parent=gene:Os01g0100300;biotype=protein_coding;transcript_id=Os01t0100300-00 +1 irgsp exon 11372 12042 . - . Parent=transcript:Os01t0100300-00;Name=Os01t0100300-00.exon2;constitutive=1;ensembl_end_phase=0;ensembl_phase=1;exon_id=Os01t0100300-00.exon2;rank=2 +1 irgsp CDS 11372 12042 . - 2 ID=CDS:Os01t0100300-00;Parent=transcript:Os01t0100300-00;protein_id=Os01t0100300-00 +1 irgsp exon 12146 12284 . - . Parent=transcript:Os01t0100300-00;Name=Os01t0100300-00.exon1;constitutive=1;ensembl_end_phase=1;ensembl_phase=0;exon_id=Os01t0100300-00.exon1;rank=1 +1 irgsp CDS 12146 12284 . - 0 ID=CDS:Os01t0100300-00;Parent=transcript:Os01t0100300-00;protein_id=Os01t0100300-00 +### +1 irgsp gene 12721 15685 . + . ID=gene:Os01g0100400;biotype=protein_coding;description=Similar to Pectinesterase-like protein. (Os01t0100400-01);gene_id=Os01g0100400;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 12721 15685 . + . ID=transcript:Os01t0100400-01;Parent=gene:Os01g0100400;biotype=protein_coding;transcript_id=Os01t0100400-01 +1 irgsp five_prime_UTR 12721 12773 . + . Parent=transcript:Os01t0100400-01 +1 irgsp exon 12721 13813 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon1;constitutive=1;ensembl_end_phase=2;ensembl_phase=-1;exon_id=Os01t0100400-01.exon1;rank=1 +1 irgsp CDS 12774 13813 . + 0 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 13906 14271 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon2;constitutive=1;ensembl_end_phase=2;ensembl_phase=2;exon_id=Os01t0100400-01.exon2;rank=2 +1 irgsp CDS 13906 14271 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 14359 14437 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon3;constitutive=1;ensembl_end_phase=0;ensembl_phase=2;exon_id=Os01t0100400-01.exon3;rank=3 +1 irgsp CDS 14359 14437 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 14969 15171 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon4;constitutive=1;ensembl_end_phase=2;ensembl_phase=0;exon_id=Os01t0100400-01.exon4;rank=4 +1 irgsp CDS 14969 15171 . + 0 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp CDS 15266 15359 . + 1 ID=CDS:Os01t0100400-01;Parent=transcript:Os01t0100400-01;protein_id=Os01t0100400-01 +1 irgsp exon 15266 15685 . + . Parent=transcript:Os01t0100400-01;Name=Os01t0100400-01.exon5;constitutive=1;ensembl_end_phase=-1;ensembl_phase=2;exon_id=Os01t0100400-01.exon5;rank=5 +1 irgsp three_prime_UTR 15360 15685 . + . Parent=transcript:Os01t0100400-01 +### +1 irgsp gene 12808 13978 . - . ID=gene:Os01g0100466;biotype=protein_coding;description=Hypothetical protein. (Os01t0100466-00);gene_id=Os01g0100466;logic_name=irgspv1.0-20170804-genes +1 irgsp mRNA 12808 13978 . - . ID=transcript:Os01t0100466-00;Parent=gene:Os01g0100466;biotype=protein_coding;transcript_id=Os01t0100466-00 +1 irgsp three_prime_UTR 12808 12868 . - . Parent=transcript:Os01t0100466-00 +1 irgsp exon 12808 13782 . - . Parent=transcript:Os01t0100466-00;Name=Os01t0100466-00.exon2;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100466-00.exon2;rank=2 +1 irgsp CDS 12869 13102 . - 0 ID=CDS:Os01t0100466-00;Parent=transcript:Os01t0100466-00;protein_id=Os01t0100466-00 +1 irgsp five_prime_UTR 13103 13782 . - . Parent=transcript:Os01t0100466-00 +1 irgsp exon 13880 13978 . - . Parent=transcript:Os01t0100466-00;Name=Os01t0100466-00.exon1;constitutive=1;ensembl_end_phase=-1;ensembl_phase=-1;exon_id=Os01t0100466-00.exon1;rank=1 +1 irgsp five_prime_UTR 13880 13978 . - . Parent=transcript:Os01t0100466-00 \ No newline at end of file diff --git a/src/agat/agat_sp_statistics/test_data/script.sh b/src/agat/agat_sp_statistics/test_data/script.sh new file mode 100755 index 00000000..5b1133ac --- /dev/null +++ b/src/agat/agat_sp_statistics/test_data/script.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# clone repo +if [ ! -d /tmp/agat_source ]; then + git clone --depth 1 --single-branch --branch master https://github.com/NBISweden/AGAT /tmp/agat_source +fi + +# copy test data +cp -r /tmp/agat_source/t/scripts_output/in/1.gff src/agat/agat_sp_statistics/test_data +cp -r /tmp/agat_source/t/scripts_output/out/agat_sp_statistics_1.txt src/agat/agat_sp_statistics/test_data + +# keep only the first 78 lines of 1.gff +head -n 78 src/agat/agat_sp_statistics/test_data/1.gff > src/agat/agat_sp_statistics/test_data/1.gff.tmp +mv src/agat/agat_sp_statistics/test_data/1.gff.tmp src/agat/agat_sp_statistics/test_data/1.gff \ No newline at end of file diff --git a/src/agat/agat_sp_statistics/test_data/stats_out.txt b/src/agat/agat_sp_statistics/test_data/stats_out.txt new file mode 100644 index 00000000..b160ea52 --- /dev/null +++ b/src/agat/agat_sp_statistics/test_data/stats_out.txt @@ -0,0 +1,93 @@ +-------------------------------------------------------------------------------- + +---------------------------------- chromosome ---------------------------------- +Number of chromosome 1 +Number chromosome overlapping 0 +Total chromosome length (bp) 43270923 +mean chromosome length (bp) 43270923 +Longest chromosome (bp) 43270923 +Shortest chromosome (bp) 43270923 + +-------------------------------- repeat_region --------------------------------- +Number of repeat_region 1 +Number repeat_region overlapping 0 +Total repeat_region length (bp) 101 +mean repeat_region length (bp) 101 +Longest repeat_region (bp) 101 +Shortest repeat_region (bp) 101 + +------------------------------------- mrna ------------------------------------- +Number of gene 5 +Number of mrna 5 +Number of mrnas with utr both sides 4 +Number of mrnas with at least one utr 4 +Number of cds 5 +Number of exon 23 +Number of five_prime_utr 4 +Number of three_prime_utr 4 +Number of exon in cds 20 +Number of exon in five_prime_utr 6 +Number of exon in three_prime_utr 5 +Number of intron in cds 15 +Number of intron in exon 18 +Number of intron in five_prime_utr 2 +Number of intron in three_prime_utr 1 +Number gene overlapping 2 +mean mrnas per gene 1.0 +mean cdss per mrna 1.0 +mean exons per mrna 4.6 +mean five_prime_utrs per mrna 0.8 +mean three_prime_utrs per mrna 0.8 +mean exons per cds 4.0 +mean exons per five_prime_utr 1.5 +mean exons per three_prime_utr 1.2 +mean introns in cdss per mrna 3.0 +mean introns in exons per mrna 3.6 +mean introns in five_prime_utrs per mrna 0.4 +mean introns in three_prime_utrs per mrna 0.2 +Total gene length (bp) 14100 +Total mrna length (bp) 14100 +Total cds length (bp) 5364 +Total exon length (bp) 8107 +Total five_prime_utr length (bp) 1793 +Total three_prime_utr length (bp) 950 +Total intron length per cds (bp) 5738 +Total intron length per exon (bp) 5993 +Total intron length per five_prime_utr (bp) 182 +Total intron length per three_prime_utr (bp) 73 +mean gene length (bp) 2820 +mean mrna length (bp) 2820 +mean cds length (bp) 1072 +mean exon length (bp) 352 +mean five_prime_utr length (bp) 448 +mean three_prime_utr length (bp) 237 +mean cds piece length (bp) 268 +mean five_prime_utr piece length (bp) 298 +mean three_prime_utr piece length (bp) 190 +mean intron in cds length (bp) 382 +mean intron in exon length (bp) 332 +mean intron in five_prime_utr length (bp) 91 +mean intron in three_prime_utr length (bp) 73 +Longest gene (bp) 7833 +Longest mrna (bp) 7833 +Longest cds (bp) 2109 +Longest exon (bp) 1093 +Longest five_prime_utr (bp) 779 +Longest three_prime_utr (bp) 445 +Longest cds piece (bp) 1040 +Longest five_prime_utr piece (bp) 680 +Longest three_prime_utr piece (bp) 326 +Longest intron into cds part (bp) 1575 +Longest intron into exon part (bp) 1575 +Longest intron into five_prime_utr part (bp) 97 +Longest intron into three_prime_utr part (bp)73 +Shortest gene (bp) 913 +Shortest mrna (bp) 913 +Shortest cds piece (bp) 24 +Shortest five_prime_utr piece (bp) 53 +Shortest three_prime_utr piece (bp) 61 +Shortest intron into cds part (bp) 81 +Shortest intron into exon part (bp) 73 +Shortest intron into five_prime_utr part (bp)85 +Shortest intron into three_prime_utr part (bp)73 + diff --git a/target/executable/agat/agat_convert_bed2gff/.config.vsh.yaml b/target/executable/agat/agat_convert_bed2gff/.config.vsh.yaml index 332fbc1a..306ee9a1 100644 --- a/target/executable/agat/agat_convert_bed2gff/.config.vsh.yaml +++ b/target/executable/agat/agat_convert_bed2gff/.config.vsh.yaml @@ -235,9 +235,9 @@ build_info: output: "target/executable/agat/agat_convert_bed2gff" executable: "target/executable/agat/agat_convert_bed2gff/agat_convert_bed2gff" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/agat/agat_convert_bed2gff/agat_convert_bed2gff b/target/executable/agat/agat_convert_bed2gff/agat_convert_bed2gff index e9bcd569..fb78ac59 100755 --- a/target/executable/agat/agat_convert_bed2gff/agat_convert_bed2gff +++ b/target/executable/agat/agat_convert_bed2gff/agat_convert_bed2gff @@ -515,9 +515,9 @@ RUN agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.t LABEL org.opencontainers.image.authors="Leïla Paquay" LABEL org.opencontainers.image.description="Companion container for running component agat agat_convert_bed2gff" -LABEL org.opencontainers.image.created="2024-10-26T09:56:51Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:21Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/agat/agat_convert_embl2gff/.config.vsh.yaml b/target/executable/agat/agat_convert_embl2gff/.config.vsh.yaml index b2789c79..5202afa3 100644 --- a/target/executable/agat/agat_convert_embl2gff/.config.vsh.yaml +++ b/target/executable/agat/agat_convert_embl2gff/.config.vsh.yaml @@ -225,9 +225,9 @@ build_info: output: "target/executable/agat/agat_convert_embl2gff" executable: "target/executable/agat/agat_convert_embl2gff/agat_convert_embl2gff" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/agat/agat_convert_embl2gff/agat_convert_embl2gff b/target/executable/agat/agat_convert_embl2gff/agat_convert_embl2gff index 4479c304..b049fdca 100755 --- a/target/executable/agat/agat_convert_embl2gff/agat_convert_embl2gff +++ b/target/executable/agat/agat_convert_embl2gff/agat_convert_embl2gff @@ -505,9 +505,9 @@ RUN agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.t LABEL org.opencontainers.image.authors="Leïla Paquay" LABEL org.opencontainers.image.description="Companion container for running component agat agat_convert_embl2gff" -LABEL org.opencontainers.image.created="2024-10-26T09:56:50Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:20Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/agat/agat_convert_genscan2gff/.config.vsh.yaml b/target/executable/agat/agat_convert_genscan2gff/.config.vsh.yaml index f0d739ae..a75c4832 100644 --- a/target/executable/agat/agat_convert_genscan2gff/.config.vsh.yaml +++ b/target/executable/agat/agat_convert_genscan2gff/.config.vsh.yaml @@ -230,9 +230,9 @@ build_info: output: "target/executable/agat/agat_convert_genscan2gff" executable: "target/executable/agat/agat_convert_genscan2gff/agat_convert_genscan2gff" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/agat/agat_convert_genscan2gff/agat_convert_genscan2gff b/target/executable/agat/agat_convert_genscan2gff/agat_convert_genscan2gff index d98c860e..90ae4d54 100755 --- a/target/executable/agat/agat_convert_genscan2gff/agat_convert_genscan2gff +++ b/target/executable/agat/agat_convert_genscan2gff/agat_convert_genscan2gff @@ -514,9 +514,9 @@ RUN agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.t LABEL org.opencontainers.image.authors="Leïla Paquay" LABEL org.opencontainers.image.description="Companion container for running component agat agat_convert_genscan2gff" -LABEL org.opencontainers.image.created="2024-10-26T09:56:49Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:19Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml b/target/executable/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml index c2b37924..3c3b21b5 100644 --- a/target/executable/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml +++ b/target/executable/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml @@ -228,9 +228,9 @@ build_info: output: "target/executable/agat/agat_convert_sp_gff2gtf" executable: "target/executable/agat/agat_convert_sp_gff2gtf/agat_convert_sp_gff2gtf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/agat/agat_convert_sp_gff2gtf/agat_convert_sp_gff2gtf b/target/executable/agat/agat_convert_sp_gff2gtf/agat_convert_sp_gff2gtf index 09260d50..b5b5c2cc 100755 --- a/target/executable/agat/agat_convert_sp_gff2gtf/agat_convert_sp_gff2gtf +++ b/target/executable/agat/agat_convert_sp_gff2gtf/agat_convert_sp_gff2gtf @@ -519,9 +519,9 @@ RUN agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.t LABEL org.opencontainers.image.authors="Leïla Paquay" LABEL org.opencontainers.image.description="Companion container for running component agat agat_convert_sp_gff2gtf" -LABEL org.opencontainers.image.created="2024-10-26T09:56:50Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:21Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml b/target/executable/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml index 2c2a5abf..10eaf2ea 100644 --- a/target/executable/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml +++ b/target/executable/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml @@ -188,9 +188,9 @@ build_info: output: "target/executable/agat/agat_convert_sp_gff2tsv" executable: "target/executable/agat/agat_convert_sp_gff2tsv/agat_convert_sp_gff2tsv" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/agat/agat_convert_sp_gff2tsv/agat_convert_sp_gff2tsv b/target/executable/agat/agat_convert_sp_gff2tsv/agat_convert_sp_gff2tsv index 47d12126..0ac462fa 100755 --- a/target/executable/agat/agat_convert_sp_gff2tsv/agat_convert_sp_gff2tsv +++ b/target/executable/agat/agat_convert_sp_gff2tsv/agat_convert_sp_gff2tsv @@ -484,9 +484,9 @@ RUN agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.t LABEL org.opencontainers.image.authors="Leïla Paquay" LABEL org.opencontainers.image.description="Companion container for running component agat agat_convert_sp_gff2tsv" -LABEL org.opencontainers.image.created="2024-10-26T09:56:50Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:20Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml b/target/executable/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml index 550a5ca9..ce34425f 100644 --- a/target/executable/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml +++ b/target/executable/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml @@ -195,9 +195,9 @@ build_info: output: "target/executable/agat/agat_convert_sp_gxf2gxf" executable: "target/executable/agat/agat_convert_sp_gxf2gxf/agat_convert_sp_gxf2gxf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/agat/agat_convert_sp_gxf2gxf/agat_convert_sp_gxf2gxf b/target/executable/agat/agat_convert_sp_gxf2gxf/agat_convert_sp_gxf2gxf index c8aae341..14f0a337 100755 --- a/target/executable/agat/agat_convert_sp_gxf2gxf/agat_convert_sp_gxf2gxf +++ b/target/executable/agat/agat_convert_sp_gxf2gxf/agat_convert_sp_gxf2gxf @@ -493,9 +493,9 @@ RUN agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.t LABEL org.opencontainers.image.authors="Leïla Paquay" LABEL org.opencontainers.image.description="Companion container for running component agat agat_convert_sp_gxf2gxf" -LABEL org.opencontainers.image.created="2024-10-26T09:56:49Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:19Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/agat/agat_sp_add_introns/.config.vsh.yaml b/target/executable/agat/agat_sp_add_introns/.config.vsh.yaml new file mode 100644 index 00000000..8b19da23 --- /dev/null +++ b/target/executable/agat/agat_sp_add_introns/.config.vsh.yaml @@ -0,0 +1,213 @@ +name: "agat_sp_add_introns" +namespace: "agat" +version: "main" +authors: +- name: "Leïla Paquay" + roles: + - "author" + - "maintainer" + info: + links: + email: "leila@data-intuitive.com" + github: "Leila011" + linkedin: "leilapaquay" + organizations: + - name: "Data Intuitive" + href: "https://www.data-intuitive.com" + role: "Software Developer" +argument_groups: +- name: "Inputs" + arguments: + - type: "file" + name: "--gff" + alternatives: + - "-f" + - "--ref" + - "--reffile" + description: "Input GTF/GFF file." + info: null + example: + - "input.gff" + must_exist: true + create_parent: true + required: true + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Outputs" + arguments: + - type: "file" + name: "--output" + alternatives: + - "-o" + - "--out" + - "--outfile" + - "--gtf" + description: "Output GFF3 file." + info: null + example: + - "output.gff" + must_exist: true + create_parent: true + required: true + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Arguments" + arguments: + - type: "file" + name: "--config" + alternatives: + - "-c" + description: "AGAT config file. By default AGAT takes the original agat_config.yaml\ + \ shipped with AGAT. The `--config` option \ngives you the possibility to use\ + \ your own AGAT config file (located elsewhere or named differently).\n" + info: null + example: + - "custom_agat_config.yaml" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +resources: +- type: "bash_script" + path: "script.sh" + is_executable: true +description: "Add intronic elements to a gtf/gff file without intron features.\n" +test_resources: +- type: "bash_script" + path: "test.sh" + is_executable: true +- type: "file" + path: "test_data" +info: null +status: "enabled" +requirements: + commands: + - "ps" +keywords: +- "gene annotations" +- "GTF conversion" +license: "GPL-3.0" +references: + doi: + - "10.5281/zenodo.3552717" +links: + repository: "https://github.com/NBISweden/AGAT" + homepage: "https://github.com/NBISweden/AGAT" + documentation: "https://agat.readthedocs.io/en/latest/tools/agat_sp_add_introns.html" + issue_tracker: "https://github.com/NBISweden/AGAT/issues" +runners: +- type: "executable" + id: "executable" + docker_setup_strategy: "ifneedbepullelsecachedbuild" +- type: "nextflow" + id: "nextflow" + directives: + tag: "$id" + auto: + simplifyInput: true + simplifyOutput: false + transcript: false + publish: false + config: + labels: + mem1gb: "memory = 1000000000.B" + mem2gb: "memory = 2000000000.B" + mem5gb: "memory = 5000000000.B" + mem10gb: "memory = 10000000000.B" + mem20gb: "memory = 20000000000.B" + mem50gb: "memory = 50000000000.B" + mem100gb: "memory = 100000000000.B" + mem200gb: "memory = 200000000000.B" + mem500gb: "memory = 500000000000.B" + mem1tb: "memory = 1000000000000.B" + mem2tb: "memory = 2000000000000.B" + mem5tb: "memory = 5000000000000.B" + mem10tb: "memory = 10000000000000.B" + mem20tb: "memory = 20000000000000.B" + mem50tb: "memory = 50000000000000.B" + mem100tb: "memory = 100000000000000.B" + mem200tb: "memory = 200000000000000.B" + mem500tb: "memory = 500000000000000.B" + mem1gib: "memory = 1073741824.B" + mem2gib: "memory = 2147483648.B" + mem4gib: "memory = 4294967296.B" + mem8gib: "memory = 8589934592.B" + mem16gib: "memory = 17179869184.B" + mem32gib: "memory = 34359738368.B" + mem64gib: "memory = 68719476736.B" + mem128gib: "memory = 137438953472.B" + mem256gib: "memory = 274877906944.B" + mem512gib: "memory = 549755813888.B" + mem1tib: "memory = 1099511627776.B" + mem2tib: "memory = 2199023255552.B" + mem4tib: "memory = 4398046511104.B" + mem8tib: "memory = 8796093022208.B" + mem16tib: "memory = 17592186044416.B" + mem32tib: "memory = 35184372088832.B" + mem64tib: "memory = 70368744177664.B" + mem128tib: "memory = 140737488355328.B" + mem256tib: "memory = 281474976710656.B" + mem512tib: "memory = 562949953421312.B" + cpu1: "cpus = 1" + cpu2: "cpus = 2" + cpu5: "cpus = 5" + cpu10: "cpus = 10" + cpu20: "cpus = 20" + cpu50: "cpus = 50" + cpu100: "cpus = 100" + cpu200: "cpus = 200" + cpu500: "cpus = 500" + cpu1000: "cpus = 1000" + debug: false + container: "docker" +engines: +- type: "docker" + id: "docker" + image: "quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0" + target_registry: "images.viash-hub.com" + target_tag: "main" + namespace_separator: "/" + setup: + - type: "docker" + run: + - "agat --version | sed 's/AGAT\\s\\(.*\\)/agat: \"\\1\"/' > /var/software_versions.txt\n" + entrypoint: [] + cmd: null +- type: "native" + id: "native" +build_info: + config: "src/agat/agat_sp_add_introns/config.vsh.yaml" + runner: "executable" + engine: "docker|native" + output: "target/executable/agat/agat_sp_add_introns" + executable: "target/executable/agat/agat_sp_add_introns/agat_sp_add_introns" + viash_version: "0.9.0" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" +package_config: + name: "biobox" + version: "main" + description: "A collection of bioinformatics tools for working with sequence data.\n" + info: null + viash_version: "0.9.0" + source: "src" + target: "target" + config_mods: + - ".requirements.commands := ['ps']\n" + - ".engines += { type: \"native\" }" + - ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'" + - ".engines[.type == 'docker'].target_tag := 'main'" + keywords: + - "bioinformatics" + - "modules" + - "sequencing" + license: "MIT" + organization: "vsh" + links: + repository: "https://github.com/viash-hub/biobox" + issue_tracker: "https://github.com/viash-hub/biobox/issues" diff --git a/target/executable/agat/agat_sp_add_introns/agat_sp_add_introns b/target/executable/agat/agat_sp_add_introns/agat_sp_add_introns new file mode 100755 index 00000000..5a030580 --- /dev/null +++ b/target/executable/agat/agat_sp_add_introns/agat_sp_add_introns @@ -0,0 +1,1166 @@ +#!/usr/bin/env bash + +# agat_sp_add_introns main +# +# This wrapper script is auto-generated by viash 0.9.0 and is thus a derivative +# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data +# Intuitive. +# +# The component may contain files which fall under a different license. The +# authors of this component should specify the license in the header of such +# files, or include a separate license file detailing the licenses of all included +# files. +# +# Component authors: +# * Leïla Paquay (author, maintainer) + +set -e + +if [ -z "$VIASH_TEMP" ]; then + VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$VIASH_TEMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMP} + VIASH_TEMP=${VIASH_TEMP:-$TMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$TMP} + VIASH_TEMP=${VIASH_TEMP:-$TEMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$TEMP} + VIASH_TEMP=${VIASH_TEMP:-/tmp} +fi + +# define helper functions +# ViashQuote: put quotes around non flag values +# $1 : unquoted string +# return : possibly quoted string +# examples: +# ViashQuote --foo # returns --foo +# ViashQuote bar # returns 'bar' +# Viashquote --foo=bar # returns --foo='bar' +function ViashQuote { + if [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+=.+$ ]]; then + echo "$1" | sed "s#=\(.*\)#='\1'#" + elif [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+$ ]]; then + echo "$1" + else + echo "'$1'" + fi +} +# ViashRemoveFlags: Remove leading flag +# $1 : string with a possible leading flag +# return : string without possible leading flag +# examples: +# ViashRemoveFlags --foo=bar # returns bar +function ViashRemoveFlags { + echo "$1" | sed 's/^--*[a-zA-Z0-9_\-]*=//' +} +# ViashSourceDir: return the path of a bash file, following symlinks +# usage : ViashSourceDir ${BASH_SOURCE[0]} +# $1 : Should always be set to ${BASH_SOURCE[0]} +# returns : The absolute path of the bash file +function ViashSourceDir { + local source="$1" + while [ -h "$source" ]; do + local dir="$( cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd )" + source="$(readlink "$source")" + [[ $source != /* ]] && source="$dir/$source" + done + cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd +} +# ViashFindTargetDir: return the path of the '.build.yaml' file, following symlinks +# usage : ViashFindTargetDir 'ScriptPath' +# $1 : The location from where to start the upward search +# returns : The absolute path of the '.build.yaml' file +function ViashFindTargetDir { + local source="$1" + while [[ "$source" != "" && ! -e "$source/.build.yaml" ]]; do + source=${source%/*} + done + echo $source +} +# see https://en.wikipedia.org/wiki/Syslog#Severity_level +VIASH_LOGCODE_EMERGENCY=0 +VIASH_LOGCODE_ALERT=1 +VIASH_LOGCODE_CRITICAL=2 +VIASH_LOGCODE_ERROR=3 +VIASH_LOGCODE_WARNING=4 +VIASH_LOGCODE_NOTICE=5 +VIASH_LOGCODE_INFO=6 +VIASH_LOGCODE_DEBUG=7 +VIASH_VERBOSITY=$VIASH_LOGCODE_NOTICE + +# ViashLog: Log events depending on the verbosity level +# usage: ViashLog 1 alert Oh no something went wrong! +# $1: required verbosity level +# $2: display tag +# $3+: messages to display +# stdout: Your input, prepended by '[$2] '. +function ViashLog { + local required_level="$1" + local display_tag="$2" + shift 2 + if [ $VIASH_VERBOSITY -ge $required_level ]; then + >&2 echo "[$display_tag]" "$@" + fi +} + +# ViashEmergency: log events when the system is unstable +# usage: ViashEmergency Oh no something went wrong. +# stdout: Your input, prepended by '[emergency] '. +function ViashEmergency { + ViashLog $VIASH_LOGCODE_EMERGENCY emergency "$@" +} + +# ViashAlert: log events when actions must be taken immediately (e.g. corrupted system database) +# usage: ViashAlert Oh no something went wrong. +# stdout: Your input, prepended by '[alert] '. +function ViashAlert { + ViashLog $VIASH_LOGCODE_ALERT alert "$@" +} + +# ViashCritical: log events when a critical condition occurs +# usage: ViashCritical Oh no something went wrong. +# stdout: Your input, prepended by '[critical] '. +function ViashCritical { + ViashLog $VIASH_LOGCODE_CRITICAL critical "$@" +} + +# ViashError: log events when an error condition occurs +# usage: ViashError Oh no something went wrong. +# stdout: Your input, prepended by '[error] '. +function ViashError { + ViashLog $VIASH_LOGCODE_ERROR error "$@" +} + +# ViashWarning: log potentially abnormal events +# usage: ViashWarning Something may have gone wrong. +# stdout: Your input, prepended by '[warning] '. +function ViashWarning { + ViashLog $VIASH_LOGCODE_WARNING warning "$@" +} + +# ViashNotice: log significant but normal events +# usage: ViashNotice This just happened. +# stdout: Your input, prepended by '[notice] '. +function ViashNotice { + ViashLog $VIASH_LOGCODE_NOTICE notice "$@" +} + +# ViashInfo: log normal events +# usage: ViashInfo This just happened. +# stdout: Your input, prepended by '[info] '. +function ViashInfo { + ViashLog $VIASH_LOGCODE_INFO info "$@" +} + +# ViashDebug: log all events, for debugging purposes +# usage: ViashDebug This just happened. +# stdout: Your input, prepended by '[debug] '. +function ViashDebug { + ViashLog $VIASH_LOGCODE_DEBUG debug "$@" +} + +# find source folder of this component +VIASH_META_RESOURCES_DIR=`ViashSourceDir ${BASH_SOURCE[0]}` + +# find the root of the built components & dependencies +VIASH_TARGET_DIR=`ViashFindTargetDir $VIASH_META_RESOURCES_DIR` + +# define meta fields +VIASH_META_NAME="agat_sp_add_introns" +VIASH_META_FUNCTIONALITY_NAME="agat_sp_add_introns" +VIASH_META_EXECUTABLE="$VIASH_META_RESOURCES_DIR/$VIASH_META_NAME" +VIASH_META_CONFIG="$VIASH_META_RESOURCES_DIR/.config.vsh.yaml" +VIASH_META_TEMP_DIR="$VIASH_TEMP" + + +# ViashHelp: Display helpful explanation about this executable +function ViashHelp { + echo "agat_sp_add_introns main" + echo "" + echo "Add intronic elements to a gtf/gff file without intron features." + echo "" + echo "Inputs:" + echo " -f, --ref, --reffile, --gff" + echo " type: file, required parameter, file must exist" + echo " example: input.gff" + echo " Input GTF/GFF file." + echo "" + echo "Outputs:" + echo " -o, --out, --outfile, --gtf, --output" + echo " type: file, required parameter, output, file must exist" + echo " example: output.gff" + echo " Output GFF3 file." + echo "" + echo "Arguments:" + echo " -c, --config" + echo " type: file, file must exist" + echo " example: custom_agat_config.yaml" + echo " AGAT config file. By default AGAT takes the original agat_config.yaml" + echo " shipped with AGAT. The \`--config\` option" + echo " gives you the possibility to use your own AGAT config file (located" + echo " elsewhere or named differently)." +} + +# initialise variables +VIASH_MODE='run' +VIASH_ENGINE_ID='docker' + +######## Helper functions for setting up Docker images for viash ######## +# expects: ViashDockerBuild + +# ViashDockerInstallationCheck: check whether Docker is installed correctly +# +# examples: +# ViashDockerInstallationCheck +function ViashDockerInstallationCheck { + ViashDebug "Checking whether Docker is installed" + if [ ! command -v docker &> /dev/null ]; then + ViashCritical "Docker doesn't seem to be installed. See 'https://docs.docker.com/get-docker/' for instructions." + exit 1 + fi + + ViashDebug "Checking whether the Docker daemon is running" + local save=$-; set +e + local docker_version=$(docker version --format '{{.Client.APIVersion}}' 2> /dev/null) + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashCritical "Docker daemon does not seem to be running. Try one of the following:" + ViashCritical "- Try running 'dockerd' in the command line" + ViashCritical "- See https://docs.docker.com/config/daemon/" + exit 1 + fi +} + +# ViashDockerRemoteTagCheck: check whether a Docker image is available +# on a remote. Assumes `docker login` has been performed, if relevant. +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# ViashDockerRemoteTagCheck python:latest +# echo $? # returns '0' +# ViashDockerRemoteTagCheck sdaizudceahifu +# echo $? # returns '1' +function ViashDockerRemoteTagCheck { + docker manifest inspect $1 > /dev/null 2> /dev/null +} + +# ViashDockerLocalTagCheck: check whether a Docker image is available locally +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# docker pull python:latest +# ViashDockerLocalTagCheck python:latest +# echo $? # returns '0' +# ViashDockerLocalTagCheck sdaizudceahifu +# echo $? # returns '1' +function ViashDockerLocalTagCheck { + [ -n "$(docker images -q $1)" ] +} + +# ViashDockerPull: pull a Docker image +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# ViashDockerPull python:latest +# echo $? # returns '0' +# ViashDockerPull sdaizudceahifu +# echo $? # returns '1' +function ViashDockerPull { + ViashNotice "Checking if Docker image is available at '$1'" + if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then + docker pull $1 && return 0 || return 1 + else + local save=$-; set +e + docker pull $1 2> /dev/null > /dev/null + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashWarning "Could not pull from '$1'. Docker image doesn't exist or is not accessible." + fi + return $out + fi +} + +# ViashDockerPush: push a Docker image +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# ViashDockerPush python:latest +# echo $? # returns '0' +# ViashDockerPush sdaizudceahifu +# echo $? # returns '1' +function ViashDockerPush { + ViashNotice "Pushing image to '$1'" + local save=$-; set +e + local out + if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then + docker push $1 + out=$? + else + docker push $1 2> /dev/null > /dev/null + out=$? + fi + [[ $save =~ e ]] && set -e + if [ $out -eq 0 ]; then + ViashNotice "Container '$1' push succeeded." + else + ViashError "Container '$1' push errored. You might not be logged in or have the necessary permissions." + fi + return $out +} + +# ViashDockerPullElseBuild: pull a Docker image, else build it +# +# $1 : image identifier with format `[registry/]image[:tag]` +# ViashDockerBuild : a Bash function which builds a docker image, takes image identifier as argument. +# examples: +# ViashDockerPullElseBuild mynewcomponent +function ViashDockerPullElseBuild { + local save=$-; set +e + ViashDockerPull $1 + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashDockerBuild $@ + fi +} + +# ViashDockerSetup: create a Docker image, according to specified docker setup strategy +# +# $1 : image identifier with format `[registry/]image[:tag]` +# $2 : docker setup strategy, see DockerSetupStrategy.scala +# examples: +# ViashDockerSetup mynewcomponent alwaysbuild +function ViashDockerSetup { + local image_id="$1" + local setup_strategy="$2" + if [ "$setup_strategy" == "alwaysbuild" -o "$setup_strategy" == "build" -o "$setup_strategy" == "b" ]; then + ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "alwayspull" -o "$setup_strategy" == "pull" -o "$setup_strategy" == "p" ]; then + ViashDockerPull $image_id + elif [ "$setup_strategy" == "alwayspullelsebuild" -o "$setup_strategy" == "pullelsebuild" ]; then + ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "alwayspullelsecachedbuild" -o "$setup_strategy" == "pullelsecachedbuild" ]; then + ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "alwayscachedbuild" -o "$setup_strategy" == "cachedbuild" -o "$setup_strategy" == "cb" ]; then + ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id") + elif [[ "$setup_strategy" =~ ^ifneedbe ]]; then + local save=$-; set +e + ViashDockerLocalTagCheck $image_id + local outCheck=$? + [[ $save =~ e ]] && set -e + if [ $outCheck -eq 0 ]; then + ViashInfo "Image $image_id already exists" + elif [ "$setup_strategy" == "ifneedbebuild" ]; then + ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "ifneedbecachedbuild" ]; then + ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "ifneedbepull" ]; then + ViashDockerPull $image_id + elif [ "$setup_strategy" == "ifneedbepullelsebuild" ]; then + ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "ifneedbepullelsecachedbuild" ]; then + ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id") + else + ViashError "Unrecognised Docker strategy: $setup_strategy" + exit 1 + fi + elif [ "$setup_strategy" == "push" -o "$setup_strategy" == "forcepush" -o "$setup_strategy" == "alwayspush" ]; then + ViashDockerPush "$image_id" + elif [ "$setup_strategy" == "pushifnotpresent" -o "$setup_strategy" == "gentlepush" -o "$setup_strategy" == "maybepush" ]; then + local save=$-; set +e + ViashDockerRemoteTagCheck $image_id + local outCheck=$? + [[ $save =~ e ]] && set -e + if [ $outCheck -eq 0 ]; then + ViashNotice "Container '$image_id' exists, doing nothing." + else + ViashNotice "Container '$image_id' does not yet exist." + ViashDockerPush "$image_id" + fi + elif [ "$setup_strategy" == "donothing" -o "$setup_strategy" == "meh" ]; then + ViashNotice "Skipping setup." + else + ViashError "Unrecognised Docker strategy: $setup_strategy" + exit 1 + fi +} + +# ViashDockerCheckCommands: Check whether a docker container has the required commands +# +# $1 : image identifier with format `[registry/]image[:tag]` +# $@ : commands to verify being present +# examples: +# ViashDockerCheckCommands bash:4.0 bash ps foo +function ViashDockerCheckCommands { + local image_id="$1" + shift 1 + local commands="$@" + local save=$-; set +e + local missing # mark 'missing' as local in advance, otherwise the exit code of the command will be missing and always be '0' + missing=$(docker run --rm --entrypoint=sh "$image_id" -c "for command in $commands; do command -v \$command >/dev/null 2>&1; if [ \$? -ne 0 ]; then echo \$command; exit 1; fi; done") + local outCheck=$? + [[ $save =~ e ]] && set -e + if [ $outCheck -ne 0 ]; then + ViashError "Docker container '$image_id' does not contain command '$missing'." + exit 1 + fi +} + +# ViashDockerBuild: build a docker image +# $1 : image identifier with format `[registry/]image[:tag]` +# $... : additional arguments to pass to docker build +# $VIASH_META_TEMP_DIR : temporary directory to store dockerfile & optional resources in +# $VIASH_META_NAME : name of the component +# $VIASH_META_RESOURCES_DIR : directory containing the resources +# $VIASH_VERBOSITY : verbosity level +# exit code $? : whether or not the image was built successfully +function ViashDockerBuild { + local image_id="$1" + shift 1 + + # create temporary directory to store dockerfile & optional resources in + local tmpdir=$(mktemp -d "$VIASH_META_TEMP_DIR/dockerbuild-$VIASH_META_NAME-XXXXXX") + local dockerfile="$tmpdir/Dockerfile" + function clean_up { + rm -rf "$tmpdir" + } + trap clean_up EXIT + + # store dockerfile and resources + ViashDockerfile "$VIASH_ENGINE_ID" > "$dockerfile" + + # generate the build command + local docker_build_cmd="docker build -t '$image_id' $@ '$VIASH_META_RESOURCES_DIR' -f '$dockerfile'" + + # build the container + ViashNotice "Building container '$image_id' with Dockerfile" + ViashInfo "$docker_build_cmd" + local save=$-; set +e + if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then + eval $docker_build_cmd + else + eval $docker_build_cmd &> "$tmpdir/docker_build.log" + fi + + # check exit code + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashError "Error occurred while building container '$image_id'" + if [ $VIASH_VERBOSITY -lt $VIASH_LOGCODE_INFO ]; then + ViashError "Transcript: --------------------------------" + cat "$tmpdir/docker_build.log" + ViashError "End of transcript --------------------------" + fi + exit 1 + fi +} + +######## End of helper functions for setting up Docker images for viash ######## + +# ViashDockerFile: print the dockerfile to stdout +# $1 : engine identifier +# return : dockerfile required to run this component +# examples: +# ViashDockerFile +function ViashDockerfile { + local engine_id="$1" + + if [[ "$engine_id" == "docker" ]]; then + cat << 'VIASHDOCKER' +FROM quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0 +ENTRYPOINT [] +RUN agat --version | sed 's/AGAT\s\(.*\)/agat: "\1"/' > /var/software_versions.txt + +LABEL org.opencontainers.image.authors="Leïla Paquay" +LABEL org.opencontainers.image.description="Companion container for running component agat agat_sp_add_introns" +LABEL org.opencontainers.image.created="2024-10-26T13:11:20Z" +LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" +LABEL org.opencontainers.image.version="main" + +VIASHDOCKER + fi +} + +# ViashDockerBuildArgs: return the arguments to pass to docker build +# $1 : engine identifier +# return : arguments to pass to docker build +function ViashDockerBuildArgs { + local engine_id="$1" + + if [[ "$engine_id" == "docker" ]]; then + echo "" + fi +} + +# ViashAbsolutePath: generate absolute path from relative path +# borrowed from https://stackoverflow.com/a/21951256 +# $1 : relative filename +# return : absolute path +# examples: +# ViashAbsolutePath some_file.txt # returns /path/to/some_file.txt +# ViashAbsolutePath /foo/bar/.. # returns /foo +function ViashAbsolutePath { + local thePath + local parr + local outp + local len + if [[ ! "$1" =~ ^/ ]]; then + thePath="$PWD/$1" + else + thePath="$1" + fi + echo "$thePath" | ( + IFS=/ + read -a parr + declare -a outp + for i in "${parr[@]}"; do + case "$i" in + ''|.) continue ;; + ..) + len=${#outp[@]} + if ((len==0)); then + continue + else + unset outp[$((len-1))] + fi + ;; + *) + len=${#outp[@]} + outp[$len]="$i" + ;; + esac + done + echo /"${outp[*]}" + ) +} +# ViashDockerAutodetectMount: auto configuring docker mounts from parameters +# $1 : The parameter value +# returns : New parameter +# $VIASH_DIRECTORY_MOUNTS : Added another parameter to be passed to docker +# $VIASH_DOCKER_AUTOMOUNT_PREFIX : The prefix to be used for the automounts +# examples: +# ViashDockerAutodetectMount /path/to/bar # returns '/viash_automount/path/to/bar' +# ViashDockerAutodetectMountArg /path/to/bar # returns '--volume="/path/to:/viash_automount/path/to"' +function ViashDockerAutodetectMount { + local abs_path=$(ViashAbsolutePath "$1") + local mount_source + local base_name + if [ -d "$abs_path" ]; then + mount_source="$abs_path" + base_name="" + else + mount_source=`dirname "$abs_path"` + base_name=`basename "$abs_path"` + fi + local mount_target="$VIASH_DOCKER_AUTOMOUNT_PREFIX$mount_source" + if [ -z "$base_name" ]; then + echo "$mount_target" + else + echo "$mount_target/$base_name" + fi +} +function ViashDockerAutodetectMountArg { + local abs_path=$(ViashAbsolutePath "$1") + local mount_source + local base_name + if [ -d "$abs_path" ]; then + mount_source="$abs_path" + base_name="" + else + mount_source=`dirname "$abs_path"` + base_name=`basename "$abs_path"` + fi + local mount_target="$VIASH_DOCKER_AUTOMOUNT_PREFIX$mount_source" + ViashDebug "ViashDockerAutodetectMountArg $1 -> $mount_source -> $mount_target" + echo "--volume=\"$mount_source:$mount_target\"" +} +function ViashDockerStripAutomount { + local abs_path=$(ViashAbsolutePath "$1") + echo "${abs_path#$VIASH_DOCKER_AUTOMOUNT_PREFIX}" +} +# initialise variables +VIASH_DIRECTORY_MOUNTS=() + +# configure default docker automount prefix if it is unset +if [ -z "${VIASH_DOCKER_AUTOMOUNT_PREFIX+x}" ]; then + VIASH_DOCKER_AUTOMOUNT_PREFIX="/viash_automount" +fi + +# initialise docker variables +VIASH_DOCKER_RUN_ARGS=(-i --rm) + +# initialise array +VIASH_POSITIONAL_ARGS='' + +while [[ $# -gt 0 ]]; do + case "$1" in + -h|--help) + ViashHelp + exit + ;; + ---v|---verbose) + let "VIASH_VERBOSITY=VIASH_VERBOSITY+1" + shift 1 + ;; + ---verbosity) + VIASH_VERBOSITY="$2" + shift 2 + ;; + ---verbosity=*) + VIASH_VERBOSITY="$(ViashRemoveFlags "$1")" + shift 1 + ;; + --version) + echo "agat_sp_add_introns main" + exit + ;; + --gff) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'--gff\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --gff. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --gff=*) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'--gff=*\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF=$(ViashRemoveFlags "$1") + shift 1 + ;; + -f) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'-f\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -f. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --ref) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'--ref\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --ref. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --reffile) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'--reffile\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --reffile. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --output. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output=*) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output=*\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT=$(ViashRemoveFlags "$1") + shift 1 + ;; + -o) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'-o\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -o. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --out) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--out\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --out. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --outfile) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--outfile\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --outfile. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --gtf) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--gtf\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --gtf. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --config) + [ -n "$VIASH_PAR_CONFIG" ] && ViashError Bad arguments for option \'--config\': \'$VIASH_PAR_CONFIG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CONFIG="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --config. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --config=*) + [ -n "$VIASH_PAR_CONFIG" ] && ViashError Bad arguments for option \'--config=*\': \'$VIASH_PAR_CONFIG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CONFIG=$(ViashRemoveFlags "$1") + shift 1 + ;; + -c) + [ -n "$VIASH_PAR_CONFIG" ] && ViashError Bad arguments for option \'-c\': \'$VIASH_PAR_CONFIG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CONFIG="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -c. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + ---engine) + VIASH_ENGINE_ID="$2" + shift 2 + ;; + ---engine=*) + VIASH_ENGINE_ID="$(ViashRemoveFlags "$1")" + shift 1 + ;; + ---setup) + VIASH_MODE='setup' + VIASH_SETUP_STRATEGY="$2" + shift 2 + ;; + ---setup=*) + VIASH_MODE='setup' + VIASH_SETUP_STRATEGY="$(ViashRemoveFlags "$1")" + shift 1 + ;; + ---dockerfile) + VIASH_MODE='dockerfile' + shift 1 + ;; + ---docker_run_args) + VIASH_DOCKER_RUN_ARGS+=("$2") + shift 2 + ;; + ---docker_run_args=*) + VIASH_DOCKER_RUN_ARGS+=("$(ViashRemoveFlags "$1")") + shift 1 + ;; + ---docker_image_id) + VIASH_MODE='docker_image_id' + shift 1 + ;; + ---debug) + VIASH_MODE='debug' + shift 1 + ;; + ---cpus) + [ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_CPUS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to ---cpus. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + ---cpus=*) + [ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus=*\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_CPUS=$(ViashRemoveFlags "$1") + shift 1 + ;; + ---memory) + [ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_MEMORY="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to ---memory. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + ---memory=*) + [ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory=*\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_MEMORY=$(ViashRemoveFlags "$1") + shift 1 + ;; + *) # positional arg or unknown option + # since the positional args will be eval'd, can we always quote, instead of using ViashQuote + VIASH_POSITIONAL_ARGS="$VIASH_POSITIONAL_ARGS '$1'" + [[ $1 == -* ]] && ViashWarning $1 looks like a parameter but is not a defined parameter and will instead be treated as a positional argument. Use "--help" to get more information on the parameters. + shift # past argument + ;; + esac +done + +# parse positional parameters +eval set -- $VIASH_POSITIONAL_ARGS + + +if [ "$VIASH_ENGINE_ID" == "native" ] ; then + VIASH_ENGINE_TYPE='native' +elif [ "$VIASH_ENGINE_ID" == "docker" ] ; then + VIASH_ENGINE_TYPE='docker' +else + ViashError "Engine '$VIASH_ENGINE_ID' is not recognized. Options are: docker, native." + exit 1 +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # check if docker is installed properly + ViashDockerInstallationCheck + + # determine docker image id + if [[ "$VIASH_ENGINE_ID" == 'docker' ]]; then + VIASH_DOCKER_IMAGE_ID='images.viash-hub.com/vsh/biobox/agat/agat_sp_add_introns:main' + fi + + # print dockerfile + if [ "$VIASH_MODE" == "dockerfile" ]; then + ViashDockerfile "$VIASH_ENGINE_ID" + exit 0 + + elif [ "$VIASH_MODE" == "docker_image_id" ]; then + echo "$VIASH_DOCKER_IMAGE_ID" + exit 0 + + # enter docker container + elif [[ "$VIASH_MODE" == "debug" ]]; then + VIASH_CMD="docker run --entrypoint=bash ${VIASH_DOCKER_RUN_ARGS[@]} -v '$(pwd)':/pwd --workdir /pwd -t $VIASH_DOCKER_IMAGE_ID" + ViashNotice "+ $VIASH_CMD" + eval $VIASH_CMD + exit + + # build docker image + elif [ "$VIASH_MODE" == "setup" ]; then + ViashDockerSetup "$VIASH_DOCKER_IMAGE_ID" "$VIASH_SETUP_STRATEGY" + ViashDockerCheckCommands "$VIASH_DOCKER_IMAGE_ID" 'ps' 'bash' + exit 0 + fi + + # check if docker image exists + ViashDockerSetup "$VIASH_DOCKER_IMAGE_ID" ifneedbepullelsecachedbuild + ViashDockerCheckCommands "$VIASH_DOCKER_IMAGE_ID" 'ps' 'bash' +fi + +# setting computational defaults + +# helper function for parsing memory strings +function ViashMemoryAsBytes { + local memory=`echo "$1" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]'` + local memory_regex='^([0-9]+)([kmgtp]i?b?|b)$' + if [[ $memory =~ $memory_regex ]]; then + local number=${memory/[^0-9]*/} + local symbol=${memory/*[0-9]/} + + case $symbol in + b) memory_b=$number ;; + kb|k) memory_b=$(( $number * 1000 )) ;; + mb|m) memory_b=$(( $number * 1000 * 1000 )) ;; + gb|g) memory_b=$(( $number * 1000 * 1000 * 1000 )) ;; + tb|t) memory_b=$(( $number * 1000 * 1000 * 1000 * 1000 )) ;; + pb|p) memory_b=$(( $number * 1000 * 1000 * 1000 * 1000 * 1000 )) ;; + kib|ki) memory_b=$(( $number * 1024 )) ;; + mib|mi) memory_b=$(( $number * 1024 * 1024 )) ;; + gib|gi) memory_b=$(( $number * 1024 * 1024 * 1024 )) ;; + tib|ti) memory_b=$(( $number * 1024 * 1024 * 1024 * 1024 )) ;; + pib|pi) memory_b=$(( $number * 1024 * 1024 * 1024 * 1024 * 1024 )) ;; + esac + echo "$memory_b" + fi +} +# compute memory in different units +if [ ! -z ${VIASH_META_MEMORY+x} ]; then + VIASH_META_MEMORY_B=`ViashMemoryAsBytes $VIASH_META_MEMORY` + # do not define other variables if memory_b is an empty string + if [ ! -z "$VIASH_META_MEMORY_B" ]; then + VIASH_META_MEMORY_KB=$(( ($VIASH_META_MEMORY_B+999) / 1000 )) + VIASH_META_MEMORY_MB=$(( ($VIASH_META_MEMORY_KB+999) / 1000 )) + VIASH_META_MEMORY_GB=$(( ($VIASH_META_MEMORY_MB+999) / 1000 )) + VIASH_META_MEMORY_TB=$(( ($VIASH_META_MEMORY_GB+999) / 1000 )) + VIASH_META_MEMORY_PB=$(( ($VIASH_META_MEMORY_TB+999) / 1000 )) + VIASH_META_MEMORY_KIB=$(( ($VIASH_META_MEMORY_B+1023) / 1024 )) + VIASH_META_MEMORY_MIB=$(( ($VIASH_META_MEMORY_KIB+1023) / 1024 )) + VIASH_META_MEMORY_GIB=$(( ($VIASH_META_MEMORY_MIB+1023) / 1024 )) + VIASH_META_MEMORY_TIB=$(( ($VIASH_META_MEMORY_GIB+1023) / 1024 )) + VIASH_META_MEMORY_PIB=$(( ($VIASH_META_MEMORY_TIB+1023) / 1024 )) + else + # unset memory if string is empty + unset $VIASH_META_MEMORY_B + fi +fi +# unset nproc if string is empty +if [ -z "$VIASH_META_CPUS" ]; then + unset $VIASH_META_CPUS +fi + + +# check whether required parameters exist +if [ -z ${VIASH_PAR_GFF+x} ]; then + ViashError '--gff' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_PAR_OUTPUT+x} ]; then + ViashError '--output' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_NAME+x} ]; then + ViashError 'name' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then + ViashError 'functionality_name' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_RESOURCES_DIR+x} ]; then + ViashError 'resources_dir' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_EXECUTABLE+x} ]; then + ViashError 'executable' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_CONFIG+x} ]; then + ViashError 'config' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_TEMP_DIR+x} ]; then + ViashError 'temp_dir' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi + +# check whether required files exist +if [ ! -z "$VIASH_PAR_GFF" ] && [ ! -e "$VIASH_PAR_GFF" ]; then + ViashError "Input file '$VIASH_PAR_GFF' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_CONFIG" ] && [ ! -e "$VIASH_PAR_CONFIG" ]; then + ViashError "Input file '$VIASH_PAR_CONFIG' does not exist." + exit 1 +fi + +# check whether parameters values are of the right type +if [[ -n "$VIASH_META_CPUS" ]]; then + if ! [[ "$VIASH_META_CPUS" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'cpus' has to be an integer. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_B" ]]; then + if ! [[ "$VIASH_META_MEMORY_B" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_b' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_KB" ]]; then + if ! [[ "$VIASH_META_MEMORY_KB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_kb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_MB" ]]; then + if ! [[ "$VIASH_META_MEMORY_MB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_mb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_GB" ]]; then + if ! [[ "$VIASH_META_MEMORY_GB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_gb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_TB" ]]; then + if ! [[ "$VIASH_META_MEMORY_TB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_tb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_PB" ]]; then + if ! [[ "$VIASH_META_MEMORY_PB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_pb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_KIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_KIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_kib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_MIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_MIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_mib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_GIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_GIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_gib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_TIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_TIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_tib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_PIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_PIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_pib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi + +# create parent directories of output files, if so desired +if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -d "$(dirname "$VIASH_PAR_OUTPUT")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_OUTPUT")" +fi + +if [ "$VIASH_ENGINE_ID" == "native" ] ; then + if [ "$VIASH_MODE" == "run" ]; then + VIASH_CMD="bash" + else + ViashError "Engine '$VIASH_ENGINE_ID' does not support mode '$VIASH_MODE'." + exit 1 + fi +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # detect volumes from file arguments + VIASH_CHOWN_VARS=() +if [ ! -z "$VIASH_PAR_GFF" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_GFF")" ) + VIASH_PAR_GFF=$(ViashDockerAutodetectMount "$VIASH_PAR_GFF") +fi +if [ ! -z "$VIASH_PAR_OUTPUT" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT")" ) + VIASH_PAR_OUTPUT=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_OUTPUT" ) +fi +if [ ! -z "$VIASH_PAR_CONFIG" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_CONFIG")" ) + VIASH_PAR_CONFIG=$(ViashDockerAutodetectMount "$VIASH_PAR_CONFIG") +fi +if [ ! -z "$VIASH_META_RESOURCES_DIR" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_RESOURCES_DIR")" ) + VIASH_META_RESOURCES_DIR=$(ViashDockerAutodetectMount "$VIASH_META_RESOURCES_DIR") +fi +if [ ! -z "$VIASH_META_EXECUTABLE" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_EXECUTABLE")" ) + VIASH_META_EXECUTABLE=$(ViashDockerAutodetectMount "$VIASH_META_EXECUTABLE") +fi +if [ ! -z "$VIASH_META_CONFIG" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_CONFIG")" ) + VIASH_META_CONFIG=$(ViashDockerAutodetectMount "$VIASH_META_CONFIG") +fi +if [ ! -z "$VIASH_META_TEMP_DIR" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_TEMP_DIR")" ) + VIASH_META_TEMP_DIR=$(ViashDockerAutodetectMount "$VIASH_META_TEMP_DIR") +fi + + # get unique mounts + VIASH_UNIQUE_MOUNTS=($(for val in "${VIASH_DIRECTORY_MOUNTS[@]}"; do echo "$val"; done | sort -u)) +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # change file ownership + function ViashPerformChown { + if (( ${#VIASH_CHOWN_VARS[@]} )); then + set +e + VIASH_CMD="docker run --entrypoint=bash --rm ${VIASH_UNIQUE_MOUNTS[@]} $VIASH_DOCKER_IMAGE_ID -c 'chown $(id -u):$(id -g) --silent --recursive ${VIASH_CHOWN_VARS[@]}'" + ViashDebug "+ $VIASH_CMD" + eval $VIASH_CMD + set -e + fi + } + trap ViashPerformChown EXIT +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # helper function for filling in extra docker args + if [ ! -z "$VIASH_META_MEMORY_B" ]; then + VIASH_DOCKER_RUN_ARGS+=("--memory=${VIASH_META_MEMORY_B}") + fi + if [ ! -z "$VIASH_META_CPUS" ]; then + VIASH_DOCKER_RUN_ARGS+=("--cpus=${VIASH_META_CPUS}") + fi +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + VIASH_CMD="docker run --entrypoint=bash ${VIASH_DOCKER_RUN_ARGS[@]} ${VIASH_UNIQUE_MOUNTS[@]} $VIASH_DOCKER_IMAGE_ID" +fi + + +# set dependency paths + + +ViashDebug "Running command: $(echo $VIASH_CMD)" +cat << VIASHEOF | eval $VIASH_CMD +set -e +tempscript=\$(mktemp "$VIASH_META_TEMP_DIR/viash-run-agat_sp_add_introns-XXXXXX").sh +function clean_up { + rm "\$tempscript" +} +function interrupt { + echo -e "\nCTRL-C Pressed..." + exit 1 +} +trap clean_up EXIT +trap interrupt INT SIGINT +cat > "\$tempscript" << 'VIASHMAIN' +#!/bin/bash + +set -eo pipefail + +## VIASH START +# The following code has been auto-generated by Viash. +$( if [ ! -z ${VIASH_PAR_GFF+x} ]; then echo "${VIASH_PAR_GFF}" | sed "s#'#'\"'\"'#g;s#.*#par_gff='&'#" ; else echo "# par_gff="; fi ) +$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\"'\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi ) +$( if [ ! -z ${VIASH_PAR_CONFIG+x} ]; then echo "${VIASH_PAR_CONFIG}" | sed "s#'#'\"'\"'#g;s#.*#par_config='&'#" ; else echo "# par_config="; fi ) +$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi ) +$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi ) +$( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "${VIASH_META_RESOURCES_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_resources_dir='&'#" ; else echo "# meta_resources_dir="; fi ) +$( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "${VIASH_META_EXECUTABLE}" | sed "s#'#'\"'\"'#g;s#.*#meta_executable='&'#" ; else echo "# meta_executable="; fi ) +$( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "${VIASH_META_CONFIG}" | sed "s#'#'\"'\"'#g;s#.*#meta_config='&'#" ; else echo "# meta_config="; fi ) +$( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "${VIASH_META_TEMP_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_temp_dir='&'#" ; else echo "# meta_temp_dir="; fi ) +$( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "${VIASH_META_CPUS}" | sed "s#'#'\"'\"'#g;s#.*#meta_cpus='&'#" ; else echo "# meta_cpus="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "${VIASH_META_MEMORY_B}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_b='&'#" ; else echo "# meta_memory_b="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "${VIASH_META_MEMORY_KB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kb='&'#" ; else echo "# meta_memory_kb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "${VIASH_META_MEMORY_MB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mb='&'#" ; else echo "# meta_memory_mb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "${VIASH_META_MEMORY_GB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gb='&'#" ; else echo "# meta_memory_gb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "${VIASH_META_MEMORY_TB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tb='&'#" ; else echo "# meta_memory_tb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "${VIASH_META_MEMORY_PB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pb='&'#" ; else echo "# meta_memory_pb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "${VIASH_META_MEMORY_KIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kib='&'#" ; else echo "# meta_memory_kib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "${VIASH_META_MEMORY_MIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mib='&'#" ; else echo "# meta_memory_mib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "${VIASH_META_MEMORY_GIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gib='&'#" ; else echo "# meta_memory_gib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "${VIASH_META_MEMORY_TIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tib='&'#" ; else echo "# meta_memory_tib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "${VIASH_META_MEMORY_PIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pib='&'#" ; else echo "# meta_memory_pib="; fi ) + +## VIASH END + +agat_sp_add_introns.pl \\ + -f "\$par_gff" \\ + -o "\$par_output" \\ + \${par_config:+--config "\${par_config}"} +VIASHMAIN +bash "\$tempscript" & +wait "\$!" + +VIASHEOF + + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # strip viash automount from file paths + + if [ ! -z "$VIASH_PAR_GFF" ]; then + VIASH_PAR_GFF=$(ViashDockerStripAutomount "$VIASH_PAR_GFF") + fi + if [ ! -z "$VIASH_PAR_OUTPUT" ]; then + VIASH_PAR_OUTPUT=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT") + fi + if [ ! -z "$VIASH_PAR_CONFIG" ]; then + VIASH_PAR_CONFIG=$(ViashDockerStripAutomount "$VIASH_PAR_CONFIG") + fi + if [ ! -z "$VIASH_META_RESOURCES_DIR" ]; then + VIASH_META_RESOURCES_DIR=$(ViashDockerStripAutomount "$VIASH_META_RESOURCES_DIR") + fi + if [ ! -z "$VIASH_META_EXECUTABLE" ]; then + VIASH_META_EXECUTABLE=$(ViashDockerStripAutomount "$VIASH_META_EXECUTABLE") + fi + if [ ! -z "$VIASH_META_CONFIG" ]; then + VIASH_META_CONFIG=$(ViashDockerStripAutomount "$VIASH_META_CONFIG") + fi + if [ ! -z "$VIASH_META_TEMP_DIR" ]; then + VIASH_META_TEMP_DIR=$(ViashDockerStripAutomount "$VIASH_META_TEMP_DIR") + fi +fi + + +# check whether required files exist +if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -e "$VIASH_PAR_OUTPUT" ]; then + ViashError "Output file '$VIASH_PAR_OUTPUT' does not exist." + exit 1 +fi + + +exit 0 diff --git a/target/executable/agat/agat_sp_statistics/.config.vsh.yaml b/target/executable/agat/agat_sp_statistics/.config.vsh.yaml new file mode 100644 index 00000000..d0a5e433 --- /dev/null +++ b/target/executable/agat/agat_sp_statistics/.config.vsh.yaml @@ -0,0 +1,258 @@ +name: "agat_sp_statistics" +namespace: "agat" +version: "main" +authors: +- name: "Leïla Paquay" + roles: + - "author" + - "maintainer" + info: + links: + email: "leila@data-intuitive.com" + github: "Leila011" + linkedin: "leilapaquay" + organizations: + - name: "Data Intuitive" + href: "https://www.data-intuitive.com" + role: "Software Developer" +argument_groups: +- name: "Inputs" + arguments: + - type: "file" + name: "--gff" + alternatives: + - "-i" + description: "Input GTF/GFF file." + info: null + example: + - "input.gff" + must_exist: true + create_parent: true + required: true + direction: "input" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--gs_fasta" + description: "Genome size directly from a fasta file to compute more statistics.\n" + info: null + example: + - "genome.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Outputs" + arguments: + - type: "file" + name: "--output" + alternatives: + - "-o" + description: "The file where the results will be written.\n" + info: null + example: + - "output.txt" + must_exist: true + create_parent: true + required: true + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Options" + arguments: + - type: "boolean_true" + name: "--plot" + alternatives: + - "-p" + - "-d" + description: "When this option is used, an histogram of distribution of the features\ + \ will be printed in pdf files.\n" + info: null + direction: "input" + - type: "integer" + name: "--gs_size" + description: "Genome size in nucleotides to compute more statistics.\n" + info: null + example: + - 1000000 + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "integer" + name: "--verbose" + alternatives: + - "-v" + description: "Verbose option. To modify verbosity. Default is 1. 0 is quiet, 2\ + \ and 3 are increasing verbosity.\n" + info: null + example: + - 1 + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--config" + alternatives: + - "-c" + description: "AGAT config file. By default AGAT takes the original agat_config.yaml\ + \ shipped with AGAT. The `--config`\noption gives you the possibility to use\ + \ your own AGAT config file (located elsewhere or named differently).\n" + info: null + example: + - "custom_agat_config.yaml" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +resources: +- type: "bash_script" + path: "script.sh" + is_executable: true +description: "The script provides exhaustive statistics of a gft/gff file. \n\nIf\ + \ you have isoforms in your file, even if correct, some values calculated\nmight\ + \ sounds incoherent: e.g. total length mRNA can be superior than the\ngenome size.\ + \ Because all isoforms length is added... It is why by\ndefault we always compute\ + \ the statistics twice when there are isoforms,\nonce with the isoforms, once without\ + \ (In that case we keep the longest\nisoform per locus).\n" +test_resources: +- type: "bash_script" + path: "test.sh" + is_executable: true +- type: "file" + path: "test_data" +info: null +status: "enabled" +requirements: + commands: + - "ps" +keywords: +- "gene annotations" +- "statistics" +- "gff" +license: "GPL-3.0" +references: + doi: + - "10.5281/zenodo.3552717" +links: + repository: "https://github.com/NBISweden/AGAT" + homepage: "https://github.com/NBISweden/AGAT" + documentation: "https://agat.readthedocs.io/en/latest/tools/agat_sp_statistics.html" + issue_tracker: "https://github.com/NBISweden/AGAT/issues" +runners: +- type: "executable" + id: "executable" + docker_setup_strategy: "ifneedbepullelsecachedbuild" +- type: "nextflow" + id: "nextflow" + directives: + tag: "$id" + auto: + simplifyInput: true + simplifyOutput: false + transcript: false + publish: false + config: + labels: + mem1gb: "memory = 1000000000.B" + mem2gb: "memory = 2000000000.B" + mem5gb: "memory = 5000000000.B" + mem10gb: "memory = 10000000000.B" + mem20gb: "memory = 20000000000.B" + mem50gb: "memory = 50000000000.B" + mem100gb: "memory = 100000000000.B" + mem200gb: "memory = 200000000000.B" + mem500gb: "memory = 500000000000.B" + mem1tb: "memory = 1000000000000.B" + mem2tb: "memory = 2000000000000.B" + mem5tb: "memory = 5000000000000.B" + mem10tb: "memory = 10000000000000.B" + mem20tb: "memory = 20000000000000.B" + mem50tb: "memory = 50000000000000.B" + mem100tb: "memory = 100000000000000.B" + mem200tb: "memory = 200000000000000.B" + mem500tb: "memory = 500000000000000.B" + mem1gib: "memory = 1073741824.B" + mem2gib: "memory = 2147483648.B" + mem4gib: "memory = 4294967296.B" + mem8gib: "memory = 8589934592.B" + mem16gib: "memory = 17179869184.B" + mem32gib: "memory = 34359738368.B" + mem64gib: "memory = 68719476736.B" + mem128gib: "memory = 137438953472.B" + mem256gib: "memory = 274877906944.B" + mem512gib: "memory = 549755813888.B" + mem1tib: "memory = 1099511627776.B" + mem2tib: "memory = 2199023255552.B" + mem4tib: "memory = 4398046511104.B" + mem8tib: "memory = 8796093022208.B" + mem16tib: "memory = 17592186044416.B" + mem32tib: "memory = 35184372088832.B" + mem64tib: "memory = 70368744177664.B" + mem128tib: "memory = 140737488355328.B" + mem256tib: "memory = 281474976710656.B" + mem512tib: "memory = 562949953421312.B" + cpu1: "cpus = 1" + cpu2: "cpus = 2" + cpu5: "cpus = 5" + cpu10: "cpus = 10" + cpu20: "cpus = 20" + cpu50: "cpus = 50" + cpu100: "cpus = 100" + cpu200: "cpus = 200" + cpu500: "cpus = 500" + cpu1000: "cpus = 1000" + debug: false + container: "docker" +engines: +- type: "docker" + id: "docker" + image: "quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0" + target_registry: "images.viash-hub.com" + target_tag: "main" + namespace_separator: "/" + setup: + - type: "docker" + run: + - "agat --version | sed 's/.*v\\.//; s/\\s.*//' | sed 's/^/AGAT: /' > /var/software_versions.txt\n" + entrypoint: [] + cmd: null +- type: "native" + id: "native" +build_info: + config: "src/agat/agat_sp_statistics/config.vsh.yaml" + runner: "executable" + engine: "docker|native" + output: "target/executable/agat/agat_sp_statistics" + executable: "target/executable/agat/agat_sp_statistics/agat_sp_statistics" + viash_version: "0.9.0" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" +package_config: + name: "biobox" + version: "main" + description: "A collection of bioinformatics tools for working with sequence data.\n" + info: null + viash_version: "0.9.0" + source: "src" + target: "target" + config_mods: + - ".requirements.commands := ['ps']\n" + - ".engines += { type: \"native\" }" + - ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'" + - ".engines[.type == 'docker'].target_tag := 'main'" + keywords: + - "bioinformatics" + - "modules" + - "sequencing" + license: "MIT" + organization: "vsh" + links: + repository: "https://github.com/viash-hub/biobox" + issue_tracker: "https://github.com/viash-hub/biobox/issues" diff --git a/target/executable/agat/agat_sp_statistics/agat_sp_statistics b/target/executable/agat/agat_sp_statistics/agat_sp_statistics new file mode 100755 index 00000000..b8c0572e --- /dev/null +++ b/target/executable/agat/agat_sp_statistics/agat_sp_statistics @@ -0,0 +1,1269 @@ +#!/usr/bin/env bash + +# agat_sp_statistics main +# +# This wrapper script is auto-generated by viash 0.9.0 and is thus a derivative +# work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data +# Intuitive. +# +# The component may contain files which fall under a different license. The +# authors of this component should specify the license in the header of such +# files, or include a separate license file detailing the licenses of all included +# files. +# +# Component authors: +# * Leïla Paquay (author, maintainer) + +set -e + +if [ -z "$VIASH_TEMP" ]; then + VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$VIASH_TEMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMP} + VIASH_TEMP=${VIASH_TEMP:-$TMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$TMP} + VIASH_TEMP=${VIASH_TEMP:-$TEMPDIR} + VIASH_TEMP=${VIASH_TEMP:-$TEMP} + VIASH_TEMP=${VIASH_TEMP:-/tmp} +fi + +# define helper functions +# ViashQuote: put quotes around non flag values +# $1 : unquoted string +# return : possibly quoted string +# examples: +# ViashQuote --foo # returns --foo +# ViashQuote bar # returns 'bar' +# Viashquote --foo=bar # returns --foo='bar' +function ViashQuote { + if [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+=.+$ ]]; then + echo "$1" | sed "s#=\(.*\)#='\1'#" + elif [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+$ ]]; then + echo "$1" + else + echo "'$1'" + fi +} +# ViashRemoveFlags: Remove leading flag +# $1 : string with a possible leading flag +# return : string without possible leading flag +# examples: +# ViashRemoveFlags --foo=bar # returns bar +function ViashRemoveFlags { + echo "$1" | sed 's/^--*[a-zA-Z0-9_\-]*=//' +} +# ViashSourceDir: return the path of a bash file, following symlinks +# usage : ViashSourceDir ${BASH_SOURCE[0]} +# $1 : Should always be set to ${BASH_SOURCE[0]} +# returns : The absolute path of the bash file +function ViashSourceDir { + local source="$1" + while [ -h "$source" ]; do + local dir="$( cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd )" + source="$(readlink "$source")" + [[ $source != /* ]] && source="$dir/$source" + done + cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd +} +# ViashFindTargetDir: return the path of the '.build.yaml' file, following symlinks +# usage : ViashFindTargetDir 'ScriptPath' +# $1 : The location from where to start the upward search +# returns : The absolute path of the '.build.yaml' file +function ViashFindTargetDir { + local source="$1" + while [[ "$source" != "" && ! -e "$source/.build.yaml" ]]; do + source=${source%/*} + done + echo $source +} +# see https://en.wikipedia.org/wiki/Syslog#Severity_level +VIASH_LOGCODE_EMERGENCY=0 +VIASH_LOGCODE_ALERT=1 +VIASH_LOGCODE_CRITICAL=2 +VIASH_LOGCODE_ERROR=3 +VIASH_LOGCODE_WARNING=4 +VIASH_LOGCODE_NOTICE=5 +VIASH_LOGCODE_INFO=6 +VIASH_LOGCODE_DEBUG=7 +VIASH_VERBOSITY=$VIASH_LOGCODE_NOTICE + +# ViashLog: Log events depending on the verbosity level +# usage: ViashLog 1 alert Oh no something went wrong! +# $1: required verbosity level +# $2: display tag +# $3+: messages to display +# stdout: Your input, prepended by '[$2] '. +function ViashLog { + local required_level="$1" + local display_tag="$2" + shift 2 + if [ $VIASH_VERBOSITY -ge $required_level ]; then + >&2 echo "[$display_tag]" "$@" + fi +} + +# ViashEmergency: log events when the system is unstable +# usage: ViashEmergency Oh no something went wrong. +# stdout: Your input, prepended by '[emergency] '. +function ViashEmergency { + ViashLog $VIASH_LOGCODE_EMERGENCY emergency "$@" +} + +# ViashAlert: log events when actions must be taken immediately (e.g. corrupted system database) +# usage: ViashAlert Oh no something went wrong. +# stdout: Your input, prepended by '[alert] '. +function ViashAlert { + ViashLog $VIASH_LOGCODE_ALERT alert "$@" +} + +# ViashCritical: log events when a critical condition occurs +# usage: ViashCritical Oh no something went wrong. +# stdout: Your input, prepended by '[critical] '. +function ViashCritical { + ViashLog $VIASH_LOGCODE_CRITICAL critical "$@" +} + +# ViashError: log events when an error condition occurs +# usage: ViashError Oh no something went wrong. +# stdout: Your input, prepended by '[error] '. +function ViashError { + ViashLog $VIASH_LOGCODE_ERROR error "$@" +} + +# ViashWarning: log potentially abnormal events +# usage: ViashWarning Something may have gone wrong. +# stdout: Your input, prepended by '[warning] '. +function ViashWarning { + ViashLog $VIASH_LOGCODE_WARNING warning "$@" +} + +# ViashNotice: log significant but normal events +# usage: ViashNotice This just happened. +# stdout: Your input, prepended by '[notice] '. +function ViashNotice { + ViashLog $VIASH_LOGCODE_NOTICE notice "$@" +} + +# ViashInfo: log normal events +# usage: ViashInfo This just happened. +# stdout: Your input, prepended by '[info] '. +function ViashInfo { + ViashLog $VIASH_LOGCODE_INFO info "$@" +} + +# ViashDebug: log all events, for debugging purposes +# usage: ViashDebug This just happened. +# stdout: Your input, prepended by '[debug] '. +function ViashDebug { + ViashLog $VIASH_LOGCODE_DEBUG debug "$@" +} + +# find source folder of this component +VIASH_META_RESOURCES_DIR=`ViashSourceDir ${BASH_SOURCE[0]}` + +# find the root of the built components & dependencies +VIASH_TARGET_DIR=`ViashFindTargetDir $VIASH_META_RESOURCES_DIR` + +# define meta fields +VIASH_META_NAME="agat_sp_statistics" +VIASH_META_FUNCTIONALITY_NAME="agat_sp_statistics" +VIASH_META_EXECUTABLE="$VIASH_META_RESOURCES_DIR/$VIASH_META_NAME" +VIASH_META_CONFIG="$VIASH_META_RESOURCES_DIR/.config.vsh.yaml" +VIASH_META_TEMP_DIR="$VIASH_TEMP" + + +# ViashHelp: Display helpful explanation about this executable +function ViashHelp { + echo "agat_sp_statistics main" + echo "" + echo "The script provides exhaustive statistics of a gft/gff file." + echo "" + echo "If you have isoforms in your file, even if correct, some values calculated" + echo "might sounds incoherent: e.g. total length mRNA can be superior than the" + echo "genome size. Because all isoforms length is added... It is why by" + echo "default we always compute the statistics twice when there are isoforms," + echo "once with the isoforms, once without (In that case we keep the longest" + echo "isoform per locus)." + echo "" + echo "Inputs:" + echo " -i, --gff" + echo " type: file, required parameter, file must exist" + echo " example: input.gff" + echo " Input GTF/GFF file." + echo "" + echo " --gs_fasta" + echo " type: file, file must exist" + echo " example: genome.fasta" + echo " Genome size directly from a fasta file to compute more statistics." + echo "" + echo "Outputs:" + echo " -o, --output" + echo " type: file, required parameter, output, file must exist" + echo " example: output.txt" + echo " The file where the results will be written." + echo "" + echo "Options:" + echo " -p, -d, --plot" + echo " type: boolean_true" + echo " When this option is used, an histogram of distribution of the features" + echo " will be printed in pdf files." + echo "" + echo " --gs_size" + echo " type: integer" + echo " example: 1000000" + echo " Genome size in nucleotides to compute more statistics." + echo "" + echo " -v, --verbose" + echo " type: integer" + echo " example: 1" + echo " Verbose option. To modify verbosity. Default is 1. 0 is quiet, 2 and 3" + echo " are increasing verbosity." + echo "" + echo " -c, --config" + echo " type: file, file must exist" + echo " example: custom_agat_config.yaml" + echo " AGAT config file. By default AGAT takes the original agat_config.yaml" + echo " shipped with AGAT. The \`--config\`" + echo " option gives you the possibility to use your own AGAT config file" + echo " (located elsewhere or named differently)." +} + +# initialise variables +VIASH_MODE='run' +VIASH_ENGINE_ID='docker' + +######## Helper functions for setting up Docker images for viash ######## +# expects: ViashDockerBuild + +# ViashDockerInstallationCheck: check whether Docker is installed correctly +# +# examples: +# ViashDockerInstallationCheck +function ViashDockerInstallationCheck { + ViashDebug "Checking whether Docker is installed" + if [ ! command -v docker &> /dev/null ]; then + ViashCritical "Docker doesn't seem to be installed. See 'https://docs.docker.com/get-docker/' for instructions." + exit 1 + fi + + ViashDebug "Checking whether the Docker daemon is running" + local save=$-; set +e + local docker_version=$(docker version --format '{{.Client.APIVersion}}' 2> /dev/null) + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashCritical "Docker daemon does not seem to be running. Try one of the following:" + ViashCritical "- Try running 'dockerd' in the command line" + ViashCritical "- See https://docs.docker.com/config/daemon/" + exit 1 + fi +} + +# ViashDockerRemoteTagCheck: check whether a Docker image is available +# on a remote. Assumes `docker login` has been performed, if relevant. +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# ViashDockerRemoteTagCheck python:latest +# echo $? # returns '0' +# ViashDockerRemoteTagCheck sdaizudceahifu +# echo $? # returns '1' +function ViashDockerRemoteTagCheck { + docker manifest inspect $1 > /dev/null 2> /dev/null +} + +# ViashDockerLocalTagCheck: check whether a Docker image is available locally +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# docker pull python:latest +# ViashDockerLocalTagCheck python:latest +# echo $? # returns '0' +# ViashDockerLocalTagCheck sdaizudceahifu +# echo $? # returns '1' +function ViashDockerLocalTagCheck { + [ -n "$(docker images -q $1)" ] +} + +# ViashDockerPull: pull a Docker image +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# ViashDockerPull python:latest +# echo $? # returns '0' +# ViashDockerPull sdaizudceahifu +# echo $? # returns '1' +function ViashDockerPull { + ViashNotice "Checking if Docker image is available at '$1'" + if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then + docker pull $1 && return 0 || return 1 + else + local save=$-; set +e + docker pull $1 2> /dev/null > /dev/null + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashWarning "Could not pull from '$1'. Docker image doesn't exist or is not accessible." + fi + return $out + fi +} + +# ViashDockerPush: push a Docker image +# +# $1 : image identifier with format `[registry/]image[:tag]` +# exit code $? : whether or not the image was found +# examples: +# ViashDockerPush python:latest +# echo $? # returns '0' +# ViashDockerPush sdaizudceahifu +# echo $? # returns '1' +function ViashDockerPush { + ViashNotice "Pushing image to '$1'" + local save=$-; set +e + local out + if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then + docker push $1 + out=$? + else + docker push $1 2> /dev/null > /dev/null + out=$? + fi + [[ $save =~ e ]] && set -e + if [ $out -eq 0 ]; then + ViashNotice "Container '$1' push succeeded." + else + ViashError "Container '$1' push errored. You might not be logged in or have the necessary permissions." + fi + return $out +} + +# ViashDockerPullElseBuild: pull a Docker image, else build it +# +# $1 : image identifier with format `[registry/]image[:tag]` +# ViashDockerBuild : a Bash function which builds a docker image, takes image identifier as argument. +# examples: +# ViashDockerPullElseBuild mynewcomponent +function ViashDockerPullElseBuild { + local save=$-; set +e + ViashDockerPull $1 + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashDockerBuild $@ + fi +} + +# ViashDockerSetup: create a Docker image, according to specified docker setup strategy +# +# $1 : image identifier with format `[registry/]image[:tag]` +# $2 : docker setup strategy, see DockerSetupStrategy.scala +# examples: +# ViashDockerSetup mynewcomponent alwaysbuild +function ViashDockerSetup { + local image_id="$1" + local setup_strategy="$2" + if [ "$setup_strategy" == "alwaysbuild" -o "$setup_strategy" == "build" -o "$setup_strategy" == "b" ]; then + ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "alwayspull" -o "$setup_strategy" == "pull" -o "$setup_strategy" == "p" ]; then + ViashDockerPull $image_id + elif [ "$setup_strategy" == "alwayspullelsebuild" -o "$setup_strategy" == "pullelsebuild" ]; then + ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "alwayspullelsecachedbuild" -o "$setup_strategy" == "pullelsecachedbuild" ]; then + ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "alwayscachedbuild" -o "$setup_strategy" == "cachedbuild" -o "$setup_strategy" == "cb" ]; then + ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id") + elif [[ "$setup_strategy" =~ ^ifneedbe ]]; then + local save=$-; set +e + ViashDockerLocalTagCheck $image_id + local outCheck=$? + [[ $save =~ e ]] && set -e + if [ $outCheck -eq 0 ]; then + ViashInfo "Image $image_id already exists" + elif [ "$setup_strategy" == "ifneedbebuild" ]; then + ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "ifneedbecachedbuild" ]; then + ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "ifneedbepull" ]; then + ViashDockerPull $image_id + elif [ "$setup_strategy" == "ifneedbepullelsebuild" ]; then + ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id") + elif [ "$setup_strategy" == "ifneedbepullelsecachedbuild" ]; then + ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id") + else + ViashError "Unrecognised Docker strategy: $setup_strategy" + exit 1 + fi + elif [ "$setup_strategy" == "push" -o "$setup_strategy" == "forcepush" -o "$setup_strategy" == "alwayspush" ]; then + ViashDockerPush "$image_id" + elif [ "$setup_strategy" == "pushifnotpresent" -o "$setup_strategy" == "gentlepush" -o "$setup_strategy" == "maybepush" ]; then + local save=$-; set +e + ViashDockerRemoteTagCheck $image_id + local outCheck=$? + [[ $save =~ e ]] && set -e + if [ $outCheck -eq 0 ]; then + ViashNotice "Container '$image_id' exists, doing nothing." + else + ViashNotice "Container '$image_id' does not yet exist." + ViashDockerPush "$image_id" + fi + elif [ "$setup_strategy" == "donothing" -o "$setup_strategy" == "meh" ]; then + ViashNotice "Skipping setup." + else + ViashError "Unrecognised Docker strategy: $setup_strategy" + exit 1 + fi +} + +# ViashDockerCheckCommands: Check whether a docker container has the required commands +# +# $1 : image identifier with format `[registry/]image[:tag]` +# $@ : commands to verify being present +# examples: +# ViashDockerCheckCommands bash:4.0 bash ps foo +function ViashDockerCheckCommands { + local image_id="$1" + shift 1 + local commands="$@" + local save=$-; set +e + local missing # mark 'missing' as local in advance, otherwise the exit code of the command will be missing and always be '0' + missing=$(docker run --rm --entrypoint=sh "$image_id" -c "for command in $commands; do command -v \$command >/dev/null 2>&1; if [ \$? -ne 0 ]; then echo \$command; exit 1; fi; done") + local outCheck=$? + [[ $save =~ e ]] && set -e + if [ $outCheck -ne 0 ]; then + ViashError "Docker container '$image_id' does not contain command '$missing'." + exit 1 + fi +} + +# ViashDockerBuild: build a docker image +# $1 : image identifier with format `[registry/]image[:tag]` +# $... : additional arguments to pass to docker build +# $VIASH_META_TEMP_DIR : temporary directory to store dockerfile & optional resources in +# $VIASH_META_NAME : name of the component +# $VIASH_META_RESOURCES_DIR : directory containing the resources +# $VIASH_VERBOSITY : verbosity level +# exit code $? : whether or not the image was built successfully +function ViashDockerBuild { + local image_id="$1" + shift 1 + + # create temporary directory to store dockerfile & optional resources in + local tmpdir=$(mktemp -d "$VIASH_META_TEMP_DIR/dockerbuild-$VIASH_META_NAME-XXXXXX") + local dockerfile="$tmpdir/Dockerfile" + function clean_up { + rm -rf "$tmpdir" + } + trap clean_up EXIT + + # store dockerfile and resources + ViashDockerfile "$VIASH_ENGINE_ID" > "$dockerfile" + + # generate the build command + local docker_build_cmd="docker build -t '$image_id' $@ '$VIASH_META_RESOURCES_DIR' -f '$dockerfile'" + + # build the container + ViashNotice "Building container '$image_id' with Dockerfile" + ViashInfo "$docker_build_cmd" + local save=$-; set +e + if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then + eval $docker_build_cmd + else + eval $docker_build_cmd &> "$tmpdir/docker_build.log" + fi + + # check exit code + local out=$? + [[ $save =~ e ]] && set -e + if [ $out -ne 0 ]; then + ViashError "Error occurred while building container '$image_id'" + if [ $VIASH_VERBOSITY -lt $VIASH_LOGCODE_INFO ]; then + ViashError "Transcript: --------------------------------" + cat "$tmpdir/docker_build.log" + ViashError "End of transcript --------------------------" + fi + exit 1 + fi +} + +######## End of helper functions for setting up Docker images for viash ######## + +# ViashDockerFile: print the dockerfile to stdout +# $1 : engine identifier +# return : dockerfile required to run this component +# examples: +# ViashDockerFile +function ViashDockerfile { + local engine_id="$1" + + if [[ "$engine_id" == "docker" ]]; then + cat << 'VIASHDOCKER' +FROM quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0 +ENTRYPOINT [] +RUN agat --version | sed 's/.*v\.//; s/\s.*//' | sed 's/^/AGAT: /' > /var/software_versions.txt + +LABEL org.opencontainers.image.authors="Leïla Paquay" +LABEL org.opencontainers.image.description="Companion container for running component agat agat_sp_statistics" +LABEL org.opencontainers.image.created="2024-10-26T13:11:20Z" +LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" +LABEL org.opencontainers.image.version="main" + +VIASHDOCKER + fi +} + +# ViashDockerBuildArgs: return the arguments to pass to docker build +# $1 : engine identifier +# return : arguments to pass to docker build +function ViashDockerBuildArgs { + local engine_id="$1" + + if [[ "$engine_id" == "docker" ]]; then + echo "" + fi +} + +# ViashAbsolutePath: generate absolute path from relative path +# borrowed from https://stackoverflow.com/a/21951256 +# $1 : relative filename +# return : absolute path +# examples: +# ViashAbsolutePath some_file.txt # returns /path/to/some_file.txt +# ViashAbsolutePath /foo/bar/.. # returns /foo +function ViashAbsolutePath { + local thePath + local parr + local outp + local len + if [[ ! "$1" =~ ^/ ]]; then + thePath="$PWD/$1" + else + thePath="$1" + fi + echo "$thePath" | ( + IFS=/ + read -a parr + declare -a outp + for i in "${parr[@]}"; do + case "$i" in + ''|.) continue ;; + ..) + len=${#outp[@]} + if ((len==0)); then + continue + else + unset outp[$((len-1))] + fi + ;; + *) + len=${#outp[@]} + outp[$len]="$i" + ;; + esac + done + echo /"${outp[*]}" + ) +} +# ViashDockerAutodetectMount: auto configuring docker mounts from parameters +# $1 : The parameter value +# returns : New parameter +# $VIASH_DIRECTORY_MOUNTS : Added another parameter to be passed to docker +# $VIASH_DOCKER_AUTOMOUNT_PREFIX : The prefix to be used for the automounts +# examples: +# ViashDockerAutodetectMount /path/to/bar # returns '/viash_automount/path/to/bar' +# ViashDockerAutodetectMountArg /path/to/bar # returns '--volume="/path/to:/viash_automount/path/to"' +function ViashDockerAutodetectMount { + local abs_path=$(ViashAbsolutePath "$1") + local mount_source + local base_name + if [ -d "$abs_path" ]; then + mount_source="$abs_path" + base_name="" + else + mount_source=`dirname "$abs_path"` + base_name=`basename "$abs_path"` + fi + local mount_target="$VIASH_DOCKER_AUTOMOUNT_PREFIX$mount_source" + if [ -z "$base_name" ]; then + echo "$mount_target" + else + echo "$mount_target/$base_name" + fi +} +function ViashDockerAutodetectMountArg { + local abs_path=$(ViashAbsolutePath "$1") + local mount_source + local base_name + if [ -d "$abs_path" ]; then + mount_source="$abs_path" + base_name="" + else + mount_source=`dirname "$abs_path"` + base_name=`basename "$abs_path"` + fi + local mount_target="$VIASH_DOCKER_AUTOMOUNT_PREFIX$mount_source" + ViashDebug "ViashDockerAutodetectMountArg $1 -> $mount_source -> $mount_target" + echo "--volume=\"$mount_source:$mount_target\"" +} +function ViashDockerStripAutomount { + local abs_path=$(ViashAbsolutePath "$1") + echo "${abs_path#$VIASH_DOCKER_AUTOMOUNT_PREFIX}" +} +# initialise variables +VIASH_DIRECTORY_MOUNTS=() + +# configure default docker automount prefix if it is unset +if [ -z "${VIASH_DOCKER_AUTOMOUNT_PREFIX+x}" ]; then + VIASH_DOCKER_AUTOMOUNT_PREFIX="/viash_automount" +fi + +# initialise docker variables +VIASH_DOCKER_RUN_ARGS=(-i --rm) + +# initialise array +VIASH_POSITIONAL_ARGS='' + +while [[ $# -gt 0 ]]; do + case "$1" in + -h|--help) + ViashHelp + exit + ;; + ---v|---verbose) + let "VIASH_VERBOSITY=VIASH_VERBOSITY+1" + shift 1 + ;; + ---verbosity) + VIASH_VERBOSITY="$2" + shift 2 + ;; + ---verbosity=*) + VIASH_VERBOSITY="$(ViashRemoveFlags "$1")" + shift 1 + ;; + --version) + echo "agat_sp_statistics main" + exit + ;; + --gff) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'--gff\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --gff. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --gff=*) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'--gff=*\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF=$(ViashRemoveFlags "$1") + shift 1 + ;; + -i) + [ -n "$VIASH_PAR_GFF" ] && ViashError Bad arguments for option \'-i\': \'$VIASH_PAR_GFF\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GFF="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -i. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --gs_fasta) + [ -n "$VIASH_PAR_GS_FASTA" ] && ViashError Bad arguments for option \'--gs_fasta\': \'$VIASH_PAR_GS_FASTA\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GS_FASTA="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --gs_fasta. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --gs_fasta=*) + [ -n "$VIASH_PAR_GS_FASTA" ] && ViashError Bad arguments for option \'--gs_fasta=*\': \'$VIASH_PAR_GS_FASTA\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GS_FASTA=$(ViashRemoveFlags "$1") + shift 1 + ;; + --output) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --output. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output=*) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output=*\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT=$(ViashRemoveFlags "$1") + shift 1 + ;; + -o) + [ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'-o\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -o. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --plot) + [ -n "$VIASH_PAR_PLOT" ] && ViashError Bad arguments for option \'--plot\': \'$VIASH_PAR_PLOT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PLOT=true + shift 1 + ;; + -p) + [ -n "$VIASH_PAR_PLOT" ] && ViashError Bad arguments for option \'-p\': \'$VIASH_PAR_PLOT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PLOT=true + shift 1 + ;; + -d) + [ -n "$VIASH_PAR_PLOT" ] && ViashError Bad arguments for option \'-d\': \'$VIASH_PAR_PLOT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PLOT=true + shift 1 + ;; + --gs_size) + [ -n "$VIASH_PAR_GS_SIZE" ] && ViashError Bad arguments for option \'--gs_size\': \'$VIASH_PAR_GS_SIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GS_SIZE="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --gs_size. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --gs_size=*) + [ -n "$VIASH_PAR_GS_SIZE" ] && ViashError Bad arguments for option \'--gs_size=*\': \'$VIASH_PAR_GS_SIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GS_SIZE=$(ViashRemoveFlags "$1") + shift 1 + ;; + --verbose) + [ -n "$VIASH_PAR_VERBOSE" ] && ViashError Bad arguments for option \'--verbose\': \'$VIASH_PAR_VERBOSE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VERBOSE="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --verbose. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --verbose=*) + [ -n "$VIASH_PAR_VERBOSE" ] && ViashError Bad arguments for option \'--verbose=*\': \'$VIASH_PAR_VERBOSE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VERBOSE=$(ViashRemoveFlags "$1") + shift 1 + ;; + -v) + [ -n "$VIASH_PAR_VERBOSE" ] && ViashError Bad arguments for option \'-v\': \'$VIASH_PAR_VERBOSE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VERBOSE="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -v. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --config) + [ -n "$VIASH_PAR_CONFIG" ] && ViashError Bad arguments for option \'--config\': \'$VIASH_PAR_CONFIG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CONFIG="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --config. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --config=*) + [ -n "$VIASH_PAR_CONFIG" ] && ViashError Bad arguments for option \'--config=*\': \'$VIASH_PAR_CONFIG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CONFIG=$(ViashRemoveFlags "$1") + shift 1 + ;; + -c) + [ -n "$VIASH_PAR_CONFIG" ] && ViashError Bad arguments for option \'-c\': \'$VIASH_PAR_CONFIG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CONFIG="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -c. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + ---engine) + VIASH_ENGINE_ID="$2" + shift 2 + ;; + ---engine=*) + VIASH_ENGINE_ID="$(ViashRemoveFlags "$1")" + shift 1 + ;; + ---setup) + VIASH_MODE='setup' + VIASH_SETUP_STRATEGY="$2" + shift 2 + ;; + ---setup=*) + VIASH_MODE='setup' + VIASH_SETUP_STRATEGY="$(ViashRemoveFlags "$1")" + shift 1 + ;; + ---dockerfile) + VIASH_MODE='dockerfile' + shift 1 + ;; + ---docker_run_args) + VIASH_DOCKER_RUN_ARGS+=("$2") + shift 2 + ;; + ---docker_run_args=*) + VIASH_DOCKER_RUN_ARGS+=("$(ViashRemoveFlags "$1")") + shift 1 + ;; + ---docker_image_id) + VIASH_MODE='docker_image_id' + shift 1 + ;; + ---debug) + VIASH_MODE='debug' + shift 1 + ;; + ---cpus) + [ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_CPUS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to ---cpus. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + ---cpus=*) + [ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus=*\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_CPUS=$(ViashRemoveFlags "$1") + shift 1 + ;; + ---memory) + [ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_MEMORY="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to ---memory. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + ---memory=*) + [ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory=*\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_META_MEMORY=$(ViashRemoveFlags "$1") + shift 1 + ;; + *) # positional arg or unknown option + # since the positional args will be eval'd, can we always quote, instead of using ViashQuote + VIASH_POSITIONAL_ARGS="$VIASH_POSITIONAL_ARGS '$1'" + [[ $1 == -* ]] && ViashWarning $1 looks like a parameter but is not a defined parameter and will instead be treated as a positional argument. Use "--help" to get more information on the parameters. + shift # past argument + ;; + esac +done + +# parse positional parameters +eval set -- $VIASH_POSITIONAL_ARGS + + +if [ "$VIASH_ENGINE_ID" == "native" ] ; then + VIASH_ENGINE_TYPE='native' +elif [ "$VIASH_ENGINE_ID" == "docker" ] ; then + VIASH_ENGINE_TYPE='docker' +else + ViashError "Engine '$VIASH_ENGINE_ID' is not recognized. Options are: docker, native." + exit 1 +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # check if docker is installed properly + ViashDockerInstallationCheck + + # determine docker image id + if [[ "$VIASH_ENGINE_ID" == 'docker' ]]; then + VIASH_DOCKER_IMAGE_ID='images.viash-hub.com/vsh/biobox/agat/agat_sp_statistics:main' + fi + + # print dockerfile + if [ "$VIASH_MODE" == "dockerfile" ]; then + ViashDockerfile "$VIASH_ENGINE_ID" + exit 0 + + elif [ "$VIASH_MODE" == "docker_image_id" ]; then + echo "$VIASH_DOCKER_IMAGE_ID" + exit 0 + + # enter docker container + elif [[ "$VIASH_MODE" == "debug" ]]; then + VIASH_CMD="docker run --entrypoint=bash ${VIASH_DOCKER_RUN_ARGS[@]} -v '$(pwd)':/pwd --workdir /pwd -t $VIASH_DOCKER_IMAGE_ID" + ViashNotice "+ $VIASH_CMD" + eval $VIASH_CMD + exit + + # build docker image + elif [ "$VIASH_MODE" == "setup" ]; then + ViashDockerSetup "$VIASH_DOCKER_IMAGE_ID" "$VIASH_SETUP_STRATEGY" + ViashDockerCheckCommands "$VIASH_DOCKER_IMAGE_ID" 'ps' 'bash' + exit 0 + fi + + # check if docker image exists + ViashDockerSetup "$VIASH_DOCKER_IMAGE_ID" ifneedbepullelsecachedbuild + ViashDockerCheckCommands "$VIASH_DOCKER_IMAGE_ID" 'ps' 'bash' +fi + +# setting computational defaults + +# helper function for parsing memory strings +function ViashMemoryAsBytes { + local memory=`echo "$1" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]'` + local memory_regex='^([0-9]+)([kmgtp]i?b?|b)$' + if [[ $memory =~ $memory_regex ]]; then + local number=${memory/[^0-9]*/} + local symbol=${memory/*[0-9]/} + + case $symbol in + b) memory_b=$number ;; + kb|k) memory_b=$(( $number * 1000 )) ;; + mb|m) memory_b=$(( $number * 1000 * 1000 )) ;; + gb|g) memory_b=$(( $number * 1000 * 1000 * 1000 )) ;; + tb|t) memory_b=$(( $number * 1000 * 1000 * 1000 * 1000 )) ;; + pb|p) memory_b=$(( $number * 1000 * 1000 * 1000 * 1000 * 1000 )) ;; + kib|ki) memory_b=$(( $number * 1024 )) ;; + mib|mi) memory_b=$(( $number * 1024 * 1024 )) ;; + gib|gi) memory_b=$(( $number * 1024 * 1024 * 1024 )) ;; + tib|ti) memory_b=$(( $number * 1024 * 1024 * 1024 * 1024 )) ;; + pib|pi) memory_b=$(( $number * 1024 * 1024 * 1024 * 1024 * 1024 )) ;; + esac + echo "$memory_b" + fi +} +# compute memory in different units +if [ ! -z ${VIASH_META_MEMORY+x} ]; then + VIASH_META_MEMORY_B=`ViashMemoryAsBytes $VIASH_META_MEMORY` + # do not define other variables if memory_b is an empty string + if [ ! -z "$VIASH_META_MEMORY_B" ]; then + VIASH_META_MEMORY_KB=$(( ($VIASH_META_MEMORY_B+999) / 1000 )) + VIASH_META_MEMORY_MB=$(( ($VIASH_META_MEMORY_KB+999) / 1000 )) + VIASH_META_MEMORY_GB=$(( ($VIASH_META_MEMORY_MB+999) / 1000 )) + VIASH_META_MEMORY_TB=$(( ($VIASH_META_MEMORY_GB+999) / 1000 )) + VIASH_META_MEMORY_PB=$(( ($VIASH_META_MEMORY_TB+999) / 1000 )) + VIASH_META_MEMORY_KIB=$(( ($VIASH_META_MEMORY_B+1023) / 1024 )) + VIASH_META_MEMORY_MIB=$(( ($VIASH_META_MEMORY_KIB+1023) / 1024 )) + VIASH_META_MEMORY_GIB=$(( ($VIASH_META_MEMORY_MIB+1023) / 1024 )) + VIASH_META_MEMORY_TIB=$(( ($VIASH_META_MEMORY_GIB+1023) / 1024 )) + VIASH_META_MEMORY_PIB=$(( ($VIASH_META_MEMORY_TIB+1023) / 1024 )) + else + # unset memory if string is empty + unset $VIASH_META_MEMORY_B + fi +fi +# unset nproc if string is empty +if [ -z "$VIASH_META_CPUS" ]; then + unset $VIASH_META_CPUS +fi + + +# check whether required parameters exist +if [ -z ${VIASH_PAR_GFF+x} ]; then + ViashError '--gff' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_PAR_OUTPUT+x} ]; then + ViashError '--output' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_NAME+x} ]; then + ViashError 'name' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then + ViashError 'functionality_name' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_RESOURCES_DIR+x} ]; then + ViashError 'resources_dir' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_EXECUTABLE+x} ]; then + ViashError 'executable' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_CONFIG+x} ]; then + ViashError 'config' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi +if [ -z ${VIASH_META_TEMP_DIR+x} ]; then + ViashError 'temp_dir' is a required argument. Use "--help" to get more information on the parameters. + exit 1 +fi + +# filling in defaults +if [ -z ${VIASH_PAR_PLOT+x} ]; then + VIASH_PAR_PLOT="false" +fi + +# check whether required files exist +if [ ! -z "$VIASH_PAR_GFF" ] && [ ! -e "$VIASH_PAR_GFF" ]; then + ViashError "Input file '$VIASH_PAR_GFF' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_GS_FASTA" ] && [ ! -e "$VIASH_PAR_GS_FASTA" ]; then + ViashError "Input file '$VIASH_PAR_GS_FASTA' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_CONFIG" ] && [ ! -e "$VIASH_PAR_CONFIG" ]; then + ViashError "Input file '$VIASH_PAR_CONFIG' does not exist." + exit 1 +fi + +# check whether parameters values are of the right type +if [[ -n "$VIASH_PAR_PLOT" ]]; then + if ! [[ "$VIASH_PAR_PLOT" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--plot' has to be a boolean_true. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_GS_SIZE" ]]; then + if ! [[ "$VIASH_PAR_GS_SIZE" =~ ^[-+]?[0-9]+$ ]]; then + ViashError '--gs_size' has to be an integer. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_VERBOSE" ]]; then + if ! [[ "$VIASH_PAR_VERBOSE" =~ ^[-+]?[0-9]+$ ]]; then + ViashError '--verbose' has to be an integer. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_CPUS" ]]; then + if ! [[ "$VIASH_META_CPUS" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'cpus' has to be an integer. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_B" ]]; then + if ! [[ "$VIASH_META_MEMORY_B" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_b' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_KB" ]]; then + if ! [[ "$VIASH_META_MEMORY_KB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_kb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_MB" ]]; then + if ! [[ "$VIASH_META_MEMORY_MB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_mb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_GB" ]]; then + if ! [[ "$VIASH_META_MEMORY_GB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_gb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_TB" ]]; then + if ! [[ "$VIASH_META_MEMORY_TB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_tb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_PB" ]]; then + if ! [[ "$VIASH_META_MEMORY_PB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_pb' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_KIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_KIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_kib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_MIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_MIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_mib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_GIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_GIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_gib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_TIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_TIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_tib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_META_MEMORY_PIB" ]]; then + if ! [[ "$VIASH_META_MEMORY_PIB" =~ ^[-+]?[0-9]+$ ]]; then + ViashError 'memory_pib' has to be a long. Use "--help" to get more information on the parameters. + exit 1 + fi +fi + +# create parent directories of output files, if so desired +if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -d "$(dirname "$VIASH_PAR_OUTPUT")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_OUTPUT")" +fi + +if [ "$VIASH_ENGINE_ID" == "native" ] ; then + if [ "$VIASH_MODE" == "run" ]; then + VIASH_CMD="bash" + else + ViashError "Engine '$VIASH_ENGINE_ID' does not support mode '$VIASH_MODE'." + exit 1 + fi +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # detect volumes from file arguments + VIASH_CHOWN_VARS=() +if [ ! -z "$VIASH_PAR_GFF" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_GFF")" ) + VIASH_PAR_GFF=$(ViashDockerAutodetectMount "$VIASH_PAR_GFF") +fi +if [ ! -z "$VIASH_PAR_GS_FASTA" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_GS_FASTA")" ) + VIASH_PAR_GS_FASTA=$(ViashDockerAutodetectMount "$VIASH_PAR_GS_FASTA") +fi +if [ ! -z "$VIASH_PAR_OUTPUT" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT")" ) + VIASH_PAR_OUTPUT=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_OUTPUT" ) +fi +if [ ! -z "$VIASH_PAR_CONFIG" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_CONFIG")" ) + VIASH_PAR_CONFIG=$(ViashDockerAutodetectMount "$VIASH_PAR_CONFIG") +fi +if [ ! -z "$VIASH_META_RESOURCES_DIR" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_RESOURCES_DIR")" ) + VIASH_META_RESOURCES_DIR=$(ViashDockerAutodetectMount "$VIASH_META_RESOURCES_DIR") +fi +if [ ! -z "$VIASH_META_EXECUTABLE" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_EXECUTABLE")" ) + VIASH_META_EXECUTABLE=$(ViashDockerAutodetectMount "$VIASH_META_EXECUTABLE") +fi +if [ ! -z "$VIASH_META_CONFIG" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_CONFIG")" ) + VIASH_META_CONFIG=$(ViashDockerAutodetectMount "$VIASH_META_CONFIG") +fi +if [ ! -z "$VIASH_META_TEMP_DIR" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_META_TEMP_DIR")" ) + VIASH_META_TEMP_DIR=$(ViashDockerAutodetectMount "$VIASH_META_TEMP_DIR") +fi + + # get unique mounts + VIASH_UNIQUE_MOUNTS=($(for val in "${VIASH_DIRECTORY_MOUNTS[@]}"; do echo "$val"; done | sort -u)) +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # change file ownership + function ViashPerformChown { + if (( ${#VIASH_CHOWN_VARS[@]} )); then + set +e + VIASH_CMD="docker run --entrypoint=bash --rm ${VIASH_UNIQUE_MOUNTS[@]} $VIASH_DOCKER_IMAGE_ID -c 'chown $(id -u):$(id -g) --silent --recursive ${VIASH_CHOWN_VARS[@]}'" + ViashDebug "+ $VIASH_CMD" + eval $VIASH_CMD + set -e + fi + } + trap ViashPerformChown EXIT +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # helper function for filling in extra docker args + if [ ! -z "$VIASH_META_MEMORY_B" ]; then + VIASH_DOCKER_RUN_ARGS+=("--memory=${VIASH_META_MEMORY_B}") + fi + if [ ! -z "$VIASH_META_CPUS" ]; then + VIASH_DOCKER_RUN_ARGS+=("--cpus=${VIASH_META_CPUS}") + fi +fi + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + VIASH_CMD="docker run --entrypoint=bash ${VIASH_DOCKER_RUN_ARGS[@]} ${VIASH_UNIQUE_MOUNTS[@]} $VIASH_DOCKER_IMAGE_ID" +fi + + +# set dependency paths + + +ViashDebug "Running command: $(echo $VIASH_CMD)" +cat << VIASHEOF | eval $VIASH_CMD +set -e +tempscript=\$(mktemp "$VIASH_META_TEMP_DIR/viash-run-agat_sp_statistics-XXXXXX").sh +function clean_up { + rm "\$tempscript" +} +function interrupt { + echo -e "\nCTRL-C Pressed..." + exit 1 +} +trap clean_up EXIT +trap interrupt INT SIGINT +cat > "\$tempscript" << 'VIASHMAIN' +#!/bin/bash + +set -eo pipefail + +## VIASH START +# The following code has been auto-generated by Viash. +$( if [ ! -z ${VIASH_PAR_GFF+x} ]; then echo "${VIASH_PAR_GFF}" | sed "s#'#'\"'\"'#g;s#.*#par_gff='&'#" ; else echo "# par_gff="; fi ) +$( if [ ! -z ${VIASH_PAR_GS_FASTA+x} ]; then echo "${VIASH_PAR_GS_FASTA}" | sed "s#'#'\"'\"'#g;s#.*#par_gs_fasta='&'#" ; else echo "# par_gs_fasta="; fi ) +$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\"'\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi ) +$( if [ ! -z ${VIASH_PAR_PLOT+x} ]; then echo "${VIASH_PAR_PLOT}" | sed "s#'#'\"'\"'#g;s#.*#par_plot='&'#" ; else echo "# par_plot="; fi ) +$( if [ ! -z ${VIASH_PAR_GS_SIZE+x} ]; then echo "${VIASH_PAR_GS_SIZE}" | sed "s#'#'\"'\"'#g;s#.*#par_gs_size='&'#" ; else echo "# par_gs_size="; fi ) +$( if [ ! -z ${VIASH_PAR_VERBOSE+x} ]; then echo "${VIASH_PAR_VERBOSE}" | sed "s#'#'\"'\"'#g;s#.*#par_verbose='&'#" ; else echo "# par_verbose="; fi ) +$( if [ ! -z ${VIASH_PAR_CONFIG+x} ]; then echo "${VIASH_PAR_CONFIG}" | sed "s#'#'\"'\"'#g;s#.*#par_config='&'#" ; else echo "# par_config="; fi ) +$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi ) +$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi ) +$( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "${VIASH_META_RESOURCES_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_resources_dir='&'#" ; else echo "# meta_resources_dir="; fi ) +$( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "${VIASH_META_EXECUTABLE}" | sed "s#'#'\"'\"'#g;s#.*#meta_executable='&'#" ; else echo "# meta_executable="; fi ) +$( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "${VIASH_META_CONFIG}" | sed "s#'#'\"'\"'#g;s#.*#meta_config='&'#" ; else echo "# meta_config="; fi ) +$( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "${VIASH_META_TEMP_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_temp_dir='&'#" ; else echo "# meta_temp_dir="; fi ) +$( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "${VIASH_META_CPUS}" | sed "s#'#'\"'\"'#g;s#.*#meta_cpus='&'#" ; else echo "# meta_cpus="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "${VIASH_META_MEMORY_B}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_b='&'#" ; else echo "# meta_memory_b="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "${VIASH_META_MEMORY_KB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kb='&'#" ; else echo "# meta_memory_kb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "${VIASH_META_MEMORY_MB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mb='&'#" ; else echo "# meta_memory_mb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "${VIASH_META_MEMORY_GB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gb='&'#" ; else echo "# meta_memory_gb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "${VIASH_META_MEMORY_TB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tb='&'#" ; else echo "# meta_memory_tb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "${VIASH_META_MEMORY_PB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pb='&'#" ; else echo "# meta_memory_pb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "${VIASH_META_MEMORY_KIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kib='&'#" ; else echo "# meta_memory_kib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "${VIASH_META_MEMORY_MIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mib='&'#" ; else echo "# meta_memory_mib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "${VIASH_META_MEMORY_GIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gib='&'#" ; else echo "# meta_memory_gib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "${VIASH_META_MEMORY_TIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tib='&'#" ; else echo "# meta_memory_tib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "${VIASH_META_MEMORY_PIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pib='&'#" ; else echo "# meta_memory_pib="; fi ) + +## VIASH END + +# unset flags +[[ "\$par_d" == "false" ]] && unset par_d + +if [[ -n "\$par_gs_size" && -n "\$par_gs_fasta" ]]; then + echo "[error] Please provide only one of the following options to set genome size: --gs_size or --gs_fasta" + exit 1 +fi + +# run agat_sp_statistics +agat_sp_statistics.pl \\ + -i "\$par_gff" \\ + -o "\$par_output" \\ + \${par_plot:+-d} \\ + \${par_gs_size:+--gs "\${par_gs_size}"} \\ + \${par_gs_fasta:+--gs "\${par_gs_fasta}"} \\ + \${par_verbose:+--verbose "\${par_verbose}"} \\ + \${par_config:+--config "\${par_config}"} +VIASHMAIN +bash "\$tempscript" & +wait "\$!" + +VIASHEOF + + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # strip viash automount from file paths + + if [ ! -z "$VIASH_PAR_GFF" ]; then + VIASH_PAR_GFF=$(ViashDockerStripAutomount "$VIASH_PAR_GFF") + fi + if [ ! -z "$VIASH_PAR_GS_FASTA" ]; then + VIASH_PAR_GS_FASTA=$(ViashDockerStripAutomount "$VIASH_PAR_GS_FASTA") + fi + if [ ! -z "$VIASH_PAR_OUTPUT" ]; then + VIASH_PAR_OUTPUT=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT") + fi + if [ ! -z "$VIASH_PAR_CONFIG" ]; then + VIASH_PAR_CONFIG=$(ViashDockerStripAutomount "$VIASH_PAR_CONFIG") + fi + if [ ! -z "$VIASH_META_RESOURCES_DIR" ]; then + VIASH_META_RESOURCES_DIR=$(ViashDockerStripAutomount "$VIASH_META_RESOURCES_DIR") + fi + if [ ! -z "$VIASH_META_EXECUTABLE" ]; then + VIASH_META_EXECUTABLE=$(ViashDockerStripAutomount "$VIASH_META_EXECUTABLE") + fi + if [ ! -z "$VIASH_META_CONFIG" ]; then + VIASH_META_CONFIG=$(ViashDockerStripAutomount "$VIASH_META_CONFIG") + fi + if [ ! -z "$VIASH_META_TEMP_DIR" ]; then + VIASH_META_TEMP_DIR=$(ViashDockerStripAutomount "$VIASH_META_TEMP_DIR") + fi +fi + + +# check whether required files exist +if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -e "$VIASH_PAR_OUTPUT" ]; then + ViashError "Output file '$VIASH_PAR_OUTPUT' does not exist." + exit 1 +fi + + +exit 0 diff --git a/target/executable/arriba/.config.vsh.yaml b/target/executable/arriba/.config.vsh.yaml index df6a366b..4c6038ff 100644 --- a/target/executable/arriba/.config.vsh.yaml +++ b/target/executable/arriba/.config.vsh.yaml @@ -706,9 +706,9 @@ build_info: output: "target/executable/arriba" executable: "target/executable/arriba/arriba" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/arriba/arriba b/target/executable/arriba/arriba index d7e74f06..2bfca067 100755 --- a/target/executable/arriba/arriba +++ b/target/executable/arriba/arriba @@ -754,9 +754,9 @@ RUN arriba -h | grep 'Version:' 2>&1 | sed 's/Version:\s\(.*\)/arriba: "\1"/' > LABEL org.opencontainers.image.authors="Robrecht Cannoodt" LABEL org.opencontainers.image.description="Companion container for running component arriba" -LABEL org.opencontainers.image.created="2024-10-26T09:56:51Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:21Z" LABEL org.opencontainers.image.source="https://github.com/suhrig/arriba" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bbmap/bbmap_bbsplit/.config.vsh.yaml b/target/executable/bbmap/bbmap_bbsplit/.config.vsh.yaml index 34a88214..6a2c5c50 100644 --- a/target/executable/bbmap/bbmap_bbsplit/.config.vsh.yaml +++ b/target/executable/bbmap/bbmap_bbsplit/.config.vsh.yaml @@ -359,9 +359,9 @@ build_info: output: "target/executable/bbmap/bbmap_bbsplit" executable: "target/executable/bbmap/bbmap_bbsplit/bbmap_bbsplit" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bbmap/bbmap_bbsplit/bbmap_bbsplit b/target/executable/bbmap/bbmap_bbsplit/bbmap_bbsplit index b61d5c25..52083431 100755 --- a/target/executable/bbmap/bbmap_bbsplit/bbmap_bbsplit +++ b/target/executable/bbmap/bbmap_bbsplit/bbmap_bbsplit @@ -600,9 +600,9 @@ cp -r bbmap/* /usr/local/bin RUN bbsplit.sh --version 2>&1 | awk '/BBMap version/{print "BBMAP:", $NF}' > /var/software_versions.txt LABEL org.opencontainers.image.description="Companion container for running component bbmap bbmap_bbsplit" -LABEL org.opencontainers.image.created="2024-10-26T09:56:54Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:24Z" LABEL org.opencontainers.image.source="https://github.com/BioInfoTools/BBMap/blob/master/sh/bbsplit.sh" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bcftools/bcftools_annotate/.config.vsh.yaml b/target/executable/bcftools/bcftools_annotate/.config.vsh.yaml index fe77f5eb..5dcd2f17 100644 --- a/target/executable/bcftools/bcftools_annotate/.config.vsh.yaml +++ b/target/executable/bcftools/bcftools_annotate/.config.vsh.yaml @@ -469,9 +469,9 @@ build_info: output: "target/executable/bcftools/bcftools_annotate" executable: "target/executable/bcftools/bcftools_annotate/bcftools_annotate" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bcftools/bcftools_annotate/bcftools_annotate b/target/executable/bcftools/bcftools_annotate/bcftools_annotate index 9635826b..8d54a340 100755 --- a/target/executable/bcftools/bcftools_annotate/bcftools_annotate +++ b/target/executable/bcftools/bcftools_annotate/bcftools_annotate @@ -650,9 +650,9 @@ RUN echo "bcftools: \"$(bcftools --version | grep 'bcftools' | sed -n 's/^bcftoo LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bcftools bcftools_annotate" -LABEL org.opencontainers.image.created="2024-10-26T09:56:42Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:12Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bcftools/bcftools_concat/.config.vsh.yaml b/target/executable/bcftools/bcftools_concat/.config.vsh.yaml index 067851d0..39aaf690 100644 --- a/target/executable/bcftools/bcftools_concat/.config.vsh.yaml +++ b/target/executable/bcftools/bcftools_concat/.config.vsh.yaml @@ -335,9 +335,9 @@ build_info: output: "target/executable/bcftools/bcftools_concat" executable: "target/executable/bcftools/bcftools_concat/bcftools_concat" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bcftools/bcftools_concat/bcftools_concat b/target/executable/bcftools/bcftools_concat/bcftools_concat index 84c4ddb6..63ae35cb 100755 --- a/target/executable/bcftools/bcftools_concat/bcftools_concat +++ b/target/executable/bcftools/bcftools_concat/bcftools_concat @@ -566,9 +566,9 @@ RUN echo "bcftools: \"$(bcftools --version | grep 'bcftools' | sed -n 's/^bcftoo LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bcftools bcftools_concat" -LABEL org.opencontainers.image.created="2024-10-26T09:56:43Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:13Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bcftools/bcftools_norm/.config.vsh.yaml b/target/executable/bcftools/bcftools_norm/.config.vsh.yaml index 7dc50335..e1b53f7e 100644 --- a/target/executable/bcftools/bcftools_norm/.config.vsh.yaml +++ b/target/executable/bcftools/bcftools_norm/.config.vsh.yaml @@ -416,9 +416,9 @@ build_info: output: "target/executable/bcftools/bcftools_norm" executable: "target/executable/bcftools/bcftools_norm/bcftools_norm" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bcftools/bcftools_norm/bcftools_norm b/target/executable/bcftools/bcftools_norm/bcftools_norm index 5da999b0..8f1661d2 100755 --- a/target/executable/bcftools/bcftools_norm/bcftools_norm +++ b/target/executable/bcftools/bcftools_norm/bcftools_norm @@ -589,9 +589,9 @@ RUN echo "bcftools: \"$(bcftools --version | grep 'bcftools' | sed -n 's/^bcftoo LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bcftools bcftools_norm" -LABEL org.opencontainers.image.created="2024-10-26T09:56:44Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:14Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bcftools/bcftools_sort/.config.vsh.yaml b/target/executable/bcftools/bcftools_sort/.config.vsh.yaml index a52af99d..95bb973f 100644 --- a/target/executable/bcftools/bcftools_sort/.config.vsh.yaml +++ b/target/executable/bcftools/bcftools_sort/.config.vsh.yaml @@ -185,9 +185,9 @@ build_info: output: "target/executable/bcftools/bcftools_sort" executable: "target/executable/bcftools/bcftools_sort/bcftools_sort" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bcftools/bcftools_sort/bcftools_sort b/target/executable/bcftools/bcftools_sort/bcftools_sort index 7108f710..54c82d1e 100755 --- a/target/executable/bcftools/bcftools_sort/bcftools_sort +++ b/target/executable/bcftools/bcftools_sort/bcftools_sort @@ -483,9 +483,9 @@ RUN echo "bcftools: \"$(bcftools --version | grep 'bcftools' | sed -n 's/^bcftoo LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bcftools bcftools_sort" -LABEL org.opencontainers.image.created="2024-10-26T09:56:44Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:14Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bcftools/bcftools_stats/.config.vsh.yaml b/target/executable/bcftools/bcftools_stats/.config.vsh.yaml index a6d63527..cf6ffceb 100644 --- a/target/executable/bcftools/bcftools_stats/.config.vsh.yaml +++ b/target/executable/bcftools/bcftools_stats/.config.vsh.yaml @@ -458,9 +458,9 @@ build_info: output: "target/executable/bcftools/bcftools_stats" executable: "target/executable/bcftools/bcftools_stats/bcftools_stats" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bcftools/bcftools_stats/bcftools_stats b/target/executable/bcftools/bcftools_stats/bcftools_stats index 8c9179b3..d9e1da31 100755 --- a/target/executable/bcftools/bcftools_stats/bcftools_stats +++ b/target/executable/bcftools/bcftools_stats/bcftools_stats @@ -626,9 +626,9 @@ RUN echo "bcftools: \"$(bcftools --version | grep 'bcftools' | sed -n 's/^bcftoo LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bcftools bcftools_stats" -LABEL org.opencontainers.image.created="2024-10-26T09:56:43Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:13Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bcl_convert/.config.vsh.yaml b/target/executable/bcl_convert/.config.vsh.yaml index 2c48e103..dbefed7e 100644 --- a/target/executable/bcl_convert/.config.vsh.yaml +++ b/target/executable/bcl_convert/.config.vsh.yaml @@ -418,9 +418,9 @@ build_info: output: "target/executable/bcl_convert" executable: "target/executable/bcl_convert/bcl_convert" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bcl_convert/bcl_convert b/target/executable/bcl_convert/bcl_convert index c2c246eb..b262e57b 100755 --- a/target/executable/bcl_convert/bcl_convert +++ b/target/executable/bcl_convert/bcl_convert @@ -599,9 +599,9 @@ RUN echo "bcl-convert: \"$(bcl-convert -V 2>&1 >/dev/null | sed -n '/Version/ s/ LABEL org.opencontainers.image.authors="Toni Verbeiren, Dorien Roosen" LABEL org.opencontainers.image.description="Companion container for running component bcl_convert" -LABEL org.opencontainers.image.created="2024-10-26T09:56:49Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:19Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml b/target/executable/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml index 4b59fbbd..8bcf1fcb 100644 --- a/target/executable/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml +++ b/target/executable/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml @@ -274,9 +274,9 @@ build_info: output: "target/executable/bd_rhapsody/bd_rhapsody_make_reference" executable: "target/executable/bd_rhapsody/bd_rhapsody_make_reference/bd_rhapsody_make_reference" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bd_rhapsody/bd_rhapsody_make_reference/bd_rhapsody_make_reference b/target/executable/bd_rhapsody/bd_rhapsody_make_reference/bd_rhapsody_make_reference index f533c49a..732fa212 100755 --- a/target/executable/bd_rhapsody/bd_rhapsody_make_reference/bd_rhapsody_make_reference +++ b/target/executable/bd_rhapsody/bd_rhapsody_make_reference/bd_rhapsody_make_reference @@ -554,9 +554,9 @@ RUN VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1) RUN echo "bdgenomics/rhapsody: \"$VERSION\"" > /var/software_versions.txt LABEL org.opencontainers.image.authors="Robrecht Cannoodt, Weiwei Schultz" LABEL org.opencontainers.image.description="Companion container for running component bd_rhapsody bd_rhapsody_make_reference" -LABEL org.opencontainers.image.created="2024-10-26T09:56:46Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:16Z" LABEL org.opencontainers.image.source="https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1/Extra_Utilities/" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml b/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml index be8fcc28..fa967a06 100644 --- a/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml +++ b/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml @@ -1115,9 +1115,9 @@ build_info: output: "target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis" executable: "target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis b/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis index 0998366e..b3228441 100755 --- a/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis +++ b/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis @@ -954,9 +954,9 @@ RUN VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1) RUN echo "bdgenomics/rhapsody: \"$VERSION\"" > /var/software_versions.txt LABEL org.opencontainers.image.authors="Robrecht Cannoodt, Weiwei Schultz" LABEL org.opencontainers.image.description="Companion container for running component bd_rhapsody bd_rhapsody_sequence_analysis" -LABEL org.opencontainers.image.created="2024-10-26T09:56:47Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:16Z" LABEL org.opencontainers.image.source="https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_bamtofastq/.config.vsh.yaml b/target/executable/bedtools/bedtools_bamtofastq/.config.vsh.yaml index 83022dce..69a0daa4 100644 --- a/target/executable/bedtools/bedtools_bamtofastq/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_bamtofastq/.config.vsh.yaml @@ -187,9 +187,9 @@ build_info: output: "target/executable/bedtools/bedtools_bamtofastq" executable: "target/executable/bedtools/bedtools_bamtofastq/bedtools_bamtofastq" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_bamtofastq/bedtools_bamtofastq b/target/executable/bedtools/bedtools_bamtofastq/bedtools_bamtofastq index d6e24e86..0b372aee 100755 --- a/target/executable/bedtools/bedtools_bamtofastq/bedtools_bamtofastq +++ b/target/executable/bedtools/bedtools_bamtofastq/bedtools_bamtofastq @@ -483,9 +483,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_bamtofastq" -LABEL org.opencontainers.image.created="2024-10-26T09:56:50Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:20Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_bed12tobed6/.config.vsh.yaml b/target/executable/bedtools/bedtools_bed12tobed6/.config.vsh.yaml index f3365365..19e18392 100644 --- a/target/executable/bedtools/bedtools_bed12tobed6/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_bed12tobed6/.config.vsh.yaml @@ -176,9 +176,9 @@ build_info: output: "target/executable/bedtools/bedtools_bed12tobed6" executable: "target/executable/bedtools/bedtools_bed12tobed6/bedtools_bed12tobed6" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_bed12tobed6/bedtools_bed12tobed6 b/target/executable/bedtools/bedtools_bed12tobed6/bedtools_bed12tobed6 index a20eab99..89c98e2d 100755 --- a/target/executable/bedtools/bedtools_bed12tobed6/bedtools_bed12tobed6 +++ b/target/executable/bedtools/bedtools_bed12tobed6/bedtools_bed12tobed6 @@ -480,9 +480,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_bed12tobed6" -LABEL org.opencontainers.image.created="2024-10-26T09:56:51Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:21Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_bedtobam/.config.vsh.yaml b/target/executable/bedtools/bedtools_bedtobam/.config.vsh.yaml index c282d272..b4f824a4 100644 --- a/target/executable/bedtools/bedtools_bedtobam/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_bedtobam/.config.vsh.yaml @@ -214,9 +214,9 @@ build_info: output: "target/executable/bedtools/bedtools_bedtobam" executable: "target/executable/bedtools/bedtools_bedtobam/bedtools_bedtobam" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_bedtobam/bedtools_bedtobam b/target/executable/bedtools/bedtools_bedtobam/bedtools_bedtobam index 2d836d80..cad7c621 100755 --- a/target/executable/bedtools/bedtools_bedtobam/bedtools_bedtobam +++ b/target/executable/bedtools/bedtools_bedtobam/bedtools_bedtobam @@ -496,9 +496,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_bedtobam" -LABEL org.opencontainers.image.created="2024-10-26T09:56:52Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:22Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_genomecov/.config.vsh.yaml b/target/executable/bedtools/bedtools_genomecov/.config.vsh.yaml index e9b45998..0fa1fd43 100644 --- a/target/executable/bedtools/bedtools_genomecov/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_genomecov/.config.vsh.yaml @@ -337,9 +337,9 @@ build_info: output: "target/executable/bedtools/bedtools_genomecov" executable: "target/executable/bedtools/bedtools_genomecov/bedtools_genomecov" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_genomecov/bedtools_genomecov b/target/executable/bedtools/bedtools_genomecov/bedtools_genomecov index ce018aab..397c9a3e 100755 --- a/target/executable/bedtools/bedtools_genomecov/bedtools_genomecov +++ b/target/executable/bedtools/bedtools_genomecov/bedtools_genomecov @@ -591,9 +591,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_genomecov" -LABEL org.opencontainers.image.created="2024-10-26T09:56:50Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:20Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_getfasta/.config.vsh.yaml b/target/executable/bedtools/bedtools_getfasta/.config.vsh.yaml index 31ccdbdd..0ec92d14 100644 --- a/target/executable/bedtools/bedtools_getfasta/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_getfasta/.config.vsh.yaml @@ -232,9 +232,9 @@ build_info: output: "target/executable/bedtools/bedtools_getfasta" executable: "target/executable/bedtools/bedtools_getfasta/bedtools_getfasta" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_getfasta/bedtools_getfasta b/target/executable/bedtools/bedtools_getfasta/bedtools_getfasta index 1c178cfa..ce3a254a 100755 --- a/target/executable/bedtools/bedtools_getfasta/bedtools_getfasta +++ b/target/executable/bedtools/bedtools_getfasta/bedtools_getfasta @@ -526,9 +526,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Dries Schaumont" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_getfasta" -LABEL org.opencontainers.image.created="2024-10-26T09:56:51Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:22Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_groupby/.config.vsh.yaml b/target/executable/bedtools/bedtools_groupby/.config.vsh.yaml index 3a5481b4..32f4fafd 100644 --- a/target/executable/bedtools/bedtools_groupby/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_groupby/.config.vsh.yaml @@ -273,9 +273,9 @@ build_info: output: "target/executable/bedtools/bedtools_groupby" executable: "target/executable/bedtools/bedtools_groupby/bedtools_groupby" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_groupby/bedtools_groupby b/target/executable/bedtools/bedtools_groupby/bedtools_groupby index 5f47151f..dc5c2c25 100755 --- a/target/executable/bedtools/bedtools_groupby/bedtools_groupby +++ b/target/executable/bedtools/bedtools_groupby/bedtools_groupby @@ -552,9 +552,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_groupby" -LABEL org.opencontainers.image.created="2024-10-26T09:56:51Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:21Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_intersect/.config.vsh.yaml b/target/executable/bedtools/bedtools_intersect/.config.vsh.yaml index b9b22b80..3ed95f00 100644 --- a/target/executable/bedtools/bedtools_intersect/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_intersect/.config.vsh.yaml @@ -410,9 +410,9 @@ build_info: output: "target/executable/bedtools/bedtools_intersect" executable: "target/executable/bedtools/bedtools_intersect/bedtools_intersect" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_intersect/bedtools_intersect b/target/executable/bedtools/bedtools_intersect/bedtools_intersect index b7ce7ebf..22cd99db 100755 --- a/target/executable/bedtools/bedtools_intersect/bedtools_intersect +++ b/target/executable/bedtools/bedtools_intersect/bedtools_intersect @@ -633,9 +633,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_intersect" -LABEL org.opencontainers.image.created="2024-10-26T09:56:49Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:19Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_links/.config.vsh.yaml b/target/executable/bedtools/bedtools_links/.config.vsh.yaml index 1cc9f689..29640690 100644 --- a/target/executable/bedtools/bedtools_links/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_links/.config.vsh.yaml @@ -210,9 +210,9 @@ build_info: output: "target/executable/bedtools/bedtools_links" executable: "target/executable/bedtools/bedtools_links/bedtools_links" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_links/bedtools_links b/target/executable/bedtools/bedtools_links/bedtools_links index a2b610c6..0b7c6cfb 100755 --- a/target/executable/bedtools/bedtools_links/bedtools_links +++ b/target/executable/bedtools/bedtools_links/bedtools_links @@ -500,9 +500,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_links" -LABEL org.opencontainers.image.created="2024-10-26T09:56:50Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:20Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_merge/.config.vsh.yaml b/target/executable/bedtools/bedtools_merge/.config.vsh.yaml index 8eaf6cbb..3e9d409c 100644 --- a/target/executable/bedtools/bedtools_merge/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_merge/.config.vsh.yaml @@ -279,9 +279,9 @@ build_info: output: "target/executable/bedtools/bedtools_merge" executable: "target/executable/bedtools/bedtools_merge/bedtools_merge" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_merge/bedtools_merge b/target/executable/bedtools/bedtools_merge/bedtools_merge index 55b3ce7e..5a66fd02 100755 --- a/target/executable/bedtools/bedtools_merge/bedtools_merge +++ b/target/executable/bedtools/bedtools_merge/bedtools_merge @@ -558,9 +558,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_merge" -LABEL org.opencontainers.image.created="2024-10-26T09:56:51Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:21Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/bedtools/bedtools_sort/.config.vsh.yaml b/target/executable/bedtools/bedtools_sort/.config.vsh.yaml index dd2b4778..18e53863 100644 --- a/target/executable/bedtools/bedtools_sort/.config.vsh.yaml +++ b/target/executable/bedtools/bedtools_sort/.config.vsh.yaml @@ -222,9 +222,9 @@ build_info: output: "target/executable/bedtools/bedtools_sort" executable: "target/executable/bedtools/bedtools_sort/bedtools_sort" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/bedtools/bedtools_sort/bedtools_sort b/target/executable/bedtools/bedtools_sort/bedtools_sort index bf7292e0..12bcfbee 100755 --- a/target/executable/bedtools/bedtools_sort/bedtools_sort +++ b/target/executable/bedtools/bedtools_sort/bedtools_sort @@ -509,9 +509,9 @@ RUN echo "bedtools: \"$(bedtools --version | sed -n 's/^bedtools //p')\"" > /var LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component bedtools bedtools_sort" -LABEL org.opencontainers.image.created="2024-10-26T09:56:49Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:19Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/busco/busco_download_datasets/.config.vsh.yaml b/target/executable/busco/busco_download_datasets/.config.vsh.yaml index 1a141d06..51570e50 100644 --- a/target/executable/busco/busco_download_datasets/.config.vsh.yaml +++ b/target/executable/busco/busco_download_datasets/.config.vsh.yaml @@ -158,9 +158,9 @@ build_info: output: "target/executable/busco/busco_download_datasets" executable: "target/executable/busco/busco_download_datasets/busco_download_datasets" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/busco/busco_download_datasets/busco_download_datasets b/target/executable/busco/busco_download_datasets/busco_download_datasets index 108264fe..5a6c03a2 100755 --- a/target/executable/busco/busco_download_datasets/busco_download_datasets +++ b/target/executable/busco/busco_download_datasets/busco_download_datasets @@ -475,9 +475,9 @@ RUN busco --version | sed 's/BUSCO\s\(.*\)/busco: "\1"/' > /var/software_version LABEL org.opencontainers.image.authors="Dorien Roosen" LABEL org.opencontainers.image.description="Companion container for running component busco busco_download_datasets" -LABEL org.opencontainers.image.created="2024-10-26T09:56:49Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:18Z" LABEL org.opencontainers.image.source="https://gitlab.com/ezlab/busco" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/busco/busco_list_datasets/.config.vsh.yaml b/target/executable/busco/busco_list_datasets/.config.vsh.yaml index 1a605f2e..67ad64c8 100644 --- a/target/executable/busco/busco_list_datasets/.config.vsh.yaml +++ b/target/executable/busco/busco_list_datasets/.config.vsh.yaml @@ -145,9 +145,9 @@ build_info: output: "target/executable/busco/busco_list_datasets" executable: "target/executable/busco/busco_list_datasets/busco_list_datasets" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/busco/busco_list_datasets/busco_list_datasets b/target/executable/busco/busco_list_datasets/busco_list_datasets index 9e344194..a0e95e17 100755 --- a/target/executable/busco/busco_list_datasets/busco_list_datasets +++ b/target/executable/busco/busco_list_datasets/busco_list_datasets @@ -465,9 +465,9 @@ RUN busco --version | sed 's/BUSCO\s\(.*\)/busco: "\1"/' > /var/software_version LABEL org.opencontainers.image.authors="Dorien Roosen" LABEL org.opencontainers.image.description="Companion container for running component busco busco_list_datasets" -LABEL org.opencontainers.image.created="2024-10-26T09:56:48Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:18Z" LABEL org.opencontainers.image.source="https://gitlab.com/ezlab/busco" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/busco/busco_run/.config.vsh.yaml b/target/executable/busco/busco_run/.config.vsh.yaml index e00af531..6dc36832 100644 --- a/target/executable/busco/busco_run/.config.vsh.yaml +++ b/target/executable/busco/busco_run/.config.vsh.yaml @@ -423,9 +423,9 @@ build_info: output: "target/executable/busco/busco_run" executable: "target/executable/busco/busco_run/busco_run" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/busco/busco_run/busco_run b/target/executable/busco/busco_run/busco_run index 87c8a53a..bd0d4082 100755 --- a/target/executable/busco/busco_run/busco_run +++ b/target/executable/busco/busco_run/busco_run @@ -632,9 +632,9 @@ RUN busco --version | sed 's/BUSCO\s\(.*\)/busco: "\1"/' > /var/software_version LABEL org.opencontainers.image.authors="Dorien Roosen" LABEL org.opencontainers.image.description="Companion container for running component busco busco_run" -LABEL org.opencontainers.image.created="2024-10-26T09:56:48Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:18Z" LABEL org.opencontainers.image.source="https://gitlab.com/ezlab/busco" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/cutadapt/.config.vsh.yaml b/target/executable/cutadapt/.config.vsh.yaml index 2581b55d..38ebf207 100644 --- a/target/executable/cutadapt/.config.vsh.yaml +++ b/target/executable/cutadapt/.config.vsh.yaml @@ -740,9 +740,9 @@ build_info: output: "target/executable/cutadapt" executable: "target/executable/cutadapt/cutadapt" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/cutadapt/cutadapt b/target/executable/cutadapt/cutadapt index deda9dc7..835cd6c4 100755 --- a/target/executable/cutadapt/cutadapt +++ b/target/executable/cutadapt/cutadapt @@ -831,9 +831,9 @@ RUN cutadapt --version | sed 's/\(.*\)/cutadapt: "\1"/' > /var/software_versions LABEL org.opencontainers.image.authors="Toni Verbeiren" LABEL org.opencontainers.image.description="Companion container for running component cutadapt" -LABEL org.opencontainers.image.created="2024-10-26T09:56:40Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:09Z" LABEL org.opencontainers.image.source="https://github.com/marcelm/cutadapt" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/falco/.config.vsh.yaml b/target/executable/falco/.config.vsh.yaml index 2faac781..494b0e4c 100644 --- a/target/executable/falco/.config.vsh.yaml +++ b/target/executable/falco/.config.vsh.yaml @@ -317,9 +317,9 @@ build_info: output: "target/executable/falco" executable: "target/executable/falco/falco" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/falco/falco b/target/executable/falco/falco index 6f9c17be..7d377050 100755 --- a/target/executable/falco/falco +++ b/target/executable/falco/falco @@ -589,9 +589,9 @@ RUN echo "falco: \"$(falco -v | sed -n 's/^falco //p')\"" > /var/software_versio LABEL org.opencontainers.image.authors="Toni Verbeiren" LABEL org.opencontainers.image.description="Companion container for running component falco" -LABEL org.opencontainers.image.created="2024-10-26T09:56:42Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:11Z" LABEL org.opencontainers.image.source="https://github.com/smithlabcode/falco" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/fastp/.config.vsh.yaml b/target/executable/fastp/.config.vsh.yaml index 343a99fe..dfb037a6 100644 --- a/target/executable/fastp/.config.vsh.yaml +++ b/target/executable/fastp/.config.vsh.yaml @@ -1083,9 +1083,9 @@ build_info: output: "target/executable/fastp" executable: "target/executable/fastp/fastp" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/fastp/fastp b/target/executable/fastp/fastp index adef46fd..28df9eca 100755 --- a/target/executable/fastp/fastp +++ b/target/executable/fastp/fastp @@ -1028,9 +1028,9 @@ RUN fastp --version 2>&1 | sed 's# #: "#;s#$#"#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Robrecht Cannoodt" LABEL org.opencontainers.image.description="Companion container for running component fastp" -LABEL org.opencontainers.image.created="2024-10-26T09:56:46Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:15Z" LABEL org.opencontainers.image.source="https://github.com/OpenGene/fastp" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/fastqc/.config.vsh.yaml b/target/executable/fastqc/.config.vsh.yaml index 0ace19d4..6cc331bd 100644 --- a/target/executable/fastqc/.config.vsh.yaml +++ b/target/executable/fastqc/.config.vsh.yaml @@ -340,9 +340,9 @@ build_info: output: "target/executable/fastqc" executable: "target/executable/fastqc/fastqc" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/fastqc/fastqc b/target/executable/fastqc/fastqc index e4c599a9..f647813a 100755 --- a/target/executable/fastqc/fastqc +++ b/target/executable/fastqc/fastqc @@ -601,9 +601,9 @@ RUN echo "fastqc: $(fastqc --version | sed -n 's/^FastQC //p')" > /var/software_ LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component fastqc" -LABEL org.opencontainers.image.created="2024-10-26T09:56:46Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:16Z" LABEL org.opencontainers.image.source="https://github.com/s-andrews/FastQC" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/featurecounts/.config.vsh.yaml b/target/executable/featurecounts/.config.vsh.yaml index 57275688..6b60deb6 100644 --- a/target/executable/featurecounts/.config.vsh.yaml +++ b/target/executable/featurecounts/.config.vsh.yaml @@ -645,9 +645,9 @@ build_info: output: "target/executable/featurecounts" executable: "target/executable/featurecounts/featurecounts" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/featurecounts/featurecounts b/target/executable/featurecounts/featurecounts index cbe51b98..2fcdf889 100755 --- a/target/executable/featurecounts/featurecounts +++ b/target/executable/featurecounts/featurecounts @@ -754,9 +754,9 @@ RUN featureCounts -v 2>&1 | sed 's/featureCounts v\([0-9.]*\)/featureCounts: \1/ LABEL org.opencontainers.image.authors="Sai Nirmayi Yasa" LABEL org.opencontainers.image.description="Companion container for running component featurecounts" -LABEL org.opencontainers.image.created="2024-10-26T09:56:42Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:12Z" LABEL org.opencontainers.image.source="https://github.com/ShiLab-Bioinformatics/subread" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/fq_subsample/.config.vsh.yaml b/target/executable/fq_subsample/.config.vsh.yaml index 4002b5e8..8ee93f02 100644 --- a/target/executable/fq_subsample/.config.vsh.yaml +++ b/target/executable/fq_subsample/.config.vsh.yaml @@ -190,9 +190,9 @@ build_info: output: "target/executable/fq_subsample" executable: "target/executable/fq_subsample/fq_subsample" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/fq_subsample/fq_subsample b/target/executable/fq_subsample/fq_subsample index 29f31092..5123ea27 100755 --- a/target/executable/fq_subsample/fq_subsample +++ b/target/executable/fq_subsample/fq_subsample @@ -493,9 +493,9 @@ mv target/release/fq /usr/local/bin/ && \ cd / && rm -rf /fq LABEL org.opencontainers.image.description="Companion container for running component fq_subsample" -LABEL org.opencontainers.image.created="2024-10-26T09:56:43Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:12Z" LABEL org.opencontainers.image.source="https://github.com/stjude-rust-labs/fq" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/gffread/.config.vsh.yaml b/target/executable/gffread/.config.vsh.yaml index 3265ace6..ef6a6b98 100644 --- a/target/executable/gffread/.config.vsh.yaml +++ b/target/executable/gffread/.config.vsh.yaml @@ -685,9 +685,9 @@ build_info: output: "target/executable/gffread" executable: "target/executable/gffread/gffread" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/gffread/gffread b/target/executable/gffread/gffread index 9f48243b..305d5ea4 100755 --- a/target/executable/gffread/gffread +++ b/target/executable/gffread/gffread @@ -807,9 +807,9 @@ RUN echo "gffread: \"$(gffread --version 2>&1)\"" > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component gffread" -LABEL org.opencontainers.image.created="2024-10-26T09:56:46Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:16Z" LABEL org.opencontainers.image.source="https://github.com/gpertea/gffread" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/kallisto/kallisto_index/.config.vsh.yaml b/target/executable/kallisto/kallisto_index/.config.vsh.yaml index c8833f19..70155d2b 100644 --- a/target/executable/kallisto/kallisto_index/.config.vsh.yaml +++ b/target/executable/kallisto/kallisto_index/.config.vsh.yaml @@ -218,9 +218,9 @@ build_info: output: "target/executable/kallisto/kallisto_index" executable: "target/executable/kallisto/kallisto_index/kallisto_index" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/kallisto/kallisto_index/kallisto_index b/target/executable/kallisto/kallisto_index/kallisto_index index 3fe24fdc..92586614 100755 --- a/target/executable/kallisto/kallisto_index/kallisto_index +++ b/target/executable/kallisto/kallisto_index/kallisto_index @@ -506,9 +506,9 @@ tar -xzf kallisto_linux-v0.50.1.tar.gz && \ mv kallisto/kallisto /usr/local/bin/ LABEL org.opencontainers.image.description="Companion container for running component kallisto kallisto_index" -LABEL org.opencontainers.image.created="2024-10-26T09:56:51Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:22Z" LABEL org.opencontainers.image.source="https://github.com/pachterlab/kallisto" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/kallisto/kallisto_quant/.config.vsh.yaml b/target/executable/kallisto/kallisto_quant/.config.vsh.yaml index 82995dd6..51855177 100644 --- a/target/executable/kallisto/kallisto_quant/.config.vsh.yaml +++ b/target/executable/kallisto/kallisto_quant/.config.vsh.yaml @@ -234,9 +234,9 @@ build_info: output: "target/executable/kallisto/kallisto_quant" executable: "target/executable/kallisto/kallisto_quant/kallisto_quant" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/kallisto/kallisto_quant/kallisto_quant b/target/executable/kallisto/kallisto_quant/kallisto_quant index 1472fde0..5112ec5e 100755 --- a/target/executable/kallisto/kallisto_quant/kallisto_quant +++ b/target/executable/kallisto/kallisto_quant/kallisto_quant @@ -518,9 +518,9 @@ mv kallisto/kallisto /usr/local/bin/ RUN echo "kallisto: $(kallisto version | sed 's/kallisto, version //')" > /var/software_versions.txt LABEL org.opencontainers.image.description="Companion container for running component kallisto kallisto_quant" -LABEL org.opencontainers.image.created="2024-10-26T09:56:52Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:22Z" LABEL org.opencontainers.image.source="https://github.com/pachterlab/kallisto" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/lofreq/lofreq_call/.config.vsh.yaml b/target/executable/lofreq/lofreq_call/.config.vsh.yaml index 3b11978d..9bb79963 100644 --- a/target/executable/lofreq/lofreq_call/.config.vsh.yaml +++ b/target/executable/lofreq/lofreq_call/.config.vsh.yaml @@ -507,9 +507,9 @@ build_info: output: "target/executable/lofreq/lofreq_call" executable: "target/executable/lofreq/lofreq_call/lofreq_call" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/lofreq/lofreq_call/lofreq_call b/target/executable/lofreq/lofreq_call/lofreq_call index 85d99750..5a411a76 100755 --- a/target/executable/lofreq/lofreq_call/lofreq_call +++ b/target/executable/lofreq/lofreq_call/lofreq_call @@ -656,9 +656,9 @@ echo "lofreq: $version" > /var/software_versions.txt LABEL org.opencontainers.image.authors="Kai Waldrant" LABEL org.opencontainers.image.description="Companion container for running component lofreq lofreq_call" -LABEL org.opencontainers.image.created="2024-10-26T09:56:52Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:23Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/lofreq/lofreq_indelqual/.config.vsh.yaml b/target/executable/lofreq/lofreq_indelqual/.config.vsh.yaml index 2c224381..efef3cd7 100644 --- a/target/executable/lofreq/lofreq_indelqual/.config.vsh.yaml +++ b/target/executable/lofreq/lofreq_indelqual/.config.vsh.yaml @@ -215,9 +215,9 @@ build_info: output: "target/executable/lofreq/lofreq_indelqual" executable: "target/executable/lofreq/lofreq_indelqual/lofreq_indelqual" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/lofreq/lofreq_indelqual/lofreq_indelqual b/target/executable/lofreq/lofreq_indelqual/lofreq_indelqual index 01095302..ed1d85e5 100755 --- a/target/executable/lofreq/lofreq_indelqual/lofreq_indelqual +++ b/target/executable/lofreq/lofreq_indelqual/lofreq_indelqual @@ -501,9 +501,9 @@ echo "lofreq: $version" > /var/software_versions.txt LABEL org.opencontainers.image.authors="Kai Waldrant" LABEL org.opencontainers.image.description="Companion container for running component lofreq lofreq_indelqual" -LABEL org.opencontainers.image.created="2024-10-26T09:56:53Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:23Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/multiqc/.config.vsh.yaml b/target/executable/multiqc/.config.vsh.yaml index 9cda38f0..5bb5de07 100644 --- a/target/executable/multiqc/.config.vsh.yaml +++ b/target/executable/multiqc/.config.vsh.yaml @@ -456,9 +456,9 @@ build_info: output: "target/executable/multiqc" executable: "target/executable/multiqc/multiqc" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/multiqc/multiqc b/target/executable/multiqc/multiqc index 8fed1aac..168effb8 100755 --- a/target/executable/multiqc/multiqc +++ b/target/executable/multiqc/multiqc @@ -637,9 +637,9 @@ RUN multiqc --version | sed 's/multiqc, version\s\(.*\)/multiqc: "\1"/' > /var/s LABEL org.opencontainers.image.authors="Dorien Roosen" LABEL org.opencontainers.image.description="Companion container for running component multiqc" -LABEL org.opencontainers.image.created="2024-10-26T09:56:48Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:18Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/nanoplot/.config.vsh.yaml b/target/executable/nanoplot/.config.vsh.yaml index a5e46673..155935e4 100644 --- a/target/executable/nanoplot/.config.vsh.yaml +++ b/target/executable/nanoplot/.config.vsh.yaml @@ -492,9 +492,9 @@ build_info: output: "target/executable/nanoplot" executable: "target/executable/nanoplot/nanoplot" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/nanoplot/nanoplot b/target/executable/nanoplot/nanoplot index d60e077c..ed0f4c3e 100755 --- a/target/executable/nanoplot/nanoplot +++ b/target/executable/nanoplot/nanoplot @@ -661,9 +661,9 @@ RUN version=$(NanoPlot --version) && \ echo "$version" > /var/software_versions.txt LABEL org.opencontainers.image.description="Companion container for running component nanoplot" -LABEL org.opencontainers.image.created="2024-10-26T09:56:48Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:18Z" LABEL org.opencontainers.image.source="https://github.com/wdecoster/NanoPlot" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/pear/.config.vsh.yaml b/target/executable/pear/.config.vsh.yaml index 296cb415..cf0008d5 100644 --- a/target/executable/pear/.config.vsh.yaml +++ b/target/executable/pear/.config.vsh.yaml @@ -398,9 +398,9 @@ build_info: output: "target/executable/pear" executable: "target/executable/pear/pear" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/pear/pear b/target/executable/pear/pear index d2e8a171..b0728d72 100755 --- a/target/executable/pear/pear +++ b/target/executable/pear/pear @@ -597,9 +597,9 @@ echo "pear: $version" > /var/software_versions.txt LABEL org.opencontainers.image.authors="Kai Waldrant" LABEL org.opencontainers.image.description="Companion container for running component pear" -LABEL org.opencontainers.image.created="2024-10-26T09:56:39Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:08Z" LABEL org.opencontainers.image.source="https://github.com/tseemann/PEAR" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/qualimap/qualimap_rnaseq/.config.vsh.yaml b/target/executable/qualimap/qualimap_rnaseq/.config.vsh.yaml index b104dda8..6fde6c8a 100644 --- a/target/executable/qualimap/qualimap_rnaseq/.config.vsh.yaml +++ b/target/executable/qualimap/qualimap_rnaseq/.config.vsh.yaml @@ -264,9 +264,9 @@ build_info: output: "target/executable/qualimap/qualimap_rnaseq" executable: "target/executable/qualimap/qualimap_rnaseq/qualimap_rnaseq" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/qualimap/qualimap_rnaseq/qualimap_rnaseq b/target/executable/qualimap/qualimap_rnaseq/qualimap_rnaseq index 22d67bbe..a6dba41b 100755 --- a/target/executable/qualimap/qualimap_rnaseq/qualimap_rnaseq +++ b/target/executable/qualimap/qualimap_rnaseq/qualimap_rnaseq @@ -527,9 +527,9 @@ RUN echo QualiMap: $(qualimap 2>&1 | grep QualiMap | sed 's/^.*QualiMap//') > /v LABEL org.opencontainers.image.authors="Dorien Roosen" LABEL org.opencontainers.image.description="Companion container for running component qualimap qualimap_rnaseq" -LABEL org.opencontainers.image.created="2024-10-26T09:56:43Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:13Z" LABEL org.opencontainers.image.source="https://bitbucket.org/kokonech/qualimap/commits/branch/master" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/rsem/rsem_calculate_expression/.config.vsh.yaml b/target/executable/rsem/rsem_calculate_expression/.config.vsh.yaml index 7d8b41f5..c733c026 100644 --- a/target/executable/rsem/rsem_calculate_expression/.config.vsh.yaml +++ b/target/executable/rsem/rsem_calculate_expression/.config.vsh.yaml @@ -852,9 +852,9 @@ build_info: output: "target/executable/rsem/rsem_calculate_expression" executable: "target/executable/rsem/rsem_calculate_expression/rsem_calculate_expression" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/rsem/rsem_calculate_expression/rsem_calculate_expression b/target/executable/rsem/rsem_calculate_expression/rsem_calculate_expression index 2113d996..8134770e 100755 --- a/target/executable/rsem/rsem_calculate_expression/rsem_calculate_expression +++ b/target/executable/rsem/rsem_calculate_expression/rsem_calculate_expression @@ -991,9 +991,9 @@ echo "bowtie: `bowtie --version | grep -oP 'bowtie-align-s version \K\d+\.\d+\.\ echo "HISAT2: `hisat2 --version | grep -oP 'hisat2-align-s version \K\d+\.\d+\.\d+'`" >> /var/software_versions.txt LABEL org.opencontainers.image.description="Companion container for running component rsem rsem_calculate_expression" -LABEL org.opencontainers.image.created="2024-10-26T09:56:41Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:11Z" LABEL org.opencontainers.image.source="https://github.com/deweylab/RSEM" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/rsem/rsem_prepare_reference/.config.vsh.yaml b/target/executable/rsem/rsem_prepare_reference/.config.vsh.yaml index 433ff31e..55c195e0 100644 --- a/target/executable/rsem/rsem_prepare_reference/.config.vsh.yaml +++ b/target/executable/rsem/rsem_prepare_reference/.config.vsh.yaml @@ -416,9 +416,9 @@ build_info: output: "target/executable/rsem/rsem_prepare_reference" executable: "target/executable/rsem/rsem_prepare_reference/rsem_prepare_reference" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/rsem/rsem_prepare_reference/rsem_prepare_reference b/target/executable/rsem/rsem_prepare_reference/rsem_prepare_reference index 92d69355..1b3b4987 100755 --- a/target/executable/rsem/rsem_prepare_reference/rsem_prepare_reference +++ b/target/executable/rsem/rsem_prepare_reference/rsem_prepare_reference @@ -656,9 +656,9 @@ echo "HISAT2: `hisat2 --version | grep -oP 'hisat2-align-s version \K\d+\.\d+\.\ LABEL org.opencontainers.image.authors="Sai Nirmayi Yasa" LABEL org.opencontainers.image.description="Companion container for running component rsem rsem_prepare_reference" -LABEL org.opencontainers.image.created="2024-10-26T09:56:40Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:10Z" LABEL org.opencontainers.image.source="https://github.com/deweylab/RSEM" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/salmon/salmon_index/.config.vsh.yaml b/target/executable/salmon/salmon_index/.config.vsh.yaml index a095beb6..7712414d 100644 --- a/target/executable/salmon/salmon_index/.config.vsh.yaml +++ b/target/executable/salmon/salmon_index/.config.vsh.yaml @@ -277,9 +277,9 @@ build_info: output: "target/executable/salmon/salmon_index" executable: "target/executable/salmon/salmon_index/salmon_index" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/salmon/salmon_index/salmon_index b/target/executable/salmon/salmon_index/salmon_index index eca4aa89..d3202ec5 100755 --- a/target/executable/salmon/salmon_index/salmon_index +++ b/target/executable/salmon/salmon_index/salmon_index @@ -546,9 +546,9 @@ RUN salmon index -v 2>&1 | sed 's/salmon \([0-9.]*\)/salmon: \1/' > /var/softwar LABEL org.opencontainers.image.authors="Sai Nirmayi Yasa" LABEL org.opencontainers.image.description="Companion container for running component salmon salmon_index" -LABEL org.opencontainers.image.created="2024-10-26T09:56:47Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:17Z" LABEL org.opencontainers.image.source="https://github.com/COMBINE-lab/salmon" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/salmon/salmon_quant/.config.vsh.yaml b/target/executable/salmon/salmon_quant/.config.vsh.yaml index 7c447111..dd56ab36 100644 --- a/target/executable/salmon/salmon_quant/.config.vsh.yaml +++ b/target/executable/salmon/salmon_quant/.config.vsh.yaml @@ -1173,9 +1173,9 @@ build_info: output: "target/executable/salmon/salmon_quant" executable: "target/executable/salmon/salmon_quant/salmon_quant" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/salmon/salmon_quant/salmon_quant b/target/executable/salmon/salmon_quant/salmon_quant index 532de0f6..ae600470 100755 --- a/target/executable/salmon/salmon_quant/salmon_quant +++ b/target/executable/salmon/salmon_quant/salmon_quant @@ -1168,9 +1168,9 @@ RUN salmon index -v 2>&1 | sed 's/salmon \([0-9.]*\)/salmon: \1/' > /var/softwar LABEL org.opencontainers.image.authors="Sai Nirmayi Yasa" LABEL org.opencontainers.image.description="Companion container for running component salmon salmon_quant" -LABEL org.opencontainers.image.created="2024-10-26T09:56:47Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:17Z" LABEL org.opencontainers.image.source="https://github.com/COMBINE-lab/salmon" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_collate/.config.vsh.yaml b/target/executable/samtools/samtools_collate/.config.vsh.yaml index a0543212..73e7c4ad 100644 --- a/target/executable/samtools/samtools_collate/.config.vsh.yaml +++ b/target/executable/samtools/samtools_collate/.config.vsh.yaml @@ -264,9 +264,9 @@ build_info: output: "target/executable/samtools/samtools_collate" executable: "target/executable/samtools/samtools_collate/samtools_collate" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_collate/samtools_collate b/target/executable/samtools/samtools_collate/samtools_collate index 614ca401..75d985fe 100755 --- a/target/executable/samtools/samtools_collate/samtools_collate +++ b/target/executable/samtools/samtools_collate/samtools_collate @@ -519,9 +519,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_collate" -LABEL org.opencontainers.image.created="2024-10-26T09:56:41Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:10Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_faidx/.config.vsh.yaml b/target/executable/samtools/samtools_faidx/.config.vsh.yaml index 78aa3a0f..7b2b03d8 100644 --- a/target/executable/samtools/samtools_faidx/.config.vsh.yaml +++ b/target/executable/samtools/samtools_faidx/.config.vsh.yaml @@ -243,9 +243,9 @@ build_info: output: "target/executable/samtools/samtools_faidx" executable: "target/executable/samtools/samtools_faidx/samtools_faidx" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_faidx/samtools_faidx b/target/executable/samtools/samtools_faidx/samtools_faidx index 1d55ff08..c71964f1 100755 --- a/target/executable/samtools/samtools_faidx/samtools_faidx +++ b/target/executable/samtools/samtools_faidx/samtools_faidx @@ -512,9 +512,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_faidx" -LABEL org.opencontainers.image.created="2024-10-26T09:56:40Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:09Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_fasta/.config.vsh.yaml b/target/executable/samtools/samtools_fasta/.config.vsh.yaml index dfb5981a..0b6b957e 100644 --- a/target/executable/samtools/samtools_fasta/.config.vsh.yaml +++ b/target/executable/samtools/samtools_fasta/.config.vsh.yaml @@ -433,9 +433,9 @@ build_info: output: "target/executable/samtools/samtools_fasta" executable: "target/executable/samtools/samtools_fasta/samtools_fasta" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_fasta/samtools_fasta b/target/executable/samtools/samtools_fasta/samtools_fasta index fce75365..5896a136 100755 --- a/target/executable/samtools/samtools_fasta/samtools_fasta +++ b/target/executable/samtools/samtools_fasta/samtools_fasta @@ -625,9 +625,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_fasta" -LABEL org.opencontainers.image.created="2024-10-26T09:56:41Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:10Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_fastq/.config.vsh.yaml b/target/executable/samtools/samtools_fastq/.config.vsh.yaml index 5b924cec..9cbbb07f 100644 --- a/target/executable/samtools/samtools_fastq/.config.vsh.yaml +++ b/target/executable/samtools/samtools_fastq/.config.vsh.yaml @@ -433,9 +433,9 @@ build_info: output: "target/executable/samtools/samtools_fastq" executable: "target/executable/samtools/samtools_fastq/samtools_fastq" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_fastq/samtools_fastq b/target/executable/samtools/samtools_fastq/samtools_fastq index c9d8f9b3..1e202ba3 100755 --- a/target/executable/samtools/samtools_fastq/samtools_fastq +++ b/target/executable/samtools/samtools_fastq/samtools_fastq @@ -626,9 +626,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_fastq" -LABEL org.opencontainers.image.created="2024-10-26T09:56:42Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:11Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_flagstat/.config.vsh.yaml b/target/executable/samtools/samtools_flagstat/.config.vsh.yaml index a5b6eb6f..c7ec1f54 100644 --- a/target/executable/samtools/samtools_flagstat/.config.vsh.yaml +++ b/target/executable/samtools/samtools_flagstat/.config.vsh.yaml @@ -173,9 +173,9 @@ build_info: output: "target/executable/samtools/samtools_flagstat" executable: "target/executable/samtools/samtools_flagstat/samtools_flagstat" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_flagstat/samtools_flagstat b/target/executable/samtools/samtools_flagstat/samtools_flagstat index e13af34b..5402a7e1 100755 --- a/target/executable/samtools/samtools_flagstat/samtools_flagstat +++ b/target/executable/samtools/samtools_flagstat/samtools_flagstat @@ -474,9 +474,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_flagstat" -LABEL org.opencontainers.image.created="2024-10-26T09:56:53Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:23Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_idxstats/.config.vsh.yaml b/target/executable/samtools/samtools_idxstats/.config.vsh.yaml index 1bd107b4..48af23a9 100644 --- a/target/executable/samtools/samtools_idxstats/.config.vsh.yaml +++ b/target/executable/samtools/samtools_idxstats/.config.vsh.yaml @@ -183,9 +183,9 @@ build_info: output: "target/executable/samtools/samtools_idxstats" executable: "target/executable/samtools/samtools_idxstats/samtools_idxstats" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_idxstats/samtools_idxstats b/target/executable/samtools/samtools_idxstats/samtools_idxstats index 66567b15..e10cbca4 100755 --- a/target/executable/samtools/samtools_idxstats/samtools_idxstats +++ b/target/executable/samtools/samtools_idxstats/samtools_idxstats @@ -478,9 +478,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_idxstats" -LABEL org.opencontainers.image.created="2024-10-26T09:56:53Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:23Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_index/.config.vsh.yaml b/target/executable/samtools/samtools_index/.config.vsh.yaml index 5ea2fb26..1c5a00d1 100644 --- a/target/executable/samtools/samtools_index/.config.vsh.yaml +++ b/target/executable/samtools/samtools_index/.config.vsh.yaml @@ -189,9 +189,9 @@ build_info: output: "target/executable/samtools/samtools_index" executable: "target/executable/samtools/samtools_index/samtools_index" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_index/samtools_index b/target/executable/samtools/samtools_index/samtools_index index 14b04720..46a5ce1f 100755 --- a/target/executable/samtools/samtools_index/samtools_index +++ b/target/executable/samtools/samtools_index/samtools_index @@ -485,9 +485,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_index" -LABEL org.opencontainers.image.created="2024-10-26T09:56:39Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:23Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_sort/.config.vsh.yaml b/target/executable/samtools/samtools_sort/.config.vsh.yaml index 9e976211..85987c2d 100644 --- a/target/executable/samtools/samtools_sort/.config.vsh.yaml +++ b/target/executable/samtools/samtools_sort/.config.vsh.yaml @@ -332,9 +332,9 @@ build_info: output: "target/executable/samtools/samtools_sort" executable: "target/executable/samtools/samtools_sort/samtools_sort" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_sort/samtools_sort b/target/executable/samtools/samtools_sort/samtools_sort index 84e408b5..1d53a19b 100755 --- a/target/executable/samtools/samtools_sort/samtools_sort +++ b/target/executable/samtools/samtools_sort/samtools_sort @@ -556,9 +556,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_sort" -LABEL org.opencontainers.image.created="2024-10-26T09:56:42Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:11Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_stats/.config.vsh.yaml b/target/executable/samtools/samtools_stats/.config.vsh.yaml index 4a2e144a..d60035f3 100644 --- a/target/executable/samtools/samtools_stats/.config.vsh.yaml +++ b/target/executable/samtools/samtools_stats/.config.vsh.yaml @@ -401,9 +401,9 @@ build_info: output: "target/executable/samtools/samtools_stats" executable: "target/executable/samtools/samtools_stats/samtools_stats" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_stats/samtools_stats b/target/executable/samtools/samtools_stats/samtools_stats index cb350994..616c2c36 100755 --- a/target/executable/samtools/samtools_stats/samtools_stats +++ b/target/executable/samtools/samtools_stats/samtools_stats @@ -575,9 +575,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_stats" -LABEL org.opencontainers.image.created="2024-10-26T09:56:52Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:22Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/samtools/samtools_view/.config.vsh.yaml b/target/executable/samtools/samtools_view/.config.vsh.yaml index f3033213..fc68fb02 100644 --- a/target/executable/samtools/samtools_view/.config.vsh.yaml +++ b/target/executable/samtools/samtools_view/.config.vsh.yaml @@ -665,9 +665,9 @@ build_info: output: "target/executable/samtools/samtools_view" executable: "target/executable/samtools/samtools_view/samtools_view" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/samtools/samtools_view/samtools_view b/target/executable/samtools/samtools_view/samtools_view index 2d9906a0..5c2e4650 100755 --- a/target/executable/samtools/samtools_view/samtools_view +++ b/target/executable/samtools/samtools_view/samtools_view @@ -825,9 +825,9 @@ sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component samtools samtools_view" -LABEL org.opencontainers.image.created="2024-10-26T09:56:39Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:08Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/seqtk/seqtk_sample/.config.vsh.yaml b/target/executable/seqtk/seqtk_sample/.config.vsh.yaml index 8e76a2dd..8dc51304 100644 --- a/target/executable/seqtk/seqtk_sample/.config.vsh.yaml +++ b/target/executable/seqtk/seqtk_sample/.config.vsh.yaml @@ -173,9 +173,9 @@ build_info: output: "target/executable/seqtk/seqtk_sample" executable: "target/executable/seqtk/seqtk_sample/seqtk_sample" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/seqtk/seqtk_sample/seqtk_sample b/target/executable/seqtk/seqtk_sample/seqtk_sample index b0972334..85fa5dac 100755 --- a/target/executable/seqtk/seqtk_sample/seqtk_sample +++ b/target/executable/seqtk/seqtk_sample/seqtk_sample @@ -481,9 +481,9 @@ FROM quay.io/biocontainers/seqtk:1.4--he4a0461_2 ENTRYPOINT [] LABEL org.opencontainers.image.authors="Jakub Majercik" LABEL org.opencontainers.image.description="Companion container for running component seqtk seqtk_sample" -LABEL org.opencontainers.image.created="2024-10-26T09:56:53Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:23Z" LABEL org.opencontainers.image.source="https://github.com/lh3/seqtk/tree/v1.4" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/seqtk/seqtk_subseq/.config.vsh.yaml b/target/executable/seqtk/seqtk_subseq/.config.vsh.yaml index 636b5dd2..df8f14f3 100644 --- a/target/executable/seqtk/seqtk_subseq/.config.vsh.yaml +++ b/target/executable/seqtk/seqtk_subseq/.config.vsh.yaml @@ -196,9 +196,9 @@ build_info: output: "target/executable/seqtk/seqtk_subseq" executable: "target/executable/seqtk/seqtk_subseq/seqtk_subseq" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/seqtk/seqtk_subseq/seqtk_subseq b/target/executable/seqtk/seqtk_subseq/seqtk_subseq index 6626eea6..2b312b09 100755 --- a/target/executable/seqtk/seqtk_subseq/seqtk_subseq +++ b/target/executable/seqtk/seqtk_subseq/seqtk_subseq @@ -491,9 +491,9 @@ RUN echo $(echo $(seqtk 2>&1) | sed -n 's/.*\(Version: [^ ]*\).*/\1/p') > /var/s LABEL org.opencontainers.image.authors="Theodoro Gasperin Terra Camargo" LABEL org.opencontainers.image.description="Companion container for running component seqtk seqtk_subseq" -LABEL org.opencontainers.image.created="2024-10-26T09:56:53Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:24Z" LABEL org.opencontainers.image.source="https://github.com/lh3/seqtk/tree/v1.4" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/snpeff/.config.vsh.yaml b/target/executable/snpeff/.config.vsh.yaml index 0e9a9bd7..b768e894 100644 --- a/target/executable/snpeff/.config.vsh.yaml +++ b/target/executable/snpeff/.config.vsh.yaml @@ -628,9 +628,9 @@ build_info: output: "target/executable/snpeff" executable: "target/executable/snpeff/snpeff" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/snpeff/snpeff b/target/executable/snpeff/snpeff index d3610e16..a2ef4445 100755 --- a/target/executable/snpeff/snpeff +++ b/target/executable/snpeff/snpeff @@ -756,9 +756,9 @@ version_trimmed=$(echo "$version" | awk '{print $1, $2}') && \ echo "$version_trimmed" > /var/software_versions.txt LABEL org.opencontainers.image.description="Companion container for running component snpeff" -LABEL org.opencontainers.image.created="2024-10-26T09:56:45Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:15Z" LABEL org.opencontainers.image.source="https://github.com/pcingola/SnpEff" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/sortmerna/.config.vsh.yaml b/target/executable/sortmerna/.config.vsh.yaml index 25671a9c..eba5efce 100644 --- a/target/executable/sortmerna/.config.vsh.yaml +++ b/target/executable/sortmerna/.config.vsh.yaml @@ -591,9 +591,9 @@ build_info: output: "target/executable/sortmerna" executable: "target/executable/sortmerna/sortmerna" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/sortmerna/sortmerna b/target/executable/sortmerna/sortmerna index b4cd00bd..f915619d 100755 --- a/target/executable/sortmerna/sortmerna +++ b/target/executable/sortmerna/sortmerna @@ -744,9 +744,9 @@ wget --no-check-certificate https://github.com/sortmerna/sortmerna/releases/down bash sortmerna-4.3.6-Linux.sh --skip-license LABEL org.opencontainers.image.description="Companion container for running component sortmerna" -LABEL org.opencontainers.image.created="2024-10-26T09:56:42Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:12Z" LABEL org.opencontainers.image.source="https://github.com/sortmerna/sortmerna" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/star/star_align_reads/.config.vsh.yaml b/target/executable/star/star_align_reads/.config.vsh.yaml index 2e62b8f0..406a6889 100644 --- a/target/executable/star/star_align_reads/.config.vsh.yaml +++ b/target/executable/star/star_align_reads/.config.vsh.yaml @@ -2663,9 +2663,9 @@ build_info: output: "target/executable/star/star_align_reads" executable: "target/executable/star/star_align_reads/star_align_reads" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/star/star_align_reads/star_align_reads b/target/executable/star/star_align_reads/star_align_reads index 3a5d61f4..3872c2ed 100755 --- a/target/executable/star/star_align_reads/star_align_reads +++ b/target/executable/star/star_align_reads/star_align_reads @@ -1920,9 +1920,9 @@ RUN STAR --version | sed 's#\(.*\)#star: "\1"#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Angela Oliveira Pisco, Robrecht Cannoodt" LABEL org.opencontainers.image.description="Companion container for running component star star_align_reads" -LABEL org.opencontainers.image.created="2024-10-26T09:56:44Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:13Z" LABEL org.opencontainers.image.source="https://github.com/alexdobin/STAR" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/star/star_genome_generate/.config.vsh.yaml b/target/executable/star/star_genome_generate/.config.vsh.yaml index b13ccdb6..0e2b1ca0 100644 --- a/target/executable/star/star_genome_generate/.config.vsh.yaml +++ b/target/executable/star/star_genome_generate/.config.vsh.yaml @@ -333,9 +333,9 @@ build_info: output: "target/executable/star/star_genome_generate" executable: "target/executable/star/star_genome_generate/star_genome_generate" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/star/star_genome_generate/star_genome_generate b/target/executable/star/star_genome_generate/star_genome_generate index c8657b67..89e124d5 100755 --- a/target/executable/star/star_genome_generate/star_genome_generate +++ b/target/executable/star/star_genome_generate/star_genome_generate @@ -577,9 +577,9 @@ RUN STAR --version | sed 's#\(.*\)#star: "\1"#' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Sai Nirmayi Yasa" LABEL org.opencontainers.image.description="Companion container for running component star star_genome_generate" -LABEL org.opencontainers.image.created="2024-10-26T09:56:44Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:13Z" LABEL org.opencontainers.image.source="https://github.com/alexdobin/STAR" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/trimgalore/.config.vsh.yaml b/target/executable/trimgalore/.config.vsh.yaml index fe2e8193..56595b98 100644 --- a/target/executable/trimgalore/.config.vsh.yaml +++ b/target/executable/trimgalore/.config.vsh.yaml @@ -770,9 +770,9 @@ build_info: output: "target/executable/trimgalore" executable: "target/executable/trimgalore/trimgalore" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/trimgalore/trimgalore b/target/executable/trimgalore/trimgalore index ea70bbd3..ec3482b0 100755 --- a/target/executable/trimgalore/trimgalore +++ b/target/executable/trimgalore/trimgalore @@ -881,9 +881,9 @@ RUN echo "TrimGalore: `trim_galore --version | sed -n 's/.*version\s\+\([0-9]\+\ LABEL org.opencontainers.image.authors="Sai Nirmayi Yasa" LABEL org.opencontainers.image.description="Companion container for running component trimgalore" -LABEL org.opencontainers.image.created="2024-10-26T09:56:47Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:17Z" LABEL org.opencontainers.image.source="https://github.com/FelixKrueger/TrimGalore" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/umi_tools/umi_tools_dedup/.config.vsh.yaml b/target/executable/umi_tools/umi_tools_dedup/.config.vsh.yaml index 94899693..3e4323e0 100644 --- a/target/executable/umi_tools/umi_tools_dedup/.config.vsh.yaml +++ b/target/executable/umi_tools/umi_tools_dedup/.config.vsh.yaml @@ -611,9 +611,9 @@ build_info: output: "target/executable/umi_tools/umi_tools_dedup" executable: "target/executable/umi_tools/umi_tools_dedup/umi_tools_dedup" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/umi_tools/umi_tools_dedup/umi_tools_dedup b/target/executable/umi_tools/umi_tools_dedup/umi_tools_dedup index 56fac7ec..72986d59 100755 --- a/target/executable/umi_tools/umi_tools_dedup/umi_tools_dedup +++ b/target/executable/umi_tools/umi_tools_dedup/umi_tools_dedup @@ -770,9 +770,9 @@ RUN umi_tools -v | sed 's/ version//g' > /var/software_versions.txt LABEL org.opencontainers.image.authors="Emma Rousseau" LABEL org.opencontainers.image.description="Companion container for running component umi_tools umi_tools_dedup" -LABEL org.opencontainers.image.created="2024-10-26T09:56:45Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:15Z" LABEL org.opencontainers.image.source="https://github.com/CGATOxford/UMI-tools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/umi_tools/umi_tools_extract/.config.vsh.yaml b/target/executable/umi_tools/umi_tools_extract/.config.vsh.yaml index 1b3821b4..3337ecf1 100644 --- a/target/executable/umi_tools/umi_tools_extract/.config.vsh.yaml +++ b/target/executable/umi_tools/umi_tools_extract/.config.vsh.yaml @@ -449,9 +449,9 @@ build_info: output: "target/executable/umi_tools/umi_tools_extract" executable: "target/executable/umi_tools/umi_tools_extract/umi_tools_extract" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/umi_tools/umi_tools_extract/umi_tools_extract b/target/executable/umi_tools/umi_tools_extract/umi_tools_extract index 1cbdeba2..2783ccee 100755 --- a/target/executable/umi_tools/umi_tools_extract/umi_tools_extract +++ b/target/executable/umi_tools/umi_tools_extract/umi_tools_extract @@ -637,9 +637,9 @@ ENTRYPOINT [] RUN umi_tools -v | sed 's/ version//g' > /var/software_versions.txt LABEL org.opencontainers.image.description="Companion container for running component umi_tools umi_tools_extract" -LABEL org.opencontainers.image.created="2024-10-26T09:56:45Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:14Z" LABEL org.opencontainers.image.source="https://github.com/CGATOxford/UMI-tools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml b/target/executable/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml index b5b63e95..3a5953a6 100644 --- a/target/executable/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml +++ b/target/executable/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml @@ -256,9 +256,9 @@ build_info: output: "target/executable/umi_tools/umi_tools_prepareforrsem" executable: "target/executable/umi_tools/umi_tools_prepareforrsem/umi_tools_prepareforrsem" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/executable/umi_tools/umi_tools_prepareforrsem/umi_tools_prepareforrsem b/target/executable/umi_tools/umi_tools_prepareforrsem/umi_tools_prepareforrsem index 05ae8135..ce36601f 100755 --- a/target/executable/umi_tools/umi_tools_prepareforrsem/umi_tools_prepareforrsem +++ b/target/executable/umi_tools/umi_tools_prepareforrsem/umi_tools_prepareforrsem @@ -519,9 +519,9 @@ ENTRYPOINT [] RUN umi_tools -v | sed 's/ version//g' > /var/software_versions.txt LABEL org.opencontainers.image.description="Companion container for running component umi_tools umi_tools_prepareforrsem" -LABEL org.opencontainers.image.created="2024-10-26T09:56:45Z" +LABEL org.opencontainers.image.created="2024-10-26T13:11:15Z" LABEL org.opencontainers.image.source="https://github.com/CGATOxford/UMI-tools" -LABEL org.opencontainers.image.revision="6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" +LABEL org.opencontainers.image.revision="52f44f5049606ac655154cf54ed53fa76b49896f" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/nextflow/agat/agat_convert_bed2gff/.config.vsh.yaml b/target/nextflow/agat/agat_convert_bed2gff/.config.vsh.yaml index 65769cfc..5a504fbb 100644 --- a/target/nextflow/agat/agat_convert_bed2gff/.config.vsh.yaml +++ b/target/nextflow/agat/agat_convert_bed2gff/.config.vsh.yaml @@ -235,9 +235,9 @@ build_info: output: "target/nextflow/agat/agat_convert_bed2gff" executable: "target/nextflow/agat/agat_convert_bed2gff/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/agat/agat_convert_bed2gff/main.nf b/target/nextflow/agat/agat_convert_bed2gff/main.nf index bcde2b67..fd90156a 100644 --- a/target/nextflow/agat/agat_convert_bed2gff/main.nf +++ b/target/nextflow/agat/agat_convert_bed2gff/main.nf @@ -3092,9 +3092,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/agat/agat_convert_bed2gff", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/agat/agat_convert_embl2gff/.config.vsh.yaml b/target/nextflow/agat/agat_convert_embl2gff/.config.vsh.yaml index 5f3f9480..a8179014 100644 --- a/target/nextflow/agat/agat_convert_embl2gff/.config.vsh.yaml +++ b/target/nextflow/agat/agat_convert_embl2gff/.config.vsh.yaml @@ -225,9 +225,9 @@ build_info: output: "target/nextflow/agat/agat_convert_embl2gff" executable: "target/nextflow/agat/agat_convert_embl2gff/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/agat/agat_convert_embl2gff/main.nf b/target/nextflow/agat/agat_convert_embl2gff/main.nf index a019efb3..5f822e39 100644 --- a/target/nextflow/agat/agat_convert_embl2gff/main.nf +++ b/target/nextflow/agat/agat_convert_embl2gff/main.nf @@ -3085,9 +3085,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/agat/agat_convert_embl2gff", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/agat/agat_convert_genscan2gff/.config.vsh.yaml b/target/nextflow/agat/agat_convert_genscan2gff/.config.vsh.yaml index 2e1886e9..59b91b2c 100644 --- a/target/nextflow/agat/agat_convert_genscan2gff/.config.vsh.yaml +++ b/target/nextflow/agat/agat_convert_genscan2gff/.config.vsh.yaml @@ -230,9 +230,9 @@ build_info: output: "target/nextflow/agat/agat_convert_genscan2gff" executable: "target/nextflow/agat/agat_convert_genscan2gff/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/agat/agat_convert_genscan2gff/main.nf b/target/nextflow/agat/agat_convert_genscan2gff/main.nf index 8670f3a5..53486c7b 100644 --- a/target/nextflow/agat/agat_convert_genscan2gff/main.nf +++ b/target/nextflow/agat/agat_convert_genscan2gff/main.nf @@ -3087,9 +3087,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/agat/agat_convert_genscan2gff", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml b/target/nextflow/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml index daddc5ea..002de914 100644 --- a/target/nextflow/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml +++ b/target/nextflow/agat/agat_convert_sp_gff2gtf/.config.vsh.yaml @@ -228,9 +228,9 @@ build_info: output: "target/nextflow/agat/agat_convert_sp_gff2gtf" executable: "target/nextflow/agat/agat_convert_sp_gff2gtf/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/agat/agat_convert_sp_gff2gtf/main.nf b/target/nextflow/agat/agat_convert_sp_gff2gtf/main.nf index e0d771e6..22541ce6 100644 --- a/target/nextflow/agat/agat_convert_sp_gff2gtf/main.nf +++ b/target/nextflow/agat/agat_convert_sp_gff2gtf/main.nf @@ -3068,9 +3068,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/agat/agat_convert_sp_gff2gtf", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml b/target/nextflow/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml index e79c8ba6..d51d52ee 100644 --- a/target/nextflow/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml +++ b/target/nextflow/agat/agat_convert_sp_gff2tsv/.config.vsh.yaml @@ -188,9 +188,9 @@ build_info: output: "target/nextflow/agat/agat_convert_sp_gff2tsv" executable: "target/nextflow/agat/agat_convert_sp_gff2tsv/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/agat/agat_convert_sp_gff2tsv/main.nf b/target/nextflow/agat/agat_convert_sp_gff2tsv/main.nf index 8c734aa2..d7e23757 100644 --- a/target/nextflow/agat/agat_convert_sp_gff2tsv/main.nf +++ b/target/nextflow/agat/agat_convert_sp_gff2tsv/main.nf @@ -3046,9 +3046,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/agat/agat_convert_sp_gff2tsv", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml b/target/nextflow/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml index ffbd4917..bfa89c8d 100644 --- a/target/nextflow/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml +++ b/target/nextflow/agat/agat_convert_sp_gxf2gxf/.config.vsh.yaml @@ -195,9 +195,9 @@ build_info: output: "target/nextflow/agat/agat_convert_sp_gxf2gxf" executable: "target/nextflow/agat/agat_convert_sp_gxf2gxf/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/agat/agat_convert_sp_gxf2gxf/main.nf b/target/nextflow/agat/agat_convert_sp_gxf2gxf/main.nf index d282710b..8a9f2276 100644 --- a/target/nextflow/agat/agat_convert_sp_gxf2gxf/main.nf +++ b/target/nextflow/agat/agat_convert_sp_gxf2gxf/main.nf @@ -3046,9 +3046,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/agat/agat_convert_sp_gxf2gxf", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/agat/agat_sp_add_introns/.config.vsh.yaml b/target/nextflow/agat/agat_sp_add_introns/.config.vsh.yaml new file mode 100644 index 00000000..ecd1c859 --- /dev/null +++ b/target/nextflow/agat/agat_sp_add_introns/.config.vsh.yaml @@ -0,0 +1,213 @@ +name: "agat_sp_add_introns" +namespace: "agat" +version: "main" +authors: +- name: "Leïla Paquay" + roles: + - "author" + - "maintainer" + info: + links: + email: "leila@data-intuitive.com" + github: "Leila011" + linkedin: "leilapaquay" + organizations: + - name: "Data Intuitive" + href: "https://www.data-intuitive.com" + role: "Software Developer" +argument_groups: +- name: "Inputs" + arguments: + - type: "file" + name: "--gff" + alternatives: + - "-f" + - "--ref" + - "--reffile" + description: "Input GTF/GFF file." + info: null + example: + - "input.gff" + must_exist: true + create_parent: true + required: true + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Outputs" + arguments: + - type: "file" + name: "--output" + alternatives: + - "-o" + - "--out" + - "--outfile" + - "--gtf" + description: "Output GFF3 file." + info: null + example: + - "output.gff" + must_exist: true + create_parent: true + required: true + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Arguments" + arguments: + - type: "file" + name: "--config" + alternatives: + - "-c" + description: "AGAT config file. By default AGAT takes the original agat_config.yaml\ + \ shipped with AGAT. The `--config` option \ngives you the possibility to use\ + \ your own AGAT config file (located elsewhere or named differently).\n" + info: null + example: + - "custom_agat_config.yaml" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +resources: +- type: "bash_script" + path: "script.sh" + is_executable: true +description: "Add intronic elements to a gtf/gff file without intron features.\n" +test_resources: +- type: "bash_script" + path: "test.sh" + is_executable: true +- type: "file" + path: "test_data" +info: null +status: "enabled" +requirements: + commands: + - "ps" +keywords: +- "gene annotations" +- "GTF conversion" +license: "GPL-3.0" +references: + doi: + - "10.5281/zenodo.3552717" +links: + repository: "https://github.com/NBISweden/AGAT" + homepage: "https://github.com/NBISweden/AGAT" + documentation: "https://agat.readthedocs.io/en/latest/tools/agat_sp_add_introns.html" + issue_tracker: "https://github.com/NBISweden/AGAT/issues" +runners: +- type: "executable" + id: "executable" + docker_setup_strategy: "ifneedbepullelsecachedbuild" +- type: "nextflow" + id: "nextflow" + directives: + tag: "$id" + auto: + simplifyInput: true + simplifyOutput: false + transcript: false + publish: false + config: + labels: + mem1gb: "memory = 1000000000.B" + mem2gb: "memory = 2000000000.B" + mem5gb: "memory = 5000000000.B" + mem10gb: "memory = 10000000000.B" + mem20gb: "memory = 20000000000.B" + mem50gb: "memory = 50000000000.B" + mem100gb: "memory = 100000000000.B" + mem200gb: "memory = 200000000000.B" + mem500gb: "memory = 500000000000.B" + mem1tb: "memory = 1000000000000.B" + mem2tb: "memory = 2000000000000.B" + mem5tb: "memory = 5000000000000.B" + mem10tb: "memory = 10000000000000.B" + mem20tb: "memory = 20000000000000.B" + mem50tb: "memory = 50000000000000.B" + mem100tb: "memory = 100000000000000.B" + mem200tb: "memory = 200000000000000.B" + mem500tb: "memory = 500000000000000.B" + mem1gib: "memory = 1073741824.B" + mem2gib: "memory = 2147483648.B" + mem4gib: "memory = 4294967296.B" + mem8gib: "memory = 8589934592.B" + mem16gib: "memory = 17179869184.B" + mem32gib: "memory = 34359738368.B" + mem64gib: "memory = 68719476736.B" + mem128gib: "memory = 137438953472.B" + mem256gib: "memory = 274877906944.B" + mem512gib: "memory = 549755813888.B" + mem1tib: "memory = 1099511627776.B" + mem2tib: "memory = 2199023255552.B" + mem4tib: "memory = 4398046511104.B" + mem8tib: "memory = 8796093022208.B" + mem16tib: "memory = 17592186044416.B" + mem32tib: "memory = 35184372088832.B" + mem64tib: "memory = 70368744177664.B" + mem128tib: "memory = 140737488355328.B" + mem256tib: "memory = 281474976710656.B" + mem512tib: "memory = 562949953421312.B" + cpu1: "cpus = 1" + cpu2: "cpus = 2" + cpu5: "cpus = 5" + cpu10: "cpus = 10" + cpu20: "cpus = 20" + cpu50: "cpus = 50" + cpu100: "cpus = 100" + cpu200: "cpus = 200" + cpu500: "cpus = 500" + cpu1000: "cpus = 1000" + debug: false + container: "docker" +engines: +- type: "docker" + id: "docker" + image: "quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0" + target_registry: "images.viash-hub.com" + target_tag: "main" + namespace_separator: "/" + setup: + - type: "docker" + run: + - "agat --version | sed 's/AGAT\\s\\(.*\\)/agat: \"\\1\"/' > /var/software_versions.txt\n" + entrypoint: [] + cmd: null +- type: "native" + id: "native" +build_info: + config: "src/agat/agat_sp_add_introns/config.vsh.yaml" + runner: "nextflow" + engine: "docker|native" + output: "target/nextflow/agat/agat_sp_add_introns" + executable: "target/nextflow/agat/agat_sp_add_introns/main.nf" + viash_version: "0.9.0" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" +package_config: + name: "biobox" + version: "main" + description: "A collection of bioinformatics tools for working with sequence data.\n" + info: null + viash_version: "0.9.0" + source: "src" + target: "target" + config_mods: + - ".requirements.commands := ['ps']\n" + - ".engines += { type: \"native\" }" + - ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'" + - ".engines[.type == 'docker'].target_tag := 'main'" + keywords: + - "bioinformatics" + - "modules" + - "sequencing" + license: "MIT" + organization: "vsh" + links: + repository: "https://github.com/viash-hub/biobox" + issue_tracker: "https://github.com/viash-hub/biobox/issues" diff --git a/target/nextflow/agat/agat_sp_add_introns/main.nf b/target/nextflow/agat/agat_sp_add_introns/main.nf new file mode 100644 index 00000000..e7cc1aba --- /dev/null +++ b/target/nextflow/agat/agat_sp_add_introns/main.nf @@ -0,0 +1,3607 @@ +// agat_sp_add_introns main +// +// This wrapper script is auto-generated by viash 0.9.0 and is thus a derivative +// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data +// Intuitive. +// +// The component may contain files which fall under a different license. The +// authors of this component should specify the license in the header of such +// files, or include a separate license file detailing the licenses of all included +// files. +// +// Component authors: +// * Leïla Paquay (author, maintainer) + +//////////////////////////// +// VDSL3 helper functions // +//////////////////////////// + +// helper file: 'src/main/resources/io/viash/runners/nextflow/arguments/_checkArgumentType.nf' +class UnexpectedArgumentTypeException extends Exception { + String errorIdentifier + String stage + String plainName + String expectedClass + String foundClass + + // ${key ? " in module '$key'" : ""}${id ? " id '$id'" : ""} + UnexpectedArgumentTypeException(String errorIdentifier, String stage, String plainName, String expectedClass, String foundClass) { + super("Error${errorIdentifier ? " $errorIdentifier" : ""}:${stage ? " $stage" : "" } argument '${plainName}' has the wrong type. " + + "Expected type: ${expectedClass}. Found type: ${foundClass}") + this.errorIdentifier = errorIdentifier + this.stage = stage + this.plainName = plainName + this.expectedClass = expectedClass + this.foundClass = foundClass + } +} + +/** + * Checks if the given value is of the expected type. If not, an exception is thrown. + * + * @param stage The stage of the argument (input or output) + * @param par The parameter definition + * @param value The value to check + * @param errorIdentifier The identifier to use in the error message + * @return The value, if it is of the expected type + * @throws UnexpectedArgumentTypeException If the value is not of the expected type +*/ +def _checkArgumentType(String stage, Map par, Object value, String errorIdentifier) { + // expectedClass will only be != null if value is not of the expected type + def expectedClass = null + def foundClass = null + + // todo: split if need be + + if (!par.required && value == null) { + expectedClass = null + } else if (par.multiple) { + if (value !instanceof Collection) { + value = [value] + } + + // split strings + value = value.collectMany{ val -> + if (val instanceof String) { + // collect() to ensure that the result is a List and not simply an array + val.split(par.multiple_sep).collect() + } else { + [val] + } + } + + // process globs + if (par.type == "file" && par.direction == "input") { + value = value.collect{ it instanceof String ? file(it, hidden: true) : it }.flatten() + } + + // check types of elements in list + try { + value = value.collect { listVal -> + _checkArgumentType(stage, par + [multiple: false], listVal, errorIdentifier) + } + } catch (UnexpectedArgumentTypeException e) { + expectedClass = "List[${e.expectedClass}]" + foundClass = "List[${e.foundClass}]" + } + } else if (par.type == "string") { + // cast to string if need be + if (value instanceof GString) { + value = value.toString() + } + expectedClass = value instanceof String ? null : "String" + } else if (par.type == "integer") { + // cast to integer if need be + if (value instanceof String) { + try { + value = value.toInteger() + } catch (NumberFormatException e) { + // do nothing + } + } + if (value instanceof java.math.BigInteger) { + value = value.intValue() + } + expectedClass = value instanceof Integer ? null : "Integer" + } else if (par.type == "long") { + // cast to long if need be + if (value instanceof String) { + try { + value = value.toLong() + } catch (NumberFormatException e) { + // do nothing + } + } + if (value instanceof Integer) { + value = value.toLong() + } + expectedClass = value instanceof Long ? null : "Long" + } else if (par.type == "double") { + // cast to double if need be + if (value instanceof String) { + try { + value = value.toDouble() + } catch (NumberFormatException e) { + // do nothing + } + } + if (value instanceof java.math.BigDecimal) { + value = value.doubleValue() + } + if (value instanceof Float) { + value = value.toDouble() + } + expectedClass = value instanceof Double ? null : "Double" + } else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") { + // cast to boolean if need be + if (value instanceof String) { + def valueLower = value.toLowerCase() + if (valueLower == "true") { + value = true + } else if (valueLower == "false") { + value = false + } + } + expectedClass = value instanceof Boolean ? null : "Boolean" + } else if (par.type == "file" && (par.direction == "input" || stage == "output")) { + // cast to path if need be + if (value instanceof String) { + value = file(value, hidden: true) + } + if (value instanceof File) { + value = value.toPath() + } + expectedClass = value instanceof Path ? null : "Path" + } else if (par.type == "file" && stage == "input" && par.direction == "output") { + // cast to string if need be + if (value instanceof GString) { + value = value.toString() + } + expectedClass = value instanceof String ? null : "String" + } else { + // didn't find a match for par.type + expectedClass = par.type + } + + if (expectedClass != null) { + if (foundClass == null) { + foundClass = value.getClass().getName() + } + throw new UnexpectedArgumentTypeException(errorIdentifier, stage, par.plainName, expectedClass, foundClass) + } + + return value +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/arguments/_processInputValues.nf' +Map _processInputValues(Map inputs, Map config, String id, String key) { + if (!workflow.stubRun) { + config.allArguments.each { arg -> + if (arg.required) { + assert inputs.containsKey(arg.plainName) && inputs.get(arg.plainName) != null : + "Error in module '${key}' id '${id}': required input argument '${arg.plainName}' is missing" + } + } + + inputs = inputs.collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && (it.direction == "input" || it.type == "file") } + assert par != null : "Error in module '${key}' id '${id}': '${name}' is not a valid input argument" + + value = _checkArgumentType("input", par, value, "in module '$key' id '$id'") + + [ name, value ] + } + } + return inputs +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/arguments/_processOutputValues.nf' +Map _processOutputValues(Map outputs, Map config, String id, String key) { + if (!workflow.stubRun) { + config.allArguments.each { arg -> + if (arg.direction == "output" && arg.required) { + assert outputs.containsKey(arg.plainName) && outputs.get(arg.plainName) != null : + "Error in module '${key}' id '${id}': required output argument '${arg.plainName}' is missing" + } + } + + outputs = outputs.collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && it.direction == "output" } + assert par != null : "Error in module '${key}' id '${id}': '${name}' is not a valid output argument" + + value = _checkArgumentType("output", par, value, "in module '$key' id '$id'") + + [ name, value ] + } + } + return outputs +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/IDChecker.nf' +class IDChecker { + final def items = [] as Set + + @groovy.transform.WithWriteLock + boolean observe(String item) { + if (items.contains(item)) { + return false + } else { + items << item + return true + } + } + + @groovy.transform.WithReadLock + boolean contains(String item) { + return items.contains(item) + } + + @groovy.transform.WithReadLock + Set getItems() { + return items.clone() + } +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_checkUniqueIds.nf' + +/** + * Check if the ids are unique across parameter sets + * + * @param parameterSets a list of parameter sets. + */ +private void _checkUniqueIds(List>> parameterSets) { + def ppIds = parameterSets.collect{it[0]} + assert ppIds.size() == ppIds.unique().size() : "All argument sets should have unique ids. Detected ids: $ppIds" +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_getChild.nf' + +// helper functions for reading params from file // +def _getChild(parent, child) { + if (child.contains("://") || java.nio.file.Paths.get(child).isAbsolute()) { + child + } else { + def parentAbsolute = java.nio.file.Paths.get(parent).toAbsolutePath().toString() + parentAbsolute.replaceAll('/[^/]*$', "/") + child + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_parseParamList.nf' +/** + * Figure out the param list format based on the file extension + * + * @param param_list A String containing the path to the parameter list file. + * + * @return A String containing the format of the parameter list file. + */ +def _paramListGuessFormat(param_list) { + if (param_list !instanceof String) { + "asis" + } else if (param_list.endsWith(".csv")) { + "csv" + } else if (param_list.endsWith(".json") || param_list.endsWith(".jsn")) { + "json" + } else if (param_list.endsWith(".yaml") || param_list.endsWith(".yml")) { + "yaml" + } else { + "yaml_blob" + } +} + + +/** + * Read the param list + * + * @param param_list One of the following: + * - A String containing the path to the parameter list file (csv, json or yaml), + * - A yaml blob of a list of maps (yaml_blob), + * - Or a groovy list of maps (asis). + * @param config A Map of the Viash configuration. + * + * @return A List of Maps containing the parameters. + */ +def _parseParamList(param_list, Map config) { + // first determine format by extension + def paramListFormat = _paramListGuessFormat(param_list) + + def paramListPath = (paramListFormat != "asis" && paramListFormat != "yaml_blob") ? + file(param_list, hidden: true) : + null + + // get the correct parser function for the detected params_list format + def paramSets = [] + if (paramListFormat == "asis") { + paramSets = param_list + } else if (paramListFormat == "yaml_blob") { + paramSets = readYamlBlob(param_list) + } else if (paramListFormat == "yaml") { + paramSets = readYaml(paramListPath) + } else if (paramListFormat == "json") { + paramSets = readJson(paramListPath) + } else if (paramListFormat == "csv") { + paramSets = readCsv(paramListPath) + } else { + error "Format of provided --param_list not recognised.\n" + + "Found: '$paramListFormat'.\n" + + "Expected: a csv file, a json file, a yaml file,\n" + + "a yaml blob or a groovy list of maps." + } + + // data checks + assert paramSets instanceof List: "--param_list should contain a list of maps" + for (value in paramSets) { + assert value instanceof Map: "--param_list should contain a list of maps" + } + + // id is argument + def idIsArgument = config.allArguments.any{it.plainName == "id"} + + // Reformat from List to List> by adding the ID as first element of a Tuple2 + paramSets = paramSets.collect({ data -> + def id = data.id + if (!idIsArgument) { + data = data.findAll{k, v -> k != "id"} + } + [id, data] + }) + + // Split parameters with 'multiple: true' + paramSets = paramSets.collect({ id, data -> + data = _splitParams(data, config) + [id, data] + }) + + // The paths of input files inside a param_list file may have been specified relatively to the + // location of the param_list file. These paths must be made absolute. + if (paramListPath) { + paramSets = paramSets.collect({ id, data -> + def new_data = data.collectEntries{ parName, parValue -> + def par = config.allArguments.find{it.plainName == parName} + if (par && par.type == "file" && par.direction == "input") { + if (parValue instanceof Collection) { + parValue = parValue.collectMany{path -> + def x = _resolveSiblingIfNotAbsolute(path, paramListPath) + x instanceof Collection ? x : [x] + } + } else { + parValue = _resolveSiblingIfNotAbsolute(parValue, paramListPath) + } + } + [parName, parValue] + } + [id, new_data] + }) + } + + return paramSets +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_splitParams.nf' +/** + * Split parameters for arguments that accept multiple values using their separator + * + * @param paramList A Map containing parameters to split. + * @param config A Map of the Viash configuration. This Map can be generated from the config file + * using the readConfig() function. + * + * @return A Map of parameters where the parameter values have been split into a list using + * their seperator. + */ +Map _splitParams(Map parValues, Map config){ + def parsedParamValues = parValues.collectEntries { parName, parValue -> + def parameterSettings = config.allArguments.find({it.plainName == parName}) + + if (!parameterSettings) { + // if argument is not found, do not alter + return [parName, parValue] + } + if (parameterSettings.multiple) { // Check if parameter can accept multiple values + if (parValue instanceof Collection) { + parValue = parValue.collect{it instanceof String ? it.split(parameterSettings.multiple_sep) : it } + } else if (parValue instanceof String) { + parValue = parValue.split(parameterSettings.multiple_sep) + } else if (parValue == null) { + parValue = [] + } else { + parValue = [ parValue ] + } + parValue = parValue.flatten() + } + // For all parameters check if multiple values are only passed for + // arguments that allow it. Quietly simplify lists of length 1. + if (!parameterSettings.multiple && parValue instanceof Collection) { + assert parValue.size() == 1 : + "Error: argument ${parName} has too many values.\n" + + " Expected amount: 1. Found: ${parValue.size()}" + parValue = parValue[0] + } + [parName, parValue] + } + return parsedParamValues +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/channelFromParams.nf' +/** + * Parse nextflow parameters based on settings defined in a viash config. + * Return a list of parameter sets, each parameter set corresponding to + * an event in a nextflow channel. The output from this function can be used + * with Channel.fromList to create a nextflow channel with Vdsl3 formatted + * events. + * + * This function performs: + * - A filtering of the params which can be found in the config file. + * - Process the params_list argument which allows a user to to initialise + * a Vsdl3 channel with multiple parameter sets. Possible formats are + * csv, json, yaml, or simply a yaml_blob. A csv should have column names + * which correspond to the different arguments of this pipeline. A json or a yaml + * file should be a list of maps, each of which has keys corresponding to the + * arguments of the pipeline. A yaml blob can also be passed directly as a parameter. + * When passing a csv, json or yaml, relative path names are relativized to the + * location of the parameter file. + * - Combine the parameter sets into a vdsl3 Channel. + * + * @param params Input parameters. Can optionaly contain a 'param_list' key that + * provides a list of arguments that can be split up into multiple events + * in the output channel possible formats of param_lists are: a csv file, + * json file, a yaml file or a yaml blob. Each parameters set (event) must + * have a unique ID. + * @param config A Map of the Viash configuration. This Map can be generated from the config file + * using the readConfig() function. + * + * @return A list of parameters with the first element of the event being + * the event ID and the second element containing a map of the parsed parameters. + */ + +private List>> _paramsToParamSets(Map params, Map config){ + // todo: fetch key from run args + def key_ = config.name + + /* parse regular parameters (not in param_list) */ + /*************************************************/ + def globalParams = config.allArguments + .findAll { params.containsKey(it.plainName) } + .collectEntries { [ it.plainName, params[it.plainName] ] } + def globalID = params.get("id", null) + + /* process params_list arguments */ + /*********************************/ + def paramList = params.containsKey("param_list") && params.param_list != null ? + params.param_list : [] + // if (paramList instanceof String) { + // paramList = [paramList] + // } + // def paramSets = paramList.collectMany{ _parseParamList(it, config) } + // TODO: be able to process param_list when it is a list of strings + def paramSets = _parseParamList(paramList, config) + if (paramSets.isEmpty()) { + paramSets = [[null, [:]]] + } + + /* combine arguments into channel */ + /**********************************/ + def processedParams = paramSets.indexed().collect{ index, tup -> + // Process ID + def id = tup[0] ?: globalID + + if (workflow.stubRun && !id) { + // if stub run, explicitly add an id if missing + id = "stub${index}" + } + assert id != null: "Each parameter set should have at least an 'id'" + + // Process params + def parValues = globalParams + tup[1] + // // Remove parameters which are null, if the default is also null + // parValues = parValues.collectEntries{paramName, paramValue -> + // parameterSettings = config.functionality.allArguments.find({it.plainName == paramName}) + // if ( paramValue != null || parameterSettings.get("default", null) != null ) { + // [paramName, paramValue] + // } + // } + parValues = parValues.collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && (it.direction == "input" || it.type == "file") } + assert par != null : "Error in module '${key_}' id '${id}': '${name}' is not a valid input argument" + + if (par == null) { + return [:] + } + value = _checkArgumentType("input", par, value, "in module '$key_' id '$id'") + + [ name, value ] + } + + [id, parValues] + } + + // Check if ids (first element of each list) is unique + _checkUniqueIds(processedParams) + return processedParams +} + +/** + * Parse nextflow parameters based on settings defined in a viash config + * and return a nextflow channel. + * + * @param params Input parameters. Can optionaly contain a 'param_list' key that + * provides a list of arguments that can be split up into multiple events + * in the output channel possible formats of param_lists are: a csv file, + * json file, a yaml file or a yaml blob. Each parameters set (event) must + * have a unique ID. + * @param config A Map of the Viash configuration. This Map can be generated from the config file + * using the readConfig() function. + * + * @return A nextflow Channel with events. Events are formatted as a tuple that contains + * first contains the ID of the event and as second element holds a parameter map. + * + * + */ +def channelFromParams(Map params, Map config) { + def processedParams = _paramsToParamSets(params, config) + return Channel.fromList(processedParams) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/checkUniqueIds.nf' +def checkUniqueIds(Map args) { + def stopOnError = args.stopOnError == null ? args.stopOnError : true + + def idChecker = new IDChecker() + + return filter { tup -> + if (!idChecker.observe(tup[0])) { + if (stopOnError) { + error "Duplicate id: ${tup[0]}" + } else { + log.warn "Duplicate id: ${tup[0]}, removing duplicate entry" + return false + } + } + return true + } +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/preprocessInputs.nf' +// This helper file will be deprecated soon +preprocessInputsDeprecationWarningPrinted = false + +def preprocessInputsDeprecationWarning() { + if (!preprocessInputsDeprecationWarningPrinted) { + preprocessInputsDeprecationWarningPrinted = true + System.err.println("Warning: preprocessInputs() is deprecated and will be removed in Viash 0.9.0.") + } +} + +/** + * Generate a nextflow Workflow that allows processing a channel of + * Vdsl3 formatted events and apply a Viash config to them: + * - Gather default parameters from the Viash config and make + * sure that they are correctly formatted (see applyConfig method). + * - Format the input parameters (also using the applyConfig method). + * - Apply the default parameter to the input parameters. + * - Do some assertions: + * ~ Check if the event IDs in the channel are unique. + * + * The events in the channel are formatted as tuples, with the + * first element of the tuples being a unique id of the parameter set, + * and the second element containg the the parameters themselves. + * Optional extra elements of the tuples will be passed to the output as is. + * + * @param args A map that must contain a 'config' key that points + * to a parsed config (see readConfig()). Optionally, a + * 'key' key can be provided which can be used to create a unique + * name for the workflow process. + * + * @return A workflow that allows processing a channel of Vdsl3 formatted events + * and apply a Viash config to them. + */ +def preprocessInputs(Map args) { + preprocessInputsDeprecationWarning() + + def config = args.config + assert config instanceof Map : + "Error in preprocessInputs: config must be a map. " + + "Expected class: Map. Found: config.getClass() is ${config.getClass()}" + def key_ = args.key ?: config.name + + // Get different parameter types (used throughout this function) + def defaultArgs = config.allArguments + .findAll { it.containsKey("default") } + .collectEntries { [ it.plainName, it.default ] } + + map { tup -> + def id = tup[0] + def data = tup[1] + def passthrough = tup.drop(2) + + def new_data = (defaultArgs + data).collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && (it.direction == "input" || it.type == "file") } + + if (par != null) { + value = _checkArgumentType("input", par, value, "in module '$key_' id '$id'") + } + + [ name, value ] + } + + [ id, new_data ] + passthrough + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/runComponents.nf' +/** + * Run a list of components on a stream of data. + * + * @param components: list of Viash VDSL3 modules to run + * @param fromState: a closure, a map or a list of keys to extract from the input data. + * If a closure, it will be called with the id, the data and the component config. + * @param toState: a closure, a map or a list of keys to extract from the output data + * If a closure, it will be called with the id, the output data, the old state and the component config. + * @param filter: filter function to apply to the input. + * It will be called with the id, the data and the component config. + * @param id: id to use for the output data + * If a closure, it will be called with the id, the data and the component config. + * @param auto: auto options to pass to the components + * + * @return: a workflow that runs the components + **/ +def runComponents(Map args) { + log.warn("runComponents is deprecated, use runEach instead") + assert args.components: "runComponents should be passed a list of components to run" + + def components_ = args.components + if (components_ !instanceof List) { + components_ = [ components_ ] + } + assert components_.size() > 0: "pass at least one component to runComponents" + + def fromState_ = args.fromState + def toState_ = args.toState + def filter_ = args.filter + def id_ = args.id + + workflow runComponentsWf { + take: input_ch + main: + + // generate one channel per method + out_chs = components_.collect{ comp_ -> + def comp_config = comp_.config + + def filter_ch = filter_ + ? input_ch | filter{tup -> + filter_(tup[0], tup[1], comp_config) + } + : input_ch + def id_ch = id_ + ? filter_ch | map{tup -> + // def new_id = id_(tup[0], tup[1], comp_config) + def new_id = tup[0] + if (id_ instanceof String) { + new_id = id_ + } else if (id_ instanceof Closure) { + new_id = id_(new_id, tup[1], comp_config) + } + [new_id] + tup.drop(1) + } + : filter_ch + def data_ch = id_ch | map{tup -> + def new_data = tup[1] + if (fromState_ instanceof Map) { + new_data = fromState_.collectEntries{ key0, key1 -> + [key0, new_data[key1]] + } + } else if (fromState_ instanceof List) { + new_data = fromState_.collectEntries{ key -> + [key, new_data[key]] + } + } else if (fromState_ instanceof Closure) { + new_data = fromState_(tup[0], new_data, comp_config) + } + tup.take(1) + [new_data] + tup.drop(1) + } + def out_ch = data_ch + | comp_.run( + auto: (args.auto ?: [:]) + [simplifyInput: false, simplifyOutput: false] + ) + def post_ch = toState_ + ? out_ch | map{tup -> + def output = tup[1] + def old_state = tup[2] + def new_state = null + if (toState_ instanceof Map) { + new_state = old_state + toState_.collectEntries{ key0, key1 -> + [key0, output[key1]] + } + } else if (toState_ instanceof List) { + new_state = old_state + toState_.collectEntries{ key -> + [key, output[key]] + } + } else if (toState_ instanceof Closure) { + new_state = toState_(tup[0], output, old_state, comp_config) + } + [tup[0], new_state] + tup.drop(3) + } + : out_ch + + post_ch + } + + // mix all results + output_ch = + (out_chs.size == 1) + ? out_chs[0] + : out_chs[0].mix(*out_chs.drop(1)) + + emit: output_ch + } + + return runComponentsWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/runEach.nf' +/** + * Run a list of components on a stream of data. + * + * @param components: list of Viash VDSL3 modules to run + * @param fromState: a closure, a map or a list of keys to extract from the input data. + * If a closure, it will be called with the id, the data and the component itself. + * @param toState: a closure, a map or a list of keys to extract from the output data + * If a closure, it will be called with the id, the output data, the old state and the component itself. + * @param filter: filter function to apply to the input. + * It will be called with the id, the data and the component itself. + * @param id: id to use for the output data + * If a closure, it will be called with the id, the data and the component itself. + * @param auto: auto options to pass to the components + * + * @return: a workflow that runs the components + **/ +def runEach(Map args) { + assert args.components: "runEach should be passed a list of components to run" + + def components_ = args.components + if (components_ !instanceof List) { + components_ = [ components_ ] + } + assert components_.size() > 0: "pass at least one component to runEach" + + def fromState_ = args.fromState + def toState_ = args.toState + def filter_ = args.filter + def runIf_ = args.runIf + def id_ = args.id + + assert !runIf_ || runIf_ instanceof Closure: "runEach: must pass a Closure to runIf." + + workflow runEachWf { + take: input_ch + main: + + // generate one channel per method + out_chs = components_.collect{ comp_ -> + def filter_ch = filter_ + ? input_ch | filter{tup -> + filter_(tup[0], tup[1], comp_) + } + : input_ch + def id_ch = id_ + ? filter_ch | map{tup -> + def new_id = id_ + if (new_id instanceof Closure) { + new_id = new_id(tup[0], tup[1], comp_) + } + assert new_id instanceof String : "Error in runEach: id should be a String or a Closure that returns a String. Expected: id instanceof String. Found: ${new_id.getClass()}" + [new_id] + tup.drop(1) + } + : filter_ch + def chPassthrough = null + def chRun = null + if (runIf_) { + def idRunIfBranch = id_ch.branch{ tup -> + run: runIf_(tup[0], tup[1], comp_) + passthrough: true + } + chPassthrough = idRunIfBranch.passthrough + chRun = idRunIfBranch.run + } else { + chRun = id_ch + chPassthrough = Channel.empty() + } + def data_ch = chRun | map{tup -> + def new_data = tup[1] + if (fromState_ instanceof Map) { + new_data = fromState_.collectEntries{ key0, key1 -> + [key0, new_data[key1]] + } + } else if (fromState_ instanceof List) { + new_data = fromState_.collectEntries{ key -> + [key, new_data[key]] + } + } else if (fromState_ instanceof Closure) { + new_data = fromState_(tup[0], new_data, comp_) + } + tup.take(1) + [new_data] + tup.drop(1) + } + def out_ch = data_ch + | comp_.run( + auto: (args.auto ?: [:]) + [simplifyInput: false, simplifyOutput: false] + ) + def post_ch = toState_ + ? out_ch | map{tup -> + def output = tup[1] + def old_state = tup[2] + def new_state = null + if (toState_ instanceof Map) { + new_state = old_state + toState_.collectEntries{ key0, key1 -> + [key0, output[key1]] + } + } else if (toState_ instanceof List) { + new_state = old_state + toState_.collectEntries{ key -> + [key, output[key]] + } + } else if (toState_ instanceof Closure) { + new_state = toState_(tup[0], output, old_state, comp_) + } + [tup[0], new_state] + tup.drop(3) + } + : out_ch + + def return_ch = post_ch + | concat(chPassthrough) + + return_ch + } + + // mix all results + output_ch = + (out_chs.size == 1) + ? out_chs[0] + : out_chs[0].mix(*out_chs.drop(1)) + + emit: output_ch + } + + return runEachWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/safeJoin.nf' +/** + * Join sourceChannel to targetChannel + * + * This function joins the sourceChannel to the targetChannel. + * However, each id in the targetChannel must be present in the + * sourceChannel. If _meta.join_id exists in the targetChannel, that is + * used as an id instead. If the id doesn't match any id in the sourceChannel, + * an error is thrown. + */ + +def safeJoin(targetChannel, sourceChannel, key) { + def sourceIDs = new IDChecker() + + def sourceCheck = sourceChannel + | map { tup -> + sourceIDs.observe(tup[0]) + tup + } + def targetCheck = targetChannel + | map { tup -> + def id = tup[0] + + if (!sourceIDs.contains(id)) { + error ( + "Error in module '${key}' when merging output with original state.\n" + + " Reason: output with id '${id}' could not be joined with source channel.\n" + + " If the IDs in the output channel differ from the input channel,\n" + + " please set `tup[1]._meta.join_id to the original ID.\n" + + " Original IDs in input channel: ['${sourceIDs.getItems().join("', '")}'].\n" + + " Unexpected ID in the output channel: '${id}'.\n" + + " Example input event: [\"id\", [input: file(...)]],\n" + + " Example output event: [\"newid\", [output: file(...), _meta: [join_id: \"id\"]]]" + ) + } + // TODO: add link to our documentation on how to fix this + + tup + } + + sourceCheck.cross(targetChannel) + | map{ left, right -> + right + left.drop(1) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/_processArgument.nf' +def _processArgument(arg) { + arg.multiple = arg.multiple != null ? arg.multiple : false + arg.required = arg.required != null ? arg.required : false + arg.direction = arg.direction != null ? arg.direction : "input" + arg.multiple_sep = arg.multiple_sep != null ? arg.multiple_sep : ";" + arg.plainName = arg.name.replaceAll("^-*", "") + + if (arg.type == "file") { + arg.must_exist = arg.must_exist != null ? arg.must_exist : true + arg.create_parent = arg.create_parent != null ? arg.create_parent : true + } + + // add default values to output files which haven't already got a default + if (arg.type == "file" && arg.direction == "output" && arg.default == null) { + def mult = arg.multiple ? "_*" : "" + def extSearch = "" + if (arg.default != null) { + extSearch = arg.default + } else if (arg.example != null) { + extSearch = arg.example + } + if (extSearch instanceof List) { + extSearch = extSearch[0] + } + def extSearchResult = extSearch.find("\\.[^\\.]+\$") + def ext = extSearchResult != null ? extSearchResult : "" + arg.default = "\$id.\$key.${arg.plainName}${mult}${ext}" + if (arg.multiple) { + arg.default = [arg.default] + } + } + + if (!arg.multiple) { + if (arg.default != null && arg.default instanceof List) { + arg.default = arg.default[0] + } + if (arg.example != null && arg.example instanceof List) { + arg.example = arg.example[0] + } + } + + if (arg.type == "boolean_true") { + arg.default = false + } + if (arg.type == "boolean_false") { + arg.default = true + } + + arg +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/addGlobalParams.nf' +def addGlobalArguments(config) { + def localConfig = [ + "argument_groups": [ + [ + "name": "Nextflow input-output arguments", + "description": "Input/output parameters for Nextflow itself. Please note that both publishDir and publish_dir are supported but at least one has to be configured.", + "arguments" : [ + [ + 'name': '--publish_dir', + 'required': true, + 'type': 'string', + 'description': 'Path to an output directory.', + 'example': 'output/', + 'multiple': false + ], + [ + 'name': '--param_list', + 'required': false, + 'type': 'string', + 'description': '''Allows inputting multiple parameter sets to initialise a Nextflow channel. A `param_list` can either be a list of maps, a csv file, a json file, a yaml file, or simply a yaml blob. + | + |* A list of maps (as-is) where the keys of each map corresponds to the arguments of the pipeline. Example: in a `nextflow.config` file: `param_list: [ ['id': 'foo', 'input': 'foo.txt'], ['id': 'bar', 'input': 'bar.txt'] ]`. + |* A csv file should have column names which correspond to the different arguments of this pipeline. Example: `--param_list data.csv` with columns `id,input`. + |* A json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. Example: `--param_list data.json` with contents `[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ]`. + |* A yaml blob can also be passed directly as a string. Example: `--param_list "[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ]"`. + | + |When passing a csv, json or yaml file, relative path names are relativized to the location of the parameter file. No relativation is performed when `param_list` is a list of maps (as-is) or a yaml blob.'''.stripMargin(), + 'example': 'my_params.yaml', + 'multiple': false, + 'hidden': true + ] + // TODO: allow multiple: true in param_list? + // TODO: allow to specify a --param_list_regex to filter the param_list? + // TODO: allow to specify a --param_list_from_state to remap entries in the param_list? + ] + ] + ] + ] + + return processConfig(_mergeMap(config, localConfig)) +} + +def _mergeMap(Map lhs, Map rhs) { + return rhs.inject(lhs.clone()) { map, entry -> + if (map[entry.key] instanceof Map && entry.value instanceof Map) { + map[entry.key] = _mergeMap(map[entry.key], entry.value) + } else if (map[entry.key] instanceof Collection && entry.value instanceof Collection) { + map[entry.key] += entry.value + } else { + map[entry.key] = entry.value + } + return map + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/generateHelp.nf' +def _generateArgumentHelp(param) { + // alternatives are not supported + // def names = param.alternatives ::: List(param.name) + + def unnamedProps = [ + ["required parameter", param.required], + ["multiple values allowed", param.multiple], + ["output", param.direction.toLowerCase() == "output"], + ["file must exist", param.type == "file" && param.must_exist] + ].findAll{it[1]}.collect{it[0]} + + def dflt = null + if (param.default != null) { + if (param.default instanceof List) { + dflt = param.default.join(param.multiple_sep != null ? param.multiple_sep : ", ") + } else { + dflt = param.default.toString() + } + } + def example = null + if (param.example != null) { + if (param.example instanceof List) { + example = param.example.join(param.multiple_sep != null ? param.multiple_sep : ", ") + } else { + example = param.example.toString() + } + } + def min = param.min?.toString() + def max = param.max?.toString() + + def escapeChoice = { choice -> + def s1 = choice.replaceAll("\\n", "\\\\n") + def s2 = s1.replaceAll("\"", """\\\"""") + s2.contains(",") || s2 != choice ? "\"" + s2 + "\"" : s2 + } + def choices = param.choices == null ? + null : + "[ " + param.choices.collect{escapeChoice(it.toString())}.join(", ") + " ]" + + def namedPropsStr = [ + ["type", ([param.type] + unnamedProps).join(", ")], + ["default", dflt], + ["example", example], + ["choices", choices], + ["min", min], + ["max", max] + ] + .findAll{it[1]} + .collect{"\n " + it[0] + ": " + it[1].replaceAll("\n", "\\n")} + .join("") + + def descStr = param.description == null ? + "" : + _paragraphWrap("\n" + param.description.trim(), 80 - 8).join("\n ") + + "\n --" + param.plainName + + namedPropsStr + + descStr +} + +// Based on Helper.generateHelp() in Helper.scala +def _generateHelp(config) { + def fun = config + + // PART 1: NAME AND VERSION + def nameStr = fun.name + + (fun.version == null ? "" : " " + fun.version) + + // PART 2: DESCRIPTION + def descrStr = fun.description == null ? + "" : + "\n\n" + _paragraphWrap(fun.description.trim(), 80).join("\n") + + // PART 3: Usage + def usageStr = fun.usage == null ? + "" : + "\n\nUsage:\n" + fun.usage.trim() + + // PART 4: Options + def argGroupStrs = fun.allArgumentGroups.collect{argGroup -> + def name = argGroup.name + def descriptionStr = argGroup.description == null ? + "" : + "\n " + _paragraphWrap(argGroup.description.trim(), 80-4).join("\n ") + "\n" + def arguments = argGroup.arguments.collect{arg -> + arg instanceof String ? fun.allArguments.find{it.plainName == arg} : arg + }.findAll{it != null} + def argumentStrs = arguments.collect{param -> _generateArgumentHelp(param)} + + "\n\n$name:" + + descriptionStr + + argumentStrs.join("\n") + } + + // FINAL: combine + def out = nameStr + + descrStr + + usageStr + + argGroupStrs.join("") + + return out +} + +// based on Format._paragraphWrap +def _paragraphWrap(str, maxLength) { + def outLines = [] + str.split("\n").each{par -> + def words = par.split("\\s").toList() + + def word = null + def line = words.pop() + while(!words.isEmpty()) { + word = words.pop() + if (line.length() + word.length() + 1 <= maxLength) { + line = line + " " + word + } else { + outLines.add(line) + line = word + } + } + if (words.isEmpty()) { + outLines.add(line) + } + } + return outLines +} + +def helpMessage(config) { + if (params.containsKey("help") && params.help) { + def mergedConfig = addGlobalArguments(config) + def helpStr = _generateHelp(mergedConfig) + println(helpStr) + exit 0 + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/processConfig.nf' +def processConfig(config) { + // set defaults for arguments + config.arguments = + (config.arguments ?: []).collect{_processArgument(it)} + + // set defaults for argument_group arguments + config.argument_groups = + (config.argument_groups ?: []).collect{grp -> + grp.arguments = (grp.arguments ?: []).collect{_processArgument(it)} + grp + } + + // create combined arguments list + config.allArguments = + config.arguments + + config.argument_groups.collectMany{it.arguments} + + // add missing argument groups (based on Functionality::allArgumentGroups()) + def argGroups = config.argument_groups + if (argGroups.any{it.name.toLowerCase() == "arguments"}) { + argGroups = argGroups.collect{ grp -> + if (grp.name.toLowerCase() == "arguments") { + grp = grp + [ + arguments: grp.arguments + config.arguments + ] + } + grp + } + } else { + argGroups = argGroups + [ + name: "Arguments", + arguments: config.arguments + ] + } + config.allArgumentGroups = argGroups + + config +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/readConfig.nf' + +def readConfig(file) { + def config = readYaml(file ?: moduleDir.resolve("config.vsh.yaml")) + processConfig(config) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/_resolveSiblingIfNotAbsolute.nf' +/** + * Resolve a path relative to the current file. + * + * @param str The path to resolve, as a String. + * @param parentPath The path to resolve relative to, as a Path. + * + * @return The path that may have been resovled, as a Path. + */ +def _resolveSiblingIfNotAbsolute(str, parentPath) { + if (str !instanceof String) { + return str + } + if (!_stringIsAbsolutePath(str)) { + return parentPath.resolveSibling(str) + } else { + return file(str, hidden: true) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/_stringIsAbsolutePath.nf' +/** + * Check whether a path as a string is absolute. + * + * In the past, we tried using `file(., relative: true).isAbsolute()`, + * but the 'relative' option was added in 22.10.0. + * + * @param path The path to check, as a String. + * + * @return Whether the path is absolute, as a boolean. + */ +def _stringIsAbsolutePath(path) { + def _resolve_URL_PROTOCOL = ~/^([a-zA-Z][a-zA-Z0-9]*:)?\\/.+/ + + assert path instanceof String + return _resolve_URL_PROTOCOL.matcher(path).matches() +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/collectTraces.nf' +class CustomTraceObserver implements nextflow.trace.TraceObserver { + List traces + + CustomTraceObserver(List traces) { + this.traces = traces + } + + @Override + void onProcessComplete(nextflow.processor.TaskHandler handler, nextflow.trace.TraceRecord trace) { + def trace2 = trace.store.clone() + trace2.script = null + traces.add(trace2) + } + + @Override + void onProcessCached(nextflow.processor.TaskHandler handler, nextflow.trace.TraceRecord trace) { + def trace2 = trace.store.clone() + trace2.script = null + traces.add(trace2) + } +} + +def collectTraces() { + def traces = Collections.synchronizedList([]) + + // add custom trace observer which stores traces in the traces object + session.observers.add(new CustomTraceObserver(traces)) + + traces +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/deepClone.nf' +/** + * Performs a deep clone of the given object. + * @param x an object + */ +def deepClone(x) { + iterateMap(x, {it instanceof Cloneable ? it.clone() : it}) +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/getPublishDir.nf' +def getPublishDir() { + return params.containsKey("publish_dir") ? params.publish_dir : + params.containsKey("publishDir") ? params.publishDir : + null +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/getRootDir.nf' + +// Recurse upwards until we find a '.build.yaml' file +def _findBuildYamlFile(pathPossiblySymlink) { + def path = pathPossiblySymlink.toRealPath() + def child = path.resolve(".build.yaml") + if (java.nio.file.Files.isDirectory(path) && java.nio.file.Files.exists(child)) { + return child + } else { + def parent = path.getParent() + if (parent == null) { + return null + } else { + return _findBuildYamlFile(parent) + } + } +} + +// get the root of the target folder +def getRootDir() { + def dir = _findBuildYamlFile(meta.resources_dir) + assert dir != null: "Could not find .build.yaml in the folder structure" + dir.getParent() +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/iterateMap.nf' +/** + * Recursively apply a function over the leaves of an object. + * @param obj The object to iterate over. + * @param fun The function to apply to each value. + * @return The object with the function applied to each value. + */ +def iterateMap(obj, fun) { + if (obj instanceof List && obj !instanceof String) { + return obj.collect{item -> + iterateMap(item, fun) + } + } else if (obj instanceof Map) { + return obj.collectEntries{key, item -> + [key.toString(), iterateMap(item, fun)] + } + } else { + return fun(obj) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/niceView.nf' +/** + * A view for printing the event of each channel as a YAML blob. + * This is useful for debugging. + */ +def niceView() { + workflow niceViewWf { + take: input + main: + output = input + | view{toYamlBlob(it)} + emit: output + } + return niceViewWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readCsv.nf' + +def readCsv(file_path) { + def output = [] + def inputFile = file_path !instanceof Path ? file(file_path, hidden: true) : file_path + + // todo: allow escaped quotes in string + // todo: allow single quotes? + def splitRegex = java.util.regex.Pattern.compile(''',(?=(?:[^"]*"[^"]*")*[^"]*$)''') + def removeQuote = java.util.regex.Pattern.compile('''"(.*)"''') + + def br = java.nio.file.Files.newBufferedReader(inputFile) + + def row = -1 + def header = null + while (br.ready() && header == null) { + def line = br.readLine() + row++ + if (!line.startsWith("#")) { + header = splitRegex.split(line, -1).collect{field -> + m = removeQuote.matcher(field) + m.find() ? m.replaceFirst('$1') : field + } + } + } + assert header != null: "CSV file should contain a header" + + while (br.ready()) { + def line = br.readLine() + row++ + if (line == null) { + br.close() + break + } + + if (!line.startsWith("#")) { + def predata = splitRegex.split(line, -1) + def data = predata.collect{field -> + if (field == "") { + return null + } + def m = removeQuote.matcher(field) + if (m.find()) { + return m.replaceFirst('$1') + } else { + return field + } + } + assert header.size() == data.size(): "Row $row should contain the same number as fields as the header" + + def dataMap = [header, data].transpose().collectEntries().findAll{it.value != null} + output.add(dataMap) + } + } + + output +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readJson.nf' +def readJson(file_path) { + def inputFile = file_path !instanceof Path ? file(file_path, hidden: true) : file_path + def jsonSlurper = new groovy.json.JsonSlurper() + jsonSlurper.parse(inputFile) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readJsonBlob.nf' +def readJsonBlob(str) { + def jsonSlurper = new groovy.json.JsonSlurper() + jsonSlurper.parseText(str) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readTaggedYaml.nf' +// Custom constructor to modify how certain objects are parsed from YAML +class CustomConstructor extends org.yaml.snakeyaml.constructor.Constructor { + Path root + + class ConstructPath extends org.yaml.snakeyaml.constructor.AbstractConstruct { + public Object construct(org.yaml.snakeyaml.nodes.Node node) { + String filename = (String) constructScalar(node); + if (root != null) { + return root.resolve(filename); + } + return java.nio.file.Paths.get(filename); + } + } + + CustomConstructor(org.yaml.snakeyaml.LoaderOptions options, Path root) { + super(options) + this.root = root + // Handling !file tag and parse it back to a File type + this.yamlConstructors.put(new org.yaml.snakeyaml.nodes.Tag("!file"), new ConstructPath()) + } +} + +def readTaggedYaml(Path path) { + def options = new org.yaml.snakeyaml.LoaderOptions() + def constructor = new CustomConstructor(options, path.getParent()) + def yaml = new org.yaml.snakeyaml.Yaml(constructor) + return yaml.load(path.text) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readYaml.nf' +def readYaml(file_path) { + def inputFile = file_path !instanceof Path ? file(file_path, hidden: true) : file_path + def yamlSlurper = new org.yaml.snakeyaml.Yaml() + yamlSlurper.load(inputFile) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readYamlBlob.nf' +def readYamlBlob(str) { + def yamlSlurper = new org.yaml.snakeyaml.Yaml() + yamlSlurper.load(str) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/toJsonBlob.nf' +String toJsonBlob(data) { + return groovy.json.JsonOutput.toJson(data) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/toTaggedYamlBlob.nf' +// Custom representer to modify how certain objects are represented in YAML +class CustomRepresenter extends org.yaml.snakeyaml.representer.Representer { + Path relativizer + + class RepresentPath implements org.yaml.snakeyaml.representer.Represent { + public String getFileName(Object obj) { + if (obj instanceof File) { + obj = ((File) obj).toPath(); + } + if (obj !instanceof Path) { + throw new IllegalArgumentException("Object: " + obj + " is not a Path or File"); + } + def path = (Path) obj; + + if (relativizer != null) { + return relativizer.relativize(path).toString() + } else { + return path.toString() + } + } + + public org.yaml.snakeyaml.nodes.Node representData(Object data) { + String filename = getFileName(data); + def tag = new org.yaml.snakeyaml.nodes.Tag("!file"); + return representScalar(tag, filename); + } + } + CustomRepresenter(org.yaml.snakeyaml.DumperOptions options, Path relativizer) { + super(options) + this.relativizer = relativizer + this.representers.put(sun.nio.fs.UnixPath, new RepresentPath()) + this.representers.put(Path, new RepresentPath()) + this.representers.put(File, new RepresentPath()) + } +} + +String toTaggedYamlBlob(data) { + return toRelativeTaggedYamlBlob(data, null) +} +String toRelativeTaggedYamlBlob(data, Path relativizer) { + def options = new org.yaml.snakeyaml.DumperOptions() + options.setDefaultFlowStyle(org.yaml.snakeyaml.DumperOptions.FlowStyle.BLOCK) + def representer = new CustomRepresenter(options, relativizer) + def yaml = new org.yaml.snakeyaml.Yaml(representer, options) + return yaml.dump(data) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/toYamlBlob.nf' +String toYamlBlob(data) { + def options = new org.yaml.snakeyaml.DumperOptions() + options.setDefaultFlowStyle(org.yaml.snakeyaml.DumperOptions.FlowStyle.BLOCK) + options.setPrettyFlow(true) + def yaml = new org.yaml.snakeyaml.Yaml(options) + def cleanData = iterateMap(data, { it instanceof Path ? it.toString() : it }) + return yaml.dump(cleanData) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/writeJson.nf' +void writeJson(data, file) { + assert data: "writeJson: data should not be null" + assert file: "writeJson: file should not be null" + file.write(toJsonBlob(data)) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/writeYaml.nf' +void writeYaml(data, file) { + assert data: "writeYaml: data should not be null" + assert file: "writeYaml: file should not be null" + file.write(toYamlBlob(data)) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/findStates.nf' +def findStates(Map params, Map config) { + def auto_config = deepClone(config) + def auto_params = deepClone(params) + + auto_config = auto_config.clone() + // override arguments + auto_config.argument_groups = [] + auto_config.arguments = [ + [ + type: "string", + name: "--id", + description: "A dummy identifier", + required: false + ], + [ + type: "file", + name: "--input_states", + example: "/path/to/input/directory/**/state.yaml", + description: "Path to input directory containing the datasets to be integrated.", + required: true, + multiple: true, + multiple_sep: ";" + ], + [ + type: "string", + name: "--filter", + example: "foo/.*/state.yaml", + description: "Regex to filter state files by path.", + required: false + ], + // to do: make this a yaml blob? + [ + type: "string", + name: "--rename_keys", + example: ["newKey1:oldKey1", "newKey2:oldKey2"], + description: "Rename keys in the detected input files. This is useful if the input files do not match the set of input arguments of the workflow.", + required: false, + multiple: true, + multiple_sep: ";" + ], + [ + type: "string", + name: "--settings", + example: '{"output_dataset": "dataset.h5ad", "k": 10}', + description: "Global arguments as a JSON glob to be passed to all components.", + required: false + ] + ] + if (!(auto_params.containsKey("id"))) { + auto_params["id"] = "auto" + } + + // run auto config through processConfig once more + auto_config = processConfig(auto_config) + + workflow findStatesWf { + helpMessage(auto_config) + + output_ch = + channelFromParams(auto_params, auto_config) + | flatMap { autoId, args -> + + def globalSettings = args.settings ? readYamlBlob(args.settings) : [:] + + // look for state files in input dir + def stateFiles = args.input_states + + // filter state files by regex + if (args.filter) { + stateFiles = stateFiles.findAll{ stateFile -> + def stateFileStr = stateFile.toString() + def matcher = stateFileStr =~ args.filter + matcher.matches()} + } + + // read in states + def states = stateFiles.collect { stateFile -> + def state_ = readTaggedYaml(stateFile) + [state_.id, state_] + } + + // construct renameMap + if (args.rename_keys) { + def renameMap = args.rename_keys.collectEntries{renameString -> + def split = renameString.split(":") + assert split.size() == 2: "Argument 'rename_keys' should be of the form 'newKey:oldKey', or 'newKey:oldKey;newKey:oldKey' in case of multiple values" + split + } + + // rename keys in state, only let states through which have all keys + // also add global settings + states = states.collectMany{id, state -> + def newState = [:] + + for (key in renameMap.keySet()) { + def origKey = renameMap[key] + if (!(state.containsKey(origKey))) { + return [] + } + newState[key] = state[origKey] + } + + [[id, globalSettings + newState]] + } + } + + states + } + emit: + output_ch + } + + return findStatesWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/joinStates.nf' +def joinStates(Closure apply_) { + workflow joinStatesWf { + take: input_ch + main: + output_ch = input_ch + | toSortedList + | filter{ it.size() > 0 } + | map{ tups -> + def ids = tups.collect{it[0]} + def states = tups.collect{it[1]} + apply_(ids, states) + } + + emit: output_ch + } + return joinStatesWf +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/publishStates.nf' +def collectFiles(obj) { + if (obj instanceof java.io.File || obj instanceof Path) { + return [obj] + } else if (obj instanceof List && obj !instanceof String) { + return obj.collectMany{item -> + collectFiles(item) + } + } else if (obj instanceof Map) { + return obj.collectMany{key, item -> + collectFiles(item) + } + } else { + return [] + } +} + +/** + * Recurse through a state and collect all input files and their target output filenames. + * @param obj The state to recurse through. + * @param prefix The prefix to prepend to the output filenames. + */ +def collectInputOutputPaths(obj, prefix) { + if (obj instanceof File || obj instanceof Path) { + def path = obj instanceof Path ? obj : obj.toPath() + def ext = path.getFileName().toString().find("\\.[^\\.]+\$") ?: "" + def newFilename = prefix + ext + return [[obj, newFilename]] + } else if (obj instanceof List && obj !instanceof String) { + return obj.withIndex().collectMany{item, ix -> + collectInputOutputPaths(item, prefix + "_" + ix) + } + } else if (obj instanceof Map) { + return obj.collectMany{key, item -> + collectInputOutputPaths(item, prefix + "." + key) + } + } else { + return [] + } +} + +def publishStates(Map args) { + def key_ = args.get("key") + def yamlTemplate_ = args.get("output_state", args.get("outputState", '$id.$key.state.yaml')) + + assert key_ != null : "publishStates: key must be specified" + + workflow publishStatesWf { + take: input_ch + main: + input_ch + | map { tup -> + def id_ = tup[0] + def state_ = tup[1] + + // the input files and the target output filenames + def inputoutputFilenames_ = collectInputOutputPaths(state_, id_ + "." + key_).transpose() + def inputFiles_ = inputoutputFilenames_[0] + def outputFilenames_ = inputoutputFilenames_[1] + + def yamlFilename = yamlTemplate_ + .replaceAll('\\$id', id_) + .replaceAll('\\$\\{id\\}', id_) + .replaceAll('\\$key', key_) + .replaceAll('\\$\\{key\\}', key_) + + // TODO: do the pathnames in state_ match up with the outputFilenames_? + + // convert state to yaml blob + def yamlBlob_ = toRelativeTaggedYamlBlob([id: id_] + state_, java.nio.file.Paths.get(yamlFilename)) + + [id_, yamlBlob_, yamlFilename, inputFiles_, outputFilenames_] + } + | publishStatesProc + emit: input_ch + } + return publishStatesWf +} +process publishStatesProc { + // todo: check publishpath? + publishDir path: "${getPublishDir()}/", mode: "copy" + tag "$id" + input: + tuple val(id), val(yamlBlob), val(yamlFile), path(inputFiles, stageAs: "_inputfile?/*"), val(outputFiles) + output: + tuple val(id), path{[yamlFile] + outputFiles} + script: + def copyCommands = [ + inputFiles instanceof List ? inputFiles : [inputFiles], + outputFiles instanceof List ? outputFiles : [outputFiles] + ] + .transpose() + .collectMany{infile, outfile -> + if (infile.toString() != outfile.toString()) { + [ + "[ -d \"\$(dirname '${outfile.toString()}')\" ] || mkdir -p \"\$(dirname '${outfile.toString()}')\"", + "cp -r '${infile.toString()}' '${outfile.toString()}'" + ] + } else { + // no need to copy if infile is the same as outfile + [] + } + } + """ +mkdir -p "\$(dirname '${yamlFile}')" +echo "Storing state as yaml" +echo '${yamlBlob}' > '${yamlFile}' +echo "Copying output files to destination folder" +${copyCommands.join("\n ")} +""" +} + + +// this assumes that the state contains no other values other than those specified in the config +def publishStatesByConfig(Map args) { + def config = args.get("config") + assert config != null : "publishStatesByConfig: config must be specified" + + def key_ = args.get("key", config.name) + assert key_ != null : "publishStatesByConfig: key must be specified" + + workflow publishStatesSimpleWf { + take: input_ch + main: + input_ch + | map { tup -> + def id_ = tup[0] + def state_ = tup[1] // e.g. [output: new File("myoutput.h5ad"), k: 10] + def origState_ = tup[2] // e.g. [output: '$id.$key.foo.h5ad'] + + // TODO: allow overriding the state.yaml template + // TODO TODO: if auto.publish == "state", add output_state as an argument + def yamlTemplate = params.containsKey("output_state") ? params.output_state : '$id.$key.state.yaml' + def yamlFilename = yamlTemplate + .replaceAll('\\$id', id_) + .replaceAll('\\$\\{id\\}', id_) + .replaceAll('\\$key', key_) + .replaceAll('\\$\\{key\\}', key_) + def yamlDir = java.nio.file.Paths.get(yamlFilename).getParent() + + // the processed state is a list of [key, value, inputPath, outputFilename] tuples, where + // - key is a String + // - value is any object that can be serialized to a Yaml (so a String/Integer/Long/Double/Boolean, a List, a Map, or a Path) + // - inputPath is a List[Path] + // - outputFilename is a List[String] + // - (key, value) are the tuples that will be saved to the state.yaml file + // - (inputPath, outputFilename) are the files that will be copied from src to dest (relative to the state.yaml) + def processedState = + config.allArguments + .findAll { it.direction == "output" } + .collectMany { par -> + def plainName_ = par.plainName + // if the state does not contain the key, it's an + // optional argument for which the component did + // not generate any output + if (!state_.containsKey(plainName_)) { + return [] + } + def value = state_[plainName_] + // if the parameter is not a file, it should be stored + // in the state as-is, but is not something that needs + // to be copied from the source path to the dest path + if (par.type != "file") { + return [[key: plainName_, value: value, inputPath: [], outputFilename: []]] + } + // if the orig state does not contain this filename, + // it's an optional argument for which the user specified + // that it should not be returned as a state + if (!origState_.containsKey(plainName_)) { + return [] + } + def filenameTemplate = origState_[plainName_] + // if the pararameter is multiple: true, fetch the template + if (par.multiple && filenameTemplate instanceof List) { + filenameTemplate = filenameTemplate[0] + } + // instantiate the template + def filename = filenameTemplate + .replaceAll('\\$id', id_) + .replaceAll('\\$\\{id\\}', id_) + .replaceAll('\\$key', key_) + .replaceAll('\\$\\{key\\}', key_) + if (par.multiple) { + // if the parameter is multiple: true, the filename + // should contain a wildcard '*' that is replaced with + // the index of the file + assert filename.contains("*") : "Module '${key_}' id '${id_}': Multiple output files specified, but no wildcard '*' in the filename: ${filename}" + def outputPerFile = value.withIndex().collect{ val, ix -> + def filename_ix = filename.replace("*", ix.toString()) + def value_ = java.nio.file.Paths.get(filename_ix) + // if id contains a slash + if (yamlDir != null) { + value_ = yamlDir.relativize(value_) + } + def inputPath = val instanceof File ? val.toPath() : val + [value: value_, inputPath: inputPath, outputFilename: filename_ix] + } + def transposedOutputs = ["value", "inputPath", "outputFilename"].collectEntries{ key -> + [key, outputPerFile.collect{dic -> dic[key]}] + } + return [[key: plainName_] + transposedOutputs] + } else { + def value_ = java.nio.file.Paths.get(filename) + // if id contains a slash + if (yamlDir != null) { + value_ = yamlDir.relativize(value_) + } + def inputPath = value instanceof File ? value.toPath() : value + return [[key: plainName_, value: value_, inputPath: [inputPath], outputFilename: [filename]]] + } + } + + def updatedState_ = processedState.collectEntries{[it.key, it.value]} + def inputPaths = processedState.collectMany{it.inputPath} + def outputFilenames = processedState.collectMany{it.outputFilename} + + // convert state to yaml blob + def yamlBlob_ = toTaggedYamlBlob([id: id_] + updatedState_) + + [id_, yamlBlob_, yamlFilename, inputPaths, outputFilenames] + } + | publishStatesProc + emit: input_ch + } + return publishStatesSimpleWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/setState.nf' +def setState(fun) { + assert fun instanceof Closure || fun instanceof Map || fun instanceof List : + "Error in setState: Expected process argument to be a Closure, a Map, or a List. Found: class ${fun.getClass()}" + + // if fun is a List, convert to map + if (fun instanceof List) { + // check whether fun is a list[string] + assert fun.every{it instanceof CharSequence} : "Error in setState: argument is a List, but not all elements are Strings" + fun = fun.collectEntries{[it, it]} + } + + // if fun is a map, convert to closure + if (fun instanceof Map) { + // check whether fun is a map[string, string] + assert fun.values().every{it instanceof CharSequence} : "Error in setState: argument is a Map, but not all values are Strings" + assert fun.keySet().every{it instanceof CharSequence} : "Error in setState: argument is a Map, but not all keys are Strings" + def funMap = fun.clone() + // turn the map into a closure to be used later on + fun = { id_, state_ -> + assert state_ instanceof Map : "Error in setState: the state is not a Map" + funMap.collectMany{newkey, origkey -> + if (state_.containsKey(origkey)) { + [[newkey, state_[origkey]]] + } else { + [] + } + }.collectEntries() + } + } + + map { tup -> + def id = tup[0] + def state = tup[1] + def unfilteredState = fun(id, state) + def newState = unfilteredState.findAll{key, val -> val != null} + [id, newState] + tup.drop(2) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/processAuto.nf' +// TODO: unit test processAuto +def processAuto(Map auto) { + // remove null values + auto = auto.findAll{k, v -> v != null} + + // check for unexpected keys + def expectedKeys = ["simplifyInput", "simplifyOutput", "transcript", "publish"] + def unexpectedKeys = auto.keySet() - expectedKeys + assert unexpectedKeys.isEmpty(), "unexpected keys in auto: '${unexpectedKeys.join("', '")}'" + + // check auto.simplifyInput + assert auto.simplifyInput instanceof Boolean, "auto.simplifyInput must be a boolean" + + // check auto.simplifyOutput + assert auto.simplifyOutput instanceof Boolean, "auto.simplifyOutput must be a boolean" + + // check auto.transcript + assert auto.transcript instanceof Boolean, "auto.transcript must be a boolean" + + // check auto.publish + assert auto.publish instanceof Boolean || auto.publish == "state", "auto.publish must be a boolean or 'state'" + + return auto.subMap(expectedKeys) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/processDirectives.nf' +def assertMapKeys(map, expectedKeys, requiredKeys, mapName) { + assert map instanceof Map : "Expected argument '$mapName' to be a Map. Found: class ${map.getClass()}" + map.forEach { key, val -> + assert key in expectedKeys : "Unexpected key '$key' in ${mapName ? mapName + " " : ""}map" + } + requiredKeys.forEach { requiredKey -> + assert map.containsKey(requiredKey) : "Missing required key '$key' in ${mapName ? mapName + " " : ""}map" + } +} + +// TODO: unit test processDirectives +def processDirectives(Map drctv) { + // remove null values + drctv = drctv.findAll{k, v -> v != null} + + // check for unexpected keys + def expectedKeys = [ + "accelerator", "afterScript", "beforeScript", "cache", "conda", "container", "containerOptions", "cpus", "disk", "echo", "errorStrategy", "executor", "machineType", "maxErrors", "maxForks", "maxRetries", "memory", "module", "penv", "pod", "publishDir", "queue", "label", "scratch", "storeDir", "stageInMode", "stageOutMode", "tag", "time" + ] + def unexpectedKeys = drctv.keySet() - expectedKeys + assert unexpectedKeys.isEmpty() : "Unexpected keys in process directive: '${unexpectedKeys.join("', '")}'" + + /* DIRECTIVE accelerator + accepted examples: + - [ limit: 4, type: "nvidia-tesla-k80" ] + */ + if (drctv.containsKey("accelerator")) { + assertMapKeys(drctv["accelerator"], ["type", "limit", "request", "runtime"], [], "accelerator") + } + + /* DIRECTIVE afterScript + accepted examples: + - "source /cluster/bin/cleanup" + */ + if (drctv.containsKey("afterScript")) { + assert drctv["afterScript"] instanceof CharSequence + } + + /* DIRECTIVE beforeScript + accepted examples: + - "source /cluster/bin/setup" + */ + if (drctv.containsKey("beforeScript")) { + assert drctv["beforeScript"] instanceof CharSequence + } + + /* DIRECTIVE cache + accepted examples: + - true + - false + - "deep" + - "lenient" + */ + if (drctv.containsKey("cache")) { + assert drctv["cache"] instanceof CharSequence || drctv["cache"] instanceof Boolean + if (drctv["cache"] instanceof CharSequence) { + assert drctv["cache"] in ["deep", "lenient"] : "Unexpected value for cache" + } + } + + /* DIRECTIVE conda + accepted examples: + - "bwa=0.7.15" + - "bwa=0.7.15 fastqc=0.11.5" + - ["bwa=0.7.15", "fastqc=0.11.5"] + */ + if (drctv.containsKey("conda")) { + if (drctv["conda"] instanceof List) { + drctv["conda"] = drctv["conda"].join(" ") + } + assert drctv["conda"] instanceof CharSequence + } + + /* DIRECTIVE container + accepted examples: + - "foo/bar:tag" + - [ registry: "reg", image: "im", tag: "ta" ] + is transformed to "reg/im:ta" + - [ image: "im" ] + is transformed to "im:latest" + */ + if (drctv.containsKey("container")) { + assert drctv["container"] instanceof Map || drctv["container"] instanceof CharSequence + if (drctv["container"] instanceof Map) { + def m = drctv["container"] + assertMapKeys(m, [ "registry", "image", "tag" ], ["image"], "container") + def part1 = + System.getenv('OVERRIDE_CONTAINER_REGISTRY') ? System.getenv('OVERRIDE_CONTAINER_REGISTRY') + "/" : + params.containsKey("override_container_registry") ? params["override_container_registry"] + "/" : // todo: remove? + m.registry ? m.registry + "/" : + "" + def part2 = m.image + def part3 = m.tag ? ":" + m.tag : ":latest" + drctv["container"] = part1 + part2 + part3 + } + } + + /* DIRECTIVE containerOptions + accepted examples: + - "--foo bar" + - ["--foo bar", "-f b"] + */ + if (drctv.containsKey("containerOptions")) { + if (drctv["containerOptions"] instanceof List) { + drctv["containerOptions"] = drctv["containerOptions"].join(" ") + } + assert drctv["containerOptions"] instanceof CharSequence + } + + /* DIRECTIVE cpus + accepted examples: + - 1 + - 10 + */ + if (drctv.containsKey("cpus")) { + assert drctv["cpus"] instanceof Integer + } + + /* DIRECTIVE disk + accepted examples: + - "1 GB" + - "2TB" + - "3.2KB" + - "10.B" + */ + if (drctv.containsKey("disk")) { + assert drctv["disk"] instanceof CharSequence + // assert drctv["disk"].matches("[0-9]+(\\.[0-9]*)? *[KMGTPEZY]?B") + // ^ does not allow closures + } + + /* DIRECTIVE echo + accepted examples: + - true + - false + */ + if (drctv.containsKey("echo")) { + assert drctv["echo"] instanceof Boolean + } + + /* DIRECTIVE errorStrategy + accepted examples: + - "terminate" + - "finish" + */ + if (drctv.containsKey("errorStrategy")) { + assert drctv["errorStrategy"] instanceof CharSequence + assert drctv["errorStrategy"] in ["terminate", "finish", "ignore", "retry"] : "Unexpected value for errorStrategy" + } + + /* DIRECTIVE executor + accepted examples: + - "local" + - "sge" + */ + if (drctv.containsKey("executor")) { + assert drctv["executor"] instanceof CharSequence + assert drctv["executor"] in ["local", "sge", "uge", "lsf", "slurm", "pbs", "pbspro", "moab", "condor", "nqsii", "ignite", "k8s", "awsbatch", "google-pipelines"] : "Unexpected value for executor" + } + + /* DIRECTIVE machineType + accepted examples: + - "n1-highmem-8" + */ + if (drctv.containsKey("machineType")) { + assert drctv["machineType"] instanceof CharSequence + } + + /* DIRECTIVE maxErrors + accepted examples: + - 1 + - 3 + */ + if (drctv.containsKey("maxErrors")) { + assert drctv["maxErrors"] instanceof Integer + } + + /* DIRECTIVE maxForks + accepted examples: + - 1 + - 3 + */ + if (drctv.containsKey("maxForks")) { + assert drctv["maxForks"] instanceof Integer + } + + /* DIRECTIVE maxRetries + accepted examples: + - 1 + - 3 + */ + if (drctv.containsKey("maxRetries")) { + assert drctv["maxRetries"] instanceof Integer + } + + /* DIRECTIVE memory + accepted examples: + - "1 GB" + - "2TB" + - "3.2KB" + - "10.B" + */ + if (drctv.containsKey("memory")) { + assert drctv["memory"] instanceof CharSequence + // assert drctv["memory"].matches("[0-9]+(\\.[0-9]*)? *[KMGTPEZY]?B") + // ^ does not allow closures + } + + /* DIRECTIVE module + accepted examples: + - "ncbi-blast/2.2.27" + - "ncbi-blast/2.2.27:t_coffee/10.0" + - ["ncbi-blast/2.2.27", "t_coffee/10.0"] + */ + if (drctv.containsKey("module")) { + if (drctv["module"] instanceof List) { + drctv["module"] = drctv["module"].join(":") + } + assert drctv["module"] instanceof CharSequence + } + + /* DIRECTIVE penv + accepted examples: + - "smp" + */ + if (drctv.containsKey("penv")) { + assert drctv["penv"] instanceof CharSequence + } + + /* DIRECTIVE pod + accepted examples: + - [ label: "key", value: "val" ] + - [ annotation: "key", value: "val" ] + - [ env: "key", value: "val" ] + - [ [label: "l", value: "v"], [env: "e", value: "v"]] + */ + if (drctv.containsKey("pod")) { + if (drctv["pod"] instanceof Map) { + drctv["pod"] = [ drctv["pod"] ] + } + assert drctv["pod"] instanceof List + drctv["pod"].forEach { pod -> + assert pod instanceof Map + // TODO: should more checks be added? + // See https://www.nextflow.io/docs/latest/process.html?highlight=directives#pod + // e.g. does it contain 'label' and 'value', or 'annotation' and 'value', or ...? + } + } + + /* DIRECTIVE publishDir + accepted examples: + - [] + - [ [ path: "foo", enabled: true ], [ path: "bar", enabled: false ] ] + - "/path/to/dir" + is transformed to [[ path: "/path/to/dir" ]] + - [ path: "/path/to/dir", mode: "cache" ] + is transformed to [[ path: "/path/to/dir", mode: "cache" ]] + */ + // TODO: should we also look at params["publishDir"]? + if (drctv.containsKey("publishDir")) { + def pblsh = drctv["publishDir"] + + // check different options + assert pblsh instanceof List || pblsh instanceof Map || pblsh instanceof CharSequence + + // turn into list if not already so + // for some reason, 'if (!pblsh instanceof List) pblsh = [ pblsh ]' doesn't work. + pblsh = pblsh instanceof List ? pblsh : [ pblsh ] + + // check elements of publishDir + pblsh = pblsh.collect{ elem -> + // turn into map if not already so + elem = elem instanceof CharSequence ? [ path: elem ] : elem + + // check types and keys + assert elem instanceof Map : "Expected publish argument '$elem' to be a String or a Map. Found: class ${elem.getClass()}" + assertMapKeys(elem, [ "path", "mode", "overwrite", "pattern", "saveAs", "enabled" ], ["path"], "publishDir") + + // check elements in map + assert elem.containsKey("path") + assert elem["path"] instanceof CharSequence + if (elem.containsKey("mode")) { + assert elem["mode"] instanceof CharSequence + assert elem["mode"] in [ "symlink", "rellink", "link", "copy", "copyNoFollow", "move" ] + } + if (elem.containsKey("overwrite")) { + assert elem["overwrite"] instanceof Boolean + } + if (elem.containsKey("pattern")) { + assert elem["pattern"] instanceof CharSequence + } + if (elem.containsKey("saveAs")) { + assert elem["saveAs"] instanceof CharSequence //: "saveAs as a Closure is currently not supported. Surround your closure with single quotes to get the desired effect. Example: '\{ foo \}'" + } + if (elem.containsKey("enabled")) { + assert elem["enabled"] instanceof Boolean + } + + // return final result + elem + } + // store final directive + drctv["publishDir"] = pblsh + } + + /* DIRECTIVE queue + accepted examples: + - "long" + - "short,long" + - ["short", "long"] + */ + if (drctv.containsKey("queue")) { + if (drctv["queue"] instanceof List) { + drctv["queue"] = drctv["queue"].join(",") + } + assert drctv["queue"] instanceof CharSequence + } + + /* DIRECTIVE label + accepted examples: + - "big_mem" + - "big_cpu" + - ["big_mem", "big_cpu"] + */ + if (drctv.containsKey("label")) { + if (drctv["label"] instanceof CharSequence) { + drctv["label"] = [ drctv["label"] ] + } + assert drctv["label"] instanceof List + drctv["label"].forEach { label -> + assert label instanceof CharSequence + // assert label.matches("[a-zA-Z0-9]([a-zA-Z0-9_]*[a-zA-Z0-9])?") + // ^ does not allow closures + } + } + + /* DIRECTIVE scratch + accepted examples: + - true + - "/path/to/scratch" + - '$MY_PATH_TO_SCRATCH' + - "ram-disk" + */ + if (drctv.containsKey("scratch")) { + assert drctv["scratch"] == true || drctv["scratch"] instanceof CharSequence + } + + /* DIRECTIVE storeDir + accepted examples: + - "/path/to/storeDir" + */ + if (drctv.containsKey("storeDir")) { + assert drctv["storeDir"] instanceof CharSequence + } + + /* DIRECTIVE stageInMode + accepted examples: + - "copy" + - "link" + */ + if (drctv.containsKey("stageInMode")) { + assert drctv["stageInMode"] instanceof CharSequence + assert drctv["stageInMode"] in ["copy", "link", "symlink", "rellink"] + } + + /* DIRECTIVE stageOutMode + accepted examples: + - "copy" + - "link" + */ + if (drctv.containsKey("stageOutMode")) { + assert drctv["stageOutMode"] instanceof CharSequence + assert drctv["stageOutMode"] in ["copy", "move", "rsync"] + } + + /* DIRECTIVE tag + accepted examples: + - "foo" + - '$id' + */ + if (drctv.containsKey("tag")) { + assert drctv["tag"] instanceof CharSequence + } + + /* DIRECTIVE time + accepted examples: + - "1h" + - "2days" + - "1day 6hours 3minutes 30seconds" + */ + if (drctv.containsKey("time")) { + assert drctv["time"] instanceof CharSequence + // todo: validation regex? + } + + return drctv +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/processWorkflowArgs.nf' +def processWorkflowArgs(Map args, Map defaultWfArgs, Map meta) { + // override defaults with args + def workflowArgs = defaultWfArgs + args + + // check whether 'key' exists + assert workflowArgs.containsKey("key") : "Error in module '${meta.config.name}': key is a required argument" + + // if 'key' is a closure, apply it to the original key + if (workflowArgs["key"] instanceof Closure) { + workflowArgs["key"] = workflowArgs["key"](meta.config.name) + } + def key = workflowArgs["key"] + assert key instanceof CharSequence : "Expected process argument 'key' to be a String. Found: class ${key.getClass()}" + assert key ==~ /^[a-zA-Z_]\w*$/ : "Error in module '$key': Expected process argument 'key' to consist of only letters, digits or underscores. Found: ${key}" + + // check for any unexpected keys + def expectedKeys = ["key", "directives", "auto", "map", "mapId", "mapData", "mapPassthrough", "filter", "runIf", "fromState", "toState", "args", "renameKeys", "debug"] + def unexpectedKeys = workflowArgs.keySet() - expectedKeys + assert unexpectedKeys.isEmpty() : "Error in module '$key': unexpected arguments to the '.run()' function: '${unexpectedKeys.join("', '")}'" + + // check whether directives exists and apply defaults + assert workflowArgs.containsKey("directives") : "Error in module '$key': directives is a required argument" + assert workflowArgs["directives"] instanceof Map : "Error in module '$key': Expected process argument 'directives' to be a Map. Found: class ${workflowArgs['directives'].getClass()}" + workflowArgs["directives"] = processDirectives(defaultWfArgs.directives + workflowArgs["directives"]) + + // check whether directives exists and apply defaults + assert workflowArgs.containsKey("auto") : "Error in module '$key': auto is a required argument" + assert workflowArgs["auto"] instanceof Map : "Error in module '$key': Expected process argument 'auto' to be a Map. Found: class ${workflowArgs['auto'].getClass()}" + workflowArgs["auto"] = processAuto(defaultWfArgs.auto + workflowArgs["auto"]) + + // auto define publish, if so desired + if (workflowArgs.auto.publish == true && (workflowArgs.directives.publishDir != null ? workflowArgs.directives.publishDir : [:]).isEmpty()) { + // can't assert at this level thanks to the no_publish profile + // assert params.containsKey("publishDir") || params.containsKey("publish_dir") : + // "Error in module '${workflowArgs['key']}': if auto.publish is true, params.publish_dir needs to be defined.\n" + + // " Example: params.publish_dir = \"./output/\"" + def publishDir = getPublishDir() + + if (publishDir != null) { + workflowArgs.directives.publishDir = [[ + path: publishDir, + saveAs: "{ it.startsWith('.') ? null : it }", // don't publish hidden files, by default + mode: "copy" + ]] + } + } + + // auto define transcript, if so desired + if (workflowArgs.auto.transcript == true) { + // can't assert at this level thanks to the no_publish profile + // assert params.containsKey("transcriptsDir") || params.containsKey("transcripts_dir") || params.containsKey("publishDir") || params.containsKey("publish_dir") : + // "Error in module '${workflowArgs['key']}': if auto.transcript is true, either params.transcripts_dir or params.publish_dir needs to be defined.\n" + + // " Example: params.transcripts_dir = \"./transcripts/\"" + def transcriptsDir = + params.containsKey("transcripts_dir") ? params.transcripts_dir : + params.containsKey("transcriptsDir") ? params.transcriptsDir : + params.containsKey("publish_dir") ? params.publish_dir + "/_transcripts" : + params.containsKey("publishDir") ? params.publishDir + "/_transcripts" : + null + if (transcriptsDir != null) { + def timestamp = nextflow.Nextflow.getSession().getWorkflowMetadata().start.format('yyyy-MM-dd_HH-mm-ss') + def transcriptsPublishDir = [ + path: "$transcriptsDir/$timestamp/\${task.process.replaceAll(':', '-')}/\${id}/", + saveAs: "{ it.startsWith('.') ? it.replaceAll('^.', '') : null }", + mode: "copy" + ] + def publishDirs = workflowArgs.directives.publishDir != null ? workflowArgs.directives.publishDir : null ? workflowArgs.directives.publishDir : [] + workflowArgs.directives.publishDir = publishDirs + transcriptsPublishDir + } + } + + // if this is a stubrun, remove certain directives? + if (workflow.stubRun) { + workflowArgs.directives.keySet().removeAll(["publishDir", "cpus", "memory", "label"]) + } + + for (nam in ["map", "mapId", "mapData", "mapPassthrough", "filter", "runIf"]) { + if (workflowArgs.containsKey(nam) && workflowArgs[nam]) { + assert workflowArgs[nam] instanceof Closure : "Error in module '$key': Expected process argument '$nam' to be null or a Closure. Found: class ${workflowArgs[nam].getClass()}" + } + } + + // TODO: should functions like 'map', 'mapId', 'mapData', 'mapPassthrough' be deprecated as well? + for (nam in ["map", "mapData", "mapPassthrough", "renameKeys"]) { + if (workflowArgs.containsKey(nam) && workflowArgs[nam] != null) { + log.warn "module '$key': workflow argument '$nam' is deprecated and will be removed in Viash 0.9.0. Please use 'fromState' and 'toState' instead." + } + } + + // check fromState + workflowArgs["fromState"] = _processFromState(workflowArgs.get("fromState"), key, meta.config) + + // check toState + workflowArgs["toState"] = _processToState(workflowArgs.get("toState"), key, meta.config) + + // return output + return workflowArgs +} + +def _processFromState(fromState, key_, config_) { + assert fromState == null || fromState instanceof Closure || fromState instanceof Map || fromState instanceof List : + "Error in module '$key_': Expected process argument 'fromState' to be null, a Closure, a Map, or a List. Found: class ${fromState.getClass()}" + if (fromState == null) { + return null + } + + // if fromState is a List, convert to map + if (fromState instanceof List) { + // check whether fromstate is a list[string] + assert fromState.every{it instanceof CharSequence} : "Error in module '$key_': fromState is a List, but not all elements are Strings" + fromState = fromState.collectEntries{[it, it]} + } + + // if fromState is a map, convert to closure + if (fromState instanceof Map) { + // check whether fromstate is a map[string, string] + assert fromState.values().every{it instanceof CharSequence} : "Error in module '$key_': fromState is a Map, but not all values are Strings" + assert fromState.keySet().every{it instanceof CharSequence} : "Error in module '$key_': fromState is a Map, but not all keys are Strings" + def fromStateMap = fromState.clone() + def requiredInputNames = meta.config.allArguments.findAll{it.required && it.direction == "Input"}.collect{it.plainName} + // turn the map into a closure to be used later on + fromState = { it -> + def state = it[1] + assert state instanceof Map : "Error in module '$key_': the state is not a Map" + def data = fromStateMap.collectMany{newkey, origkey -> + // check whether newkey corresponds to a required argument + if (state.containsKey(origkey)) { + [[newkey, state[origkey]]] + } else if (!requiredInputNames.contains(origkey)) { + [] + } else { + throw new Exception("Error in module '$key_': fromState key '$origkey' not found in current state") + } + }.collectEntries() + data + } + } + + return fromState +} + +def _processToState(toState, key_, config_) { + if (toState == null) { + toState = { tup -> tup[1] } + } + + // toState should be a closure, map[string, string], or list[string] + assert toState instanceof Closure || toState instanceof Map || toState instanceof List : + "Error in module '$key_': Expected process argument 'toState' to be a Closure, a Map, or a List. Found: class ${toState.getClass()}" + + // if toState is a List, convert to map + if (toState instanceof List) { + // check whether toState is a list[string] + assert toState.every{it instanceof CharSequence} : "Error in module '$key_': toState is a List, but not all elements are Strings" + toState = toState.collectEntries{[it, it]} + } + + // if toState is a map, convert to closure + if (toState instanceof Map) { + // check whether toState is a map[string, string] + assert toState.values().every{it instanceof CharSequence} : "Error in module '$key_': toState is a Map, but not all values are Strings" + assert toState.keySet().every{it instanceof CharSequence} : "Error in module '$key_': toState is a Map, but not all keys are Strings" + def toStateMap = toState.clone() + def requiredOutputNames = config_.allArguments.findAll{it.required && it.direction == "Output"}.collect{it.plainName} + // turn the map into a closure to be used later on + toState = { it -> + def output = it[1] + def state = it[2] + assert output instanceof Map : "Error in module '$key_': the output is not a Map" + assert state instanceof Map : "Error in module '$key_': the state is not a Map" + def extraEntries = toStateMap.collectMany{newkey, origkey -> + // check whether newkey corresponds to a required argument + if (output.containsKey(origkey)) { + [[newkey, output[origkey]]] + } else if (!requiredOutputNames.contains(origkey)) { + [] + } else { + throw new Exception("Error in module '$key_': toState key '$origkey' not found in current output") + } + }.collectEntries() + state + extraEntries + } + } + + return toState +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/workflowFactory.nf' +def _debug(workflowArgs, debugKey) { + if (workflowArgs.debug) { + view { "process '${workflowArgs.key}' $debugKey tuple: $it" } + } else { + map { it } + } +} + +// depends on: innerWorkflowFactory +def workflowFactory(Map args, Map defaultWfArgs, Map meta) { + def workflowArgs = processWorkflowArgs(args, defaultWfArgs, meta) + def key_ = workflowArgs["key"] + + workflow workflowInstance { + take: input_ + + main: + def chModified = input_ + | checkUniqueIds([:]) + | _debug(workflowArgs, "input") + | map { tuple -> + tuple = deepClone(tuple) + + if (workflowArgs.map) { + tuple = workflowArgs.map(tuple) + } + if (workflowArgs.mapId) { + tuple[0] = workflowArgs.mapId(tuple[0]) + } + if (workflowArgs.mapData) { + tuple[1] = workflowArgs.mapData(tuple[1]) + } + if (workflowArgs.mapPassthrough) { + tuple = tuple.take(2) + workflowArgs.mapPassthrough(tuple.drop(2)) + } + + // check tuple + assert tuple instanceof List : + "Error in module '${key_}': element in channel should be a tuple [id, data, ...otherargs...]\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Expected class: List. Found: tuple.getClass() is ${tuple.getClass()}" + assert tuple.size() >= 2 : + "Error in module '${key_}': expected length of tuple in input channel to be two or greater.\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Found: tuple.size() == ${tuple.size()}" + + // check id field + if (tuple[0] instanceof GString) { + tuple[0] = tuple[0].toString() + } + assert tuple[0] instanceof CharSequence : + "Error in module '${key_}': first element of tuple in channel should be a String\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Found: ${tuple[0]}" + + // match file to input file + if (workflowArgs.auto.simplifyInput && (tuple[1] instanceof Path || tuple[1] instanceof List)) { + def inputFiles = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "input" } + + assert inputFiles.size() == 1 : + "Error in module '${key_}' id '${tuple[0]}'.\n" + + " Anonymous file inputs are only allowed when the process has exactly one file input.\n" + + " Expected: inputFiles.size() == 1. Found: inputFiles.size() is ${inputFiles.size()}" + + tuple[1] = [[ inputFiles[0].plainName, tuple[1] ]].collectEntries() + } + + // check data field + assert tuple[1] instanceof Map : + "Error in module '${key_}' id '${tuple[0]}': second element of tuple in channel should be a Map\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Expected class: Map. Found: tuple[1].getClass() is ${tuple[1].getClass()}" + + // rename keys of data field in tuple + if (workflowArgs.renameKeys) { + assert workflowArgs.renameKeys instanceof Map : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Example: renameKeys: ['new_key': 'old_key'].\n" + + " Expected class: Map. Found: renameKeys.getClass() is ${workflowArgs.renameKeys.getClass()}" + assert tuple[1] instanceof Map : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Expected class: Map. Found: tuple[1].getClass() is ${tuple[1].getClass()}" + + // TODO: allow renameKeys to be a function? + workflowArgs.renameKeys.each { newKey, oldKey -> + assert newKey instanceof CharSequence : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Example: renameKeys: ['new_key': 'old_key'].\n" + + " Expected class of newKey: String. Found: newKey.getClass() is ${newKey.getClass()}" + assert oldKey instanceof CharSequence : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Example: renameKeys: ['new_key': 'old_key'].\n" + + " Expected class of oldKey: String. Found: oldKey.getClass() is ${oldKey.getClass()}" + assert tuple[1].containsKey(oldKey) : + "Error renaming data keys in module '${key}' id '${tuple[0]}'.\n" + + " Key '$oldKey' is missing in the data map. tuple[1].keySet() is '${tuple[1].keySet()}'" + tuple[1].put(newKey, tuple[1][oldKey]) + } + tuple[1].keySet().removeAll(workflowArgs.renameKeys.collect{ newKey, oldKey -> oldKey }) + } + tuple + } + + + def chRun = null + def chPassthrough = null + if (workflowArgs.runIf) { + def runIfBranch = chModified.branch{ tup -> + run: workflowArgs.runIf(tup[0], tup[1]) + passthrough: true + } + chRun = runIfBranch.run + chPassthrough = runIfBranch.passthrough + } else { + chRun = chModified + chPassthrough = Channel.empty() + } + + def chRunFiltered = workflowArgs.filter ? + chRun | filter{workflowArgs.filter(it)} : + chRun + + def chArgs = workflowArgs.fromState ? + chRunFiltered | map{ + def new_data = workflowArgs.fromState(it.take(2)) + [it[0], new_data] + } : + chRunFiltered | map {tup -> tup.take(2)} + + // fill in defaults + def chArgsWithDefaults = chArgs + | map { tuple -> + def id_ = tuple[0] + def data_ = tuple[1] + + // TODO: could move fromState to here + + // fetch default params from functionality + def defaultArgs = meta.config.allArguments + .findAll { it.containsKey("default") } + .collectEntries { [ it.plainName, it.default ] } + + // fetch overrides in params + def paramArgs = meta.config.allArguments + .findAll { par -> + def argKey = key_ + "__" + par.plainName + params.containsKey(argKey) + } + .collectEntries { [ it.plainName, params[key_ + "__" + it.plainName] ] } + + // fetch overrides in data + def dataArgs = meta.config.allArguments + .findAll { data_.containsKey(it.plainName) } + .collectEntries { [ it.plainName, data_[it.plainName] ] } + + // combine params + def combinedArgs = defaultArgs + paramArgs + workflowArgs.args + dataArgs + + // remove arguments with explicit null values + combinedArgs + .removeAll{_, val -> val == null || val == "viash_no_value" || val == "force_null"} + + combinedArgs = _processInputValues(combinedArgs, meta.config, id_, key_) + + [id_, combinedArgs] + tuple.drop(2) + } + + // TODO: move some of the _meta.join_id wrangling to the safeJoin() function. + def chInitialOutput = chArgsWithDefaults + | _debug(workflowArgs, "processed") + // run workflow + | innerWorkflowFactory(workflowArgs) + // check output tuple + | map { id_, output_ -> + + // see if output map contains metadata + def meta_ = + output_ instanceof Map && output_.containsKey("_meta") ? + output_["_meta"] : + [:] + def join_id = meta_.join_id ?: id_ + + // remove metadata + output_ = output_.findAll{k, v -> k != "_meta"} + + // check value types + output_ = _processOutputValues(output_, meta.config, id_, key_) + + // simplify output if need be + if (workflowArgs.auto.simplifyOutput && output_.size() == 1) { + output_ = output_.values()[0] + } + + [join_id, id_, output_] + } + // | view{"chInitialOutput: ${it.take(3)}"} + + // join the output [prev_id, new_id, output] with the previous state [prev_id, state, ...] + def chNewState = safeJoin(chInitialOutput, chRunFiltered, key_) + // input tuple format: [join_id, id, output, prev_state, ...] + // output tuple format: [join_id, id, new_state, ...] + | map{ tup -> + def new_state = workflowArgs.toState(tup.drop(1).take(3)) + tup.take(2) + [new_state] + tup.drop(4) + } + + if (workflowArgs.auto.publish == "state") { + def chPublish = chNewState + // input tuple format: [join_id, id, new_state, ...] + // output tuple format: [join_id, id, new_state] + | map{ tup -> + tup.take(3) + } + + safeJoin(chPublish, chArgsWithDefaults, key_) + // input tuple format: [join_id, id, new_state, orig_state, ...] + // output tuple format: [id, new_state, orig_state] + | map { tup -> + tup.drop(1).take(3) + } + | publishStatesByConfig(key: key_, config: meta.config) + } + + // remove join_id and meta + chReturn = chNewState + | map { tup -> + // input tuple format: [join_id, id, new_state, ...] + // output tuple format: [id, new_state, ...] + tup.drop(1) + } + | _debug(workflowArgs, "output") + | concat(chPassthrough) + + emit: chReturn + } + + def wf = workflowInstance.cloneWithName(key_) + + // add factory function + wf.metaClass.run = { runArgs -> + workflowFactory(runArgs, workflowArgs, meta) + } + // add config to module for later introspection + wf.metaClass.config = meta.config + + return wf +} + +nextflow.enable.dsl=2 + +// START COMPONENT-SPECIFIC CODE + +// create meta object +meta = [ + "resources_dir": moduleDir.toRealPath().normalize(), + "config": processConfig(readJsonBlob('''{ + "name" : "agat_sp_add_introns", + "namespace" : "agat", + "version" : "main", + "authors" : [ + { + "name" : "Leïla Paquay", + "roles" : [ + "author", + "maintainer" + ], + "info" : { + "links" : { + "email" : "leila@data-intuitive.com", + "github" : "Leila011", + "linkedin" : "leilapaquay" + }, + "organizations" : [ + { + "name" : "Data Intuitive", + "href" : "https://www.data-intuitive.com", + "role" : "Software Developer" + } + ] + } + } + ], + "argument_groups" : [ + { + "name" : "Inputs", + "arguments" : [ + { + "type" : "file", + "name" : "--gff", + "alternatives" : [ + "-f", + "--ref", + "--reffile" + ], + "description" : "Input GTF/GFF file.", + "example" : [ + "input.gff" + ], + "must_exist" : true, + "create_parent" : true, + "required" : true, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Outputs", + "arguments" : [ + { + "type" : "file", + "name" : "--output", + "alternatives" : [ + "-o", + "--out", + "--outfile", + "--gtf" + ], + "description" : "Output GFF3 file.", + "example" : [ + "output.gff" + ], + "must_exist" : true, + "create_parent" : true, + "required" : true, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Arguments", + "arguments" : [ + { + "type" : "file", + "name" : "--config", + "alternatives" : [ + "-c" + ], + "description" : "AGAT config file. By default AGAT takes the original agat_config.yaml shipped with AGAT. The `--config` option \ngives you the possibility to use your own AGAT config file (located elsewhere or named differently).\n", + "example" : [ + "custom_agat_config.yaml" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + } + ], + "resources" : [ + { + "type" : "bash_script", + "path" : "script.sh", + "is_executable" : true + } + ], + "description" : "Add intronic elements to a gtf/gff file without intron features.\n", + "test_resources" : [ + { + "type" : "bash_script", + "path" : "test.sh", + "is_executable" : true + }, + { + "type" : "file", + "path" : "test_data" + } + ], + "status" : "enabled", + "requirements" : { + "commands" : [ + "ps" + ] + }, + "keywords" : [ + "gene annotations", + "GTF conversion" + ], + "license" : "GPL-3.0", + "references" : { + "doi" : [ + "10.5281/zenodo.3552717" + ] + }, + "links" : { + "repository" : "https://github.com/NBISweden/AGAT", + "homepage" : "https://github.com/NBISweden/AGAT", + "documentation" : "https://agat.readthedocs.io/en/latest/tools/agat_sp_add_introns.html", + "issue_tracker" : "https://github.com/NBISweden/AGAT/issues" + }, + "runners" : [ + { + "type" : "executable", + "id" : "executable", + "docker_setup_strategy" : "ifneedbepullelsecachedbuild" + }, + { + "type" : "nextflow", + "id" : "nextflow", + "directives" : { + "tag" : "$id" + }, + "auto" : { + "simplifyInput" : true, + "simplifyOutput" : false, + "transcript" : false, + "publish" : false + }, + "config" : { + "labels" : { + "mem1gb" : "memory = 1000000000.B", + "mem2gb" : "memory = 2000000000.B", + "mem5gb" : "memory = 5000000000.B", + "mem10gb" : "memory = 10000000000.B", + "mem20gb" : "memory = 20000000000.B", + "mem50gb" : "memory = 50000000000.B", + "mem100gb" : "memory = 100000000000.B", + "mem200gb" : "memory = 200000000000.B", + "mem500gb" : "memory = 500000000000.B", + "mem1tb" : "memory = 1000000000000.B", + "mem2tb" : "memory = 2000000000000.B", + "mem5tb" : "memory = 5000000000000.B", + "mem10tb" : "memory = 10000000000000.B", + "mem20tb" : "memory = 20000000000000.B", + "mem50tb" : "memory = 50000000000000.B", + "mem100tb" : "memory = 100000000000000.B", + "mem200tb" : "memory = 200000000000000.B", + "mem500tb" : "memory = 500000000000000.B", + "mem1gib" : "memory = 1073741824.B", + "mem2gib" : "memory = 2147483648.B", + "mem4gib" : "memory = 4294967296.B", + "mem8gib" : "memory = 8589934592.B", + "mem16gib" : "memory = 17179869184.B", + "mem32gib" : "memory = 34359738368.B", + "mem64gib" : "memory = 68719476736.B", + "mem128gib" : "memory = 137438953472.B", + "mem256gib" : "memory = 274877906944.B", + "mem512gib" : "memory = 549755813888.B", + "mem1tib" : "memory = 1099511627776.B", + "mem2tib" : "memory = 2199023255552.B", + "mem4tib" : "memory = 4398046511104.B", + "mem8tib" : "memory = 8796093022208.B", + "mem16tib" : "memory = 17592186044416.B", + "mem32tib" : "memory = 35184372088832.B", + "mem64tib" : "memory = 70368744177664.B", + "mem128tib" : "memory = 140737488355328.B", + "mem256tib" : "memory = 281474976710656.B", + "mem512tib" : "memory = 562949953421312.B", + "cpu1" : "cpus = 1", + "cpu2" : "cpus = 2", + "cpu5" : "cpus = 5", + "cpu10" : "cpus = 10", + "cpu20" : "cpus = 20", + "cpu50" : "cpus = 50", + "cpu100" : "cpus = 100", + "cpu200" : "cpus = 200", + "cpu500" : "cpus = 500", + "cpu1000" : "cpus = 1000" + } + }, + "debug" : false, + "container" : "docker" + } + ], + "engines" : [ + { + "type" : "docker", + "id" : "docker", + "image" : "quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0", + "target_registry" : "images.viash-hub.com", + "target_tag" : "main", + "namespace_separator" : "/", + "setup" : [ + { + "type" : "docker", + "run" : [ + "agat --version | sed 's/AGAT\\\\s\\\\(.*\\\\)/agat: \\"\\\\1\\"/' > /var/software_versions.txt\n" + ] + } + ] + }, + { + "type" : "native", + "id" : "native" + } + ], + "build_info" : { + "config" : "/workdir/root/repo/src/agat/agat_sp_add_introns/config.vsh.yaml", + "runner" : "nextflow", + "engine" : "docker|native", + "output" : "target/nextflow/agat/agat_sp_add_introns", + "viash_version" : "0.9.0", + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" + }, + "package_config" : { + "name" : "biobox", + "version" : "main", + "description" : "A collection of bioinformatics tools for working with sequence data.\n", + "viash_version" : "0.9.0", + "source" : "src", + "target" : "target", + "config_mods" : [ + ".requirements.commands := ['ps']\n", + ".engines += { type: \\"native\\" }", + ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'", + ".engines[.type == 'docker'].target_tag := 'main'" + ], + "keywords" : [ + "bioinformatics", + "modules", + "sequencing" + ], + "license" : "MIT", + "organization" : "vsh", + "links" : { + "repository" : "https://github.com/viash-hub/biobox", + "issue_tracker" : "https://github.com/viash-hub/biobox/issues" + } + } +}''')) +] + +// resolve dependencies dependencies (if any) + + +// inner workflow +// inner workflow hook +def innerWorkflowFactory(args) { + def rawScript = '''set -e +tempscript=".viash_script.sh" +cat > "$tempscript" << VIASHMAIN +#!/bin/bash + +set -eo pipefail + +## VIASH START +# The following code has been auto-generated by Viash. +$( if [ ! -z ${VIASH_PAR_GFF+x} ]; then echo "${VIASH_PAR_GFF}" | sed "s#'#'\\"'\\"'#g;s#.*#par_gff='&'#" ; else echo "# par_gff="; fi ) +$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi ) +$( if [ ! -z ${VIASH_PAR_CONFIG+x} ]; then echo "${VIASH_PAR_CONFIG}" | sed "s#'#'\\"'\\"'#g;s#.*#par_config='&'#" ; else echo "# par_config="; fi ) +$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi ) +$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi ) +$( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "${VIASH_META_RESOURCES_DIR}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_resources_dir='&'#" ; else echo "# meta_resources_dir="; fi ) +$( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "${VIASH_META_EXECUTABLE}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_executable='&'#" ; else echo "# meta_executable="; fi ) +$( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "${VIASH_META_CONFIG}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_config='&'#" ; else echo "# meta_config="; fi ) +$( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "${VIASH_META_TEMP_DIR}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_temp_dir='&'#" ; else echo "# meta_temp_dir="; fi ) +$( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "${VIASH_META_CPUS}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_cpus='&'#" ; else echo "# meta_cpus="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "${VIASH_META_MEMORY_B}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_b='&'#" ; else echo "# meta_memory_b="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "${VIASH_META_MEMORY_KB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_kb='&'#" ; else echo "# meta_memory_kb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "${VIASH_META_MEMORY_MB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_mb='&'#" ; else echo "# meta_memory_mb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "${VIASH_META_MEMORY_GB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_gb='&'#" ; else echo "# meta_memory_gb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "${VIASH_META_MEMORY_TB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_tb='&'#" ; else echo "# meta_memory_tb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "${VIASH_META_MEMORY_PB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_pb='&'#" ; else echo "# meta_memory_pb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "${VIASH_META_MEMORY_KIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_kib='&'#" ; else echo "# meta_memory_kib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "${VIASH_META_MEMORY_MIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_mib='&'#" ; else echo "# meta_memory_mib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "${VIASH_META_MEMORY_GIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_gib='&'#" ; else echo "# meta_memory_gib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "${VIASH_META_MEMORY_TIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_tib='&'#" ; else echo "# meta_memory_tib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "${VIASH_META_MEMORY_PIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_pib='&'#" ; else echo "# meta_memory_pib="; fi ) + +## VIASH END + +agat_sp_add_introns.pl \\\\ + -f "\\$par_gff" \\\\ + -o "\\$par_output" \\\\ + \\${par_config:+--config "\\${par_config}"} +VIASHMAIN +bash "$tempscript" +''' + + return vdsl3WorkflowFactory(args, meta, rawScript) +} + + + +/** + * Generate a workflow for VDSL3 modules. + * + * This function is called by the workflowFactory() function. + * + * Input channel: [id, input_map] + * Output channel: [id, output_map] + * + * Internally, this workflow will convert the input channel + * to a format which the Nextflow module will be able to handle. + */ +def vdsl3WorkflowFactory(Map args, Map meta, String rawScript) { + def key = args["key"] + def processObj = null + + workflow processWf { + take: input_ + main: + + if (processObj == null) { + processObj = _vdsl3ProcessFactory(args, meta, rawScript) + } + + output_ = input_ + | map { tuple -> + def id = tuple[0] + def data_ = tuple[1] + + if (workflow.stubRun) { + // add id if missing + data_ = [id: 'stub'] + data_ + } + + // process input files separately + def inputPaths = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "input" } + .collect { par -> + def val = data_.containsKey(par.plainName) ? data_[par.plainName] : [] + def inputFiles = [] + if (val == null) { + inputFiles = [] + } else if (val instanceof List) { + inputFiles = val + } else if (val instanceof Path) { + inputFiles = [ val ] + } else { + inputFiles = [] + } + if (!workflow.stubRun) { + // throw error when an input file doesn't exist + inputFiles.each{ file -> + assert file.exists() : + "Error in module '${key}' id '${id}' argument '${par.plainName}'.\n" + + " Required input file does not exist.\n" + + " Path: '$file'.\n" + + " Expected input file to exist" + } + } + inputFiles + } + + // remove input files + def argsExclInputFiles = meta.config.allArguments + .findAll { (it.type != "file" || it.direction != "input") && data_.containsKey(it.plainName) } + .collectEntries { par -> + def parName = par.plainName + def val = data_[parName] + if (par.multiple && val instanceof Collection) { + val = val.join(par.multiple_sep) + } + if (par.direction == "output" && par.type == "file") { + val = val + .replaceAll('\\$id', id) + .replaceAll('\\$\\{id\\}', id) + .replaceAll('\\$key', key) + .replaceAll('\\$\\{key\\}', key) + } + [parName, val] + } + + [ id ] + inputPaths + [ argsExclInputFiles, meta.resources_dir ] + } + | processObj + | map { output -> + def outputFiles = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" } + .indexed() + .collectEntries{ index, par -> + def out = output[index + 1] + // strip dummy '.exitcode' file from output (see nextflow-io/nextflow#2678) + if (!out instanceof List || out.size() <= 1) { + if (par.multiple) { + out = [] + } else { + assert !par.required : + "Error in module '${key}' id '${output[0]}' argument '${par.plainName}'.\n" + + " Required output file is missing" + out = null + } + } else if (out.size() == 2 && !par.multiple) { + out = out[1] + } else { + out = out.drop(1) + } + [ par.plainName, out ] + } + + // drop null outputs + outputFiles.removeAll{it.value == null} + + [ output[0], outputFiles ] + } + emit: output_ + } + + return processWf +} + +// depends on: session? +def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) { + // autodetect process key + def wfKey = workflowArgs["key"] + def procKeyPrefix = "${wfKey}_process" + def scriptMeta = nextflow.script.ScriptMeta.current() + def existing = scriptMeta.getProcessNames().findAll{it.startsWith(procKeyPrefix)} + def numbers = existing.collect{it.replace(procKeyPrefix, "0").toInteger()} + def newNumber = (numbers + [-1]).max() + 1 + + def procKey = newNumber == 0 ? procKeyPrefix : "$procKeyPrefix$newNumber" + + if (newNumber > 0) { + log.warn "Key for module '${wfKey}' is duplicated.\n", + "If you run a component multiple times in the same workflow,\n" + + "it's recommended you set a unique key for every call,\n" + + "for example: ${wfKey}.run(key: \"foo\")." + } + + // subset directives and convert to list of tuples + def drctv = workflowArgs.directives + + // TODO: unit test the two commands below + // convert publish array into tags + def valueToStr = { val -> + // ignore closures + if (val instanceof CharSequence) { + if (!val.matches('^[{].*[}]$')) { + '"' + val + '"' + } else { + val + } + } else if (val instanceof List) { + "[" + val.collect{valueToStr(it)}.join(", ") + "]" + } else if (val instanceof Map) { + "[" + val.collect{k, v -> k + ": " + valueToStr(v)}.join(", ") + "]" + } else { + val.inspect() + } + } + + // multiple entries allowed: label, publishdir + def drctvStrs = drctv.collect { key, value -> + if (key in ["label", "publishDir"]) { + value.collect{ val -> + if (val instanceof Map) { + "\n$key " + val.collect{ k, v -> k + ": " + valueToStr(v) }.join(", ") + } else if (val == null) { + "" + } else { + "\n$key " + valueToStr(val) + } + }.join() + } else if (value instanceof Map) { + "\n$key " + value.collect{ k, v -> k + ": " + valueToStr(v) }.join(", ") + } else { + "\n$key " + valueToStr(value) + } + }.join() + + def inputPaths = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "input" } + .collect { ', path(viash_par_' + it.plainName + ', stageAs: "_viash_par/' + it.plainName + '_?/*")' } + .join() + + def outputPaths = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" } + .collect { par -> + // insert dummy into every output (see nextflow-io/nextflow#2678) + if (!par.multiple) { + ', path{[".exitcode", args.' + par.plainName + ']}' + } else { + ', path{[".exitcode"] + args.' + par.plainName + '}' + } + } + .join() + + // TODO: move this functionality somewhere else? + if (workflowArgs.auto.transcript) { + outputPaths = outputPaths + ', path{[".exitcode", ".command*"]}' + } else { + outputPaths = outputPaths + ', path{[".exitcode"]}' + } + + // create dirs for output files (based on BashWrapper.createParentFiles) + def createParentStr = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" && it.create_parent } + .collect { par -> + def contents = "args[\"${par.plainName}\"] instanceof List ? args[\"${par.plainName}\"].join('\" \"') : args[\"${par.plainName}\"]" + "\${ args.containsKey(\"${par.plainName}\") ? \"mkdir_parent '\" + escapeText(${contents}) + \"'\" : \"\" }" + } + .join("\n") + + // construct inputFileExports + def inputFileExports = meta.config.allArguments + .findAll { it.type == "file" && it.direction.toLowerCase() == "input" } + .collect { par -> + def contents = "viash_par_${par.plainName} instanceof List ? viash_par_${par.plainName}.join(\"${par.multiple_sep}\") : viash_par_${par.plainName}" + "\n\${viash_par_${par.plainName}.empty ? \"\" : \"export VIASH_PAR_${par.plainName.toUpperCase()}='\" + escapeText(${contents}) + \"'\"}" + } + + // NOTE: if using docker, use /tmp instead of tmpDir! + def tmpDir = java.nio.file.Paths.get( + System.getenv('NXF_TEMP') ?: + System.getenv('VIASH_TEMP') ?: + System.getenv('VIASH_TMPDIR') ?: + System.getenv('VIASH_TEMPDIR') ?: + System.getenv('VIASH_TMP') ?: + System.getenv('TEMP') ?: + System.getenv('TMPDIR') ?: + System.getenv('TEMPDIR') ?: + System.getenv('TMP') ?: + '/tmp' + ).toAbsolutePath() + + // construct stub + def stub = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" } + .collect { par -> + "\${ args.containsKey(\"${par.plainName}\") ? \"touch2 \\\"\" + (args[\"${par.plainName}\"] instanceof String ? args[\"${par.plainName}\"].replace(\"_*\", \"_0\") : args[\"${par.plainName}\"].join('\" \"')) + \"\\\"\" : \"\" }" + } + .join("\n") + + // escape script + def escapedScript = rawScript.replace('\\', '\\\\').replace('$', '\\$').replace('"""', '\\"\\"\\"') + + // publishdir assert + def assertStr = (workflowArgs.auto.publish == true) || workflowArgs.auto.transcript ? + """\nassert task.publishDir.size() > 0: "if auto.publish is true, params.publish_dir needs to be defined.\\n Example: --publish_dir './output/'" """ : + "" + + // generate process string + def procStr = + """nextflow.enable.dsl=2 + | + |def escapeText = { s -> s.toString().replaceAll("'", "'\\\"'\\\"'") } + |process $procKey {$drctvStrs + |input: + | tuple val(id)$inputPaths, val(args), path(resourcesDir, stageAs: ".viash_meta_resources") + |output: + | tuple val("\$id")$outputPaths, optional: true + |stub: + |\"\"\" + |touch2() { mkdir -p "\\\$(dirname "\\\$1")" && touch "\\\$1" ; } + |$stub + |\"\"\" + |script:$assertStr + |def parInject = args + | .findAll{key, value -> value != null} + | .collect{key, value -> "export VIASH_PAR_\${key.toUpperCase()}='\${escapeText(value)}'"} + | .join("\\n") + |\"\"\" + |# meta exports + |export VIASH_META_RESOURCES_DIR="\${resourcesDir}" + |export VIASH_META_TEMP_DIR="${['docker', 'podman', 'charliecloud'].any{ it == workflow.containerEngine } ? '/tmp' : tmpDir}" + |export VIASH_META_NAME="${meta.config.name}" + |# export VIASH_META_EXECUTABLE="\\\$VIASH_META_RESOURCES_DIR/\\\$VIASH_META_NAME" + |export VIASH_META_CONFIG="\\\$VIASH_META_RESOURCES_DIR/.config.vsh.yaml" + |\${task.cpus ? "export VIASH_META_CPUS=\$task.cpus" : "" } + |\${task.memory?.bytes != null ? "export VIASH_META_MEMORY_B=\$task.memory.bytes" : "" } + |if [ ! -z \\\${VIASH_META_MEMORY_B+x} ]; then + | export VIASH_META_MEMORY_KB=\\\$(( (\\\$VIASH_META_MEMORY_B+999) / 1000 )) + | export VIASH_META_MEMORY_MB=\\\$(( (\\\$VIASH_META_MEMORY_KB+999) / 1000 )) + | export VIASH_META_MEMORY_GB=\\\$(( (\\\$VIASH_META_MEMORY_MB+999) / 1000 )) + | export VIASH_META_MEMORY_TB=\\\$(( (\\\$VIASH_META_MEMORY_GB+999) / 1000 )) + | export VIASH_META_MEMORY_PB=\\\$(( (\\\$VIASH_META_MEMORY_TB+999) / 1000 )) + | export VIASH_META_MEMORY_KIB=\\\$(( (\\\$VIASH_META_MEMORY_B+1023) / 1024 )) + | export VIASH_META_MEMORY_MIB=\\\$(( (\\\$VIASH_META_MEMORY_KIB+1023) / 1024 )) + | export VIASH_META_MEMORY_GIB=\\\$(( (\\\$VIASH_META_MEMORY_MIB+1023) / 1024 )) + | export VIASH_META_MEMORY_TIB=\\\$(( (\\\$VIASH_META_MEMORY_GIB+1023) / 1024 )) + | export VIASH_META_MEMORY_PIB=\\\$(( (\\\$VIASH_META_MEMORY_TIB+1023) / 1024 )) + |fi + | + |# meta synonyms + |export VIASH_TEMP="\\\$VIASH_META_TEMP_DIR" + |export TEMP_DIR="\\\$VIASH_META_TEMP_DIR" + | + |# create output dirs if need be + |function mkdir_parent { + | for file in "\\\$@"; do + | mkdir -p "\\\$(dirname "\\\$file")" + | done + |} + |$createParentStr + | + |# argument exports${inputFileExports.join()} + |\$parInject + | + |# process script + |${escapedScript} + |\"\"\" + |} + |""".stripMargin() + + // TODO: print on debug + // if (workflowArgs.debug == true) { + // println("######################\n$procStr\n######################") + // } + + // write process to temp file + def tempFile = java.nio.file.Files.createTempFile("viash-process-${procKey}-", ".nf") + addShutdownHook { java.nio.file.Files.deleteIfExists(tempFile) } + tempFile.text = procStr + + // create process from temp file + def binding = new nextflow.script.ScriptBinding([:]) + def session = nextflow.Nextflow.getSession() + def parser = new nextflow.script.ScriptParser(session) + .setModule(true) + .setBinding(binding) + def moduleScript = parser.runScript(tempFile) + .getScript() + + // register module in meta + def module = new nextflow.script.IncludeDef.Module(name: procKey) + scriptMeta.addModule(moduleScript, module.name, module.alias) + + // retrieve and return process from meta + return scriptMeta.getProcess(procKey) +} + +// defaults +meta["defaults"] = [ + // key to be used to trace the process and determine output names + key: null, + + // fixed arguments to be passed to script + args: [:], + + // default directives + directives: readJsonBlob('''{ + "container" : { + "registry" : "images.viash-hub.com", + "image" : "vsh/biobox/agat/agat_sp_add_introns", + "tag" : "main" + }, + "tag" : "$id" +}'''), + + // auto settings + auto: readJsonBlob('''{ + "simplifyInput" : true, + "simplifyOutput" : false, + "transcript" : false, + "publish" : false +}'''), + + // Apply a map over the incoming tuple + // Example: `{ tup -> [ tup[0], [input: tup[1].output] ] + tup.drop(2) }` + map: null, + + // Apply a map over the ID element of a tuple (i.e. the first element) + // Example: `{ id -> id + "_foo" }` + mapId: null, + + // Apply a map over the data element of a tuple (i.e. the second element) + // Example: `{ data -> [ input: data.output ] }` + mapData: null, + + // Apply a map over the passthrough elements of a tuple (i.e. the tuple excl. the first two elements) + // Example: `{ pt -> pt.drop(1) }` + mapPassthrough: null, + + // Filter the channel + // Example: `{ tup -> tup[0] == "foo" }` + filter: null, + + // Choose whether or not to run the component on the tuple if the condition is true. + // Otherwise, the tuple will be passed through. + // Example: `{ tup -> tup[0] != "skip_this" }` + runIf: null, + + // Rename keys in the data field of the tuple (i.e. the second element) + // Will likely be deprecated in favour of `fromState`. + // Example: `[ "new_key": "old_key" ]` + renameKeys: null, + + // Fetch data from the state and pass it to the module without altering the current state. + // + // `fromState` should be `null`, `List[String]`, `Map[String, String]` or a function. + // + // - If it is `null`, the state will be passed to the module as is. + // - If it is a `List[String]`, the data will be the values of the state at the given keys. + // - If it is a `Map[String, String]`, the data will be the values of the state at the given keys, with the keys renamed according to the map. + // - If it is a function, the tuple (`[id, state]`) in the channel will be passed to the function, and the result will be used as the data. + // + // Example: `{ id, state -> [input: state.fastq_file] }` + // Default: `null` + fromState: null, + + // Determine how the state should be updated after the module has been run. + // + // `toState` should be `null`, `List[String]`, `Map[String, String]` or a function. + // + // - If it is `null`, the state will be replaced with the output of the module. + // - If it is a `List[String]`, the state will be updated with the values of the data at the given keys. + // - If it is a `Map[String, String]`, the state will be updated with the values of the data at the given keys, with the keys renamed according to the map. + // - If it is a function, a tuple (`[id, output, state]`) will be passed to the function, and the result will be used as the new state. + // + // Example: `{ id, output, state -> state + [counts: state.output] }` + // Default: `{ id, output, state -> output }` + toState: null, + + // Whether or not to print debug messages + // Default: `false` + debug: false +] + +// initialise default workflow +meta["workflow"] = workflowFactory([key: meta.config.name], meta.defaults, meta) + +// add workflow to environment +nextflow.script.ScriptMeta.current().addDefinition(meta.workflow) + +// anonymous workflow for running this module as a standalone +workflow { + // add id argument if it's not already in the config + // TODO: deep copy + def newConfig = deepClone(meta.config) + def newParams = deepClone(params) + + def argsContainsId = newConfig.allArguments.any{it.plainName == "id"} + if (!argsContainsId) { + def idArg = [ + 'name': '--id', + 'required': false, + 'type': 'string', + 'description': 'A unique id for every entry.', + 'multiple': false + ] + newConfig.arguments.add(0, idArg) + newConfig = processConfig(newConfig) + } + if (!newParams.containsKey("id")) { + newParams.id = "run" + } + + helpMessage(newConfig) + + channelFromParams(newParams, newConfig) + // make sure id is not in the state if id is not in the args + | map {id, state -> + if (!argsContainsId) { + [id, state.findAll{k, v -> k != "id"}] + } else { + [id, state] + } + } + | meta.workflow.run( + auto: [ publish: "state" ] + ) +} + +// END COMPONENT-SPECIFIC CODE diff --git a/target/nextflow/agat/agat_sp_add_introns/nextflow.config b/target/nextflow/agat/agat_sp_add_introns/nextflow.config new file mode 100644 index 00000000..98206da2 --- /dev/null +++ b/target/nextflow/agat/agat_sp_add_introns/nextflow.config @@ -0,0 +1,126 @@ +manifest { + name = 'agat/agat_sp_add_introns' + mainScript = 'main.nf' + nextflowVersion = '!>=20.12.1-edge' + version = 'main' + description = 'Add intronic elements to a gtf/gff file without intron features.\n' + author = 'Leïla Paquay' +} + +process.container = 'nextflow/bash:latest' + +// detect tempdir +tempDir = java.nio.file.Paths.get( + System.getenv('NXF_TEMP') ?: + System.getenv('VIASH_TEMP') ?: + System.getenv('TEMPDIR') ?: + System.getenv('TMPDIR') ?: + '/tmp' +).toAbsolutePath() + +profiles { + no_publish { + process { + withName: '.*' { + publishDir = [ + enabled: false + ] + } + } + } + mount_temp { + docker.temp = tempDir + podman.temp = tempDir + charliecloud.temp = tempDir + } + docker { + docker.enabled = true + // docker.userEmulation = true + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + singularity { + singularity.enabled = true + singularity.autoMounts = true + docker.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + podman { + podman.enabled = true + docker.enabled = false + singularity.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + shifter { + shifter.enabled = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + charliecloud.enabled = false + } + charliecloud { + charliecloud.enabled = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + } +} + +process{ + withLabel: mem1gb { memory = 1000000000.B } + withLabel: mem2gb { memory = 2000000000.B } + withLabel: mem5gb { memory = 5000000000.B } + withLabel: mem10gb { memory = 10000000000.B } + withLabel: mem20gb { memory = 20000000000.B } + withLabel: mem50gb { memory = 50000000000.B } + withLabel: mem100gb { memory = 100000000000.B } + withLabel: mem200gb { memory = 200000000000.B } + withLabel: mem500gb { memory = 500000000000.B } + withLabel: mem1tb { memory = 1000000000000.B } + withLabel: mem2tb { memory = 2000000000000.B } + withLabel: mem5tb { memory = 5000000000000.B } + withLabel: mem10tb { memory = 10000000000000.B } + withLabel: mem20tb { memory = 20000000000000.B } + withLabel: mem50tb { memory = 50000000000000.B } + withLabel: mem100tb { memory = 100000000000000.B } + withLabel: mem200tb { memory = 200000000000000.B } + withLabel: mem500tb { memory = 500000000000000.B } + withLabel: mem1gib { memory = 1073741824.B } + withLabel: mem2gib { memory = 2147483648.B } + withLabel: mem4gib { memory = 4294967296.B } + withLabel: mem8gib { memory = 8589934592.B } + withLabel: mem16gib { memory = 17179869184.B } + withLabel: mem32gib { memory = 34359738368.B } + withLabel: mem64gib { memory = 68719476736.B } + withLabel: mem128gib { memory = 137438953472.B } + withLabel: mem256gib { memory = 274877906944.B } + withLabel: mem512gib { memory = 549755813888.B } + withLabel: mem1tib { memory = 1099511627776.B } + withLabel: mem2tib { memory = 2199023255552.B } + withLabel: mem4tib { memory = 4398046511104.B } + withLabel: mem8tib { memory = 8796093022208.B } + withLabel: mem16tib { memory = 17592186044416.B } + withLabel: mem32tib { memory = 35184372088832.B } + withLabel: mem64tib { memory = 70368744177664.B } + withLabel: mem128tib { memory = 140737488355328.B } + withLabel: mem256tib { memory = 281474976710656.B } + withLabel: mem512tib { memory = 562949953421312.B } + withLabel: cpu1 { cpus = 1 } + withLabel: cpu2 { cpus = 2 } + withLabel: cpu5 { cpus = 5 } + withLabel: cpu10 { cpus = 10 } + withLabel: cpu20 { cpus = 20 } + withLabel: cpu50 { cpus = 50 } + withLabel: cpu100 { cpus = 100 } + withLabel: cpu200 { cpus = 200 } + withLabel: cpu500 { cpus = 500 } + withLabel: cpu1000 { cpus = 1000 } +} + + diff --git a/target/nextflow/agat/agat_sp_add_introns/nextflow_schema.json b/target/nextflow/agat/agat_sp_add_introns/nextflow_schema.json new file mode 100644 index 00000000..41ad732d --- /dev/null +++ b/target/nextflow/agat/agat_sp_add_introns/nextflow_schema.json @@ -0,0 +1,119 @@ +{ +"$schema": "http://json-schema.org/draft-07/schema", +"title": "agat_sp_add_introns", +"description": "Add intronic elements to a gtf/gff file without intron features.\n", +"type": "object", +"definitions": { + + + + "inputs" : { + "title": "Inputs", + "type": "object", + "description": "No description", + "properties": { + + + "gff": { + "type": + "string", + "description": "Type: `file`, required, example: `input.gff`. Input GTF/GFF file", + "help_text": "Type: `file`, required, example: `input.gff`. Input GTF/GFF file." + + } + + +} +}, + + + "outputs" : { + "title": "Outputs", + "type": "object", + "description": "No description", + "properties": { + + + "output": { + "type": + "string", + "description": "Type: `file`, required, default: `$id.$key.output.gff`, example: `output.gff`. Output GFF3 file", + "help_text": "Type: `file`, required, default: `$id.$key.output.gff`, example: `output.gff`. Output GFF3 file." + , + "default": "$id.$key.output.gff" + } + + +} +}, + + + "arguments" : { + "title": "Arguments", + "type": "object", + "description": "No description", + "properties": { + + + "config": { + "type": + "string", + "description": "Type: `file`, example: `custom_agat_config.yaml`. AGAT config file", + "help_text": "Type: `file`, example: `custom_agat_config.yaml`. AGAT config file. By default AGAT takes the original agat_config.yaml shipped with AGAT. The `--config` option \ngives you the possibility to use your own AGAT config file (located elsewhere or named differently).\n" + + } + + +} +}, + + + "nextflow input-output arguments" : { + "title": "Nextflow input-output arguments", + "type": "object", + "description": "Input/output parameters for Nextflow itself. Please note that both publishDir and publish_dir are supported but at least one has to be configured.", + "properties": { + + + "publish_dir": { + "type": + "string", + "description": "Type: `string`, required, example: `output/`. Path to an output directory", + "help_text": "Type: `string`, required, example: `output/`. Path to an output directory." + + } + + + , + "param_list": { + "type": + "string", + "description": "Type: `string`, example: `my_params.yaml`. Allows inputting multiple parameter sets to initialise a Nextflow channel", + "help_text": "Type: `string`, example: `my_params.yaml`. Allows inputting multiple parameter sets to initialise a Nextflow channel. A `param_list` can either be a list of maps, a csv file, a json file, a yaml file, or simply a yaml blob.\n\n* A list of maps (as-is) where the keys of each map corresponds to the arguments of the pipeline. Example: in a `nextflow.config` file: `param_list: [ [\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027], [\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027] ]`.\n* A csv file should have column names which correspond to the different arguments of this pipeline. Example: `--param_list data.csv` with columns `id,input`.\n* A json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. Example: `--param_list data.json` with contents `[ {\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027}, {\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027} ]`.\n* A yaml blob can also be passed directly as a string. Example: `--param_list \"[ {\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027}, {\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027} ]\"`.\n\nWhen passing a csv, json or yaml file, relative path names are relativized to the location of the parameter file. No relativation is performed when `param_list` is a list of maps (as-is) or a yaml blob.", + "hidden": true + + } + + +} +} +}, +"allOf": [ + + { + "$ref": "#/definitions/inputs" + }, + + { + "$ref": "#/definitions/outputs" + }, + + { + "$ref": "#/definitions/arguments" + }, + + { + "$ref": "#/definitions/nextflow input-output arguments" + } +] +} diff --git a/target/nextflow/agat/agat_sp_statistics/.config.vsh.yaml b/target/nextflow/agat/agat_sp_statistics/.config.vsh.yaml new file mode 100644 index 00000000..6906ff69 --- /dev/null +++ b/target/nextflow/agat/agat_sp_statistics/.config.vsh.yaml @@ -0,0 +1,258 @@ +name: "agat_sp_statistics" +namespace: "agat" +version: "main" +authors: +- name: "Leïla Paquay" + roles: + - "author" + - "maintainer" + info: + links: + email: "leila@data-intuitive.com" + github: "Leila011" + linkedin: "leilapaquay" + organizations: + - name: "Data Intuitive" + href: "https://www.data-intuitive.com" + role: "Software Developer" +argument_groups: +- name: "Inputs" + arguments: + - type: "file" + name: "--gff" + alternatives: + - "-i" + description: "Input GTF/GFF file." + info: null + example: + - "input.gff" + must_exist: true + create_parent: true + required: true + direction: "input" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--gs_fasta" + description: "Genome size directly from a fasta file to compute more statistics.\n" + info: null + example: + - "genome.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Outputs" + arguments: + - type: "file" + name: "--output" + alternatives: + - "-o" + description: "The file where the results will be written.\n" + info: null + example: + - "output.txt" + must_exist: true + create_parent: true + required: true + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Options" + arguments: + - type: "boolean_true" + name: "--plot" + alternatives: + - "-p" + - "-d" + description: "When this option is used, an histogram of distribution of the features\ + \ will be printed in pdf files.\n" + info: null + direction: "input" + - type: "integer" + name: "--gs_size" + description: "Genome size in nucleotides to compute more statistics.\n" + info: null + example: + - 1000000 + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "integer" + name: "--verbose" + alternatives: + - "-v" + description: "Verbose option. To modify verbosity. Default is 1. 0 is quiet, 2\ + \ and 3 are increasing verbosity.\n" + info: null + example: + - 1 + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--config" + alternatives: + - "-c" + description: "AGAT config file. By default AGAT takes the original agat_config.yaml\ + \ shipped with AGAT. The `--config`\noption gives you the possibility to use\ + \ your own AGAT config file (located elsewhere or named differently).\n" + info: null + example: + - "custom_agat_config.yaml" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +resources: +- type: "bash_script" + path: "script.sh" + is_executable: true +description: "The script provides exhaustive statistics of a gft/gff file. \n\nIf\ + \ you have isoforms in your file, even if correct, some values calculated\nmight\ + \ sounds incoherent: e.g. total length mRNA can be superior than the\ngenome size.\ + \ Because all isoforms length is added... It is why by\ndefault we always compute\ + \ the statistics twice when there are isoforms,\nonce with the isoforms, once without\ + \ (In that case we keep the longest\nisoform per locus).\n" +test_resources: +- type: "bash_script" + path: "test.sh" + is_executable: true +- type: "file" + path: "test_data" +info: null +status: "enabled" +requirements: + commands: + - "ps" +keywords: +- "gene annotations" +- "statistics" +- "gff" +license: "GPL-3.0" +references: + doi: + - "10.5281/zenodo.3552717" +links: + repository: "https://github.com/NBISweden/AGAT" + homepage: "https://github.com/NBISweden/AGAT" + documentation: "https://agat.readthedocs.io/en/latest/tools/agat_sp_statistics.html" + issue_tracker: "https://github.com/NBISweden/AGAT/issues" +runners: +- type: "executable" + id: "executable" + docker_setup_strategy: "ifneedbepullelsecachedbuild" +- type: "nextflow" + id: "nextflow" + directives: + tag: "$id" + auto: + simplifyInput: true + simplifyOutput: false + transcript: false + publish: false + config: + labels: + mem1gb: "memory = 1000000000.B" + mem2gb: "memory = 2000000000.B" + mem5gb: "memory = 5000000000.B" + mem10gb: "memory = 10000000000.B" + mem20gb: "memory = 20000000000.B" + mem50gb: "memory = 50000000000.B" + mem100gb: "memory = 100000000000.B" + mem200gb: "memory = 200000000000.B" + mem500gb: "memory = 500000000000.B" + mem1tb: "memory = 1000000000000.B" + mem2tb: "memory = 2000000000000.B" + mem5tb: "memory = 5000000000000.B" + mem10tb: "memory = 10000000000000.B" + mem20tb: "memory = 20000000000000.B" + mem50tb: "memory = 50000000000000.B" + mem100tb: "memory = 100000000000000.B" + mem200tb: "memory = 200000000000000.B" + mem500tb: "memory = 500000000000000.B" + mem1gib: "memory = 1073741824.B" + mem2gib: "memory = 2147483648.B" + mem4gib: "memory = 4294967296.B" + mem8gib: "memory = 8589934592.B" + mem16gib: "memory = 17179869184.B" + mem32gib: "memory = 34359738368.B" + mem64gib: "memory = 68719476736.B" + mem128gib: "memory = 137438953472.B" + mem256gib: "memory = 274877906944.B" + mem512gib: "memory = 549755813888.B" + mem1tib: "memory = 1099511627776.B" + mem2tib: "memory = 2199023255552.B" + mem4tib: "memory = 4398046511104.B" + mem8tib: "memory = 8796093022208.B" + mem16tib: "memory = 17592186044416.B" + mem32tib: "memory = 35184372088832.B" + mem64tib: "memory = 70368744177664.B" + mem128tib: "memory = 140737488355328.B" + mem256tib: "memory = 281474976710656.B" + mem512tib: "memory = 562949953421312.B" + cpu1: "cpus = 1" + cpu2: "cpus = 2" + cpu5: "cpus = 5" + cpu10: "cpus = 10" + cpu20: "cpus = 20" + cpu50: "cpus = 50" + cpu100: "cpus = 100" + cpu200: "cpus = 200" + cpu500: "cpus = 500" + cpu1000: "cpus = 1000" + debug: false + container: "docker" +engines: +- type: "docker" + id: "docker" + image: "quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0" + target_registry: "images.viash-hub.com" + target_tag: "main" + namespace_separator: "/" + setup: + - type: "docker" + run: + - "agat --version | sed 's/.*v\\.//; s/\\s.*//' | sed 's/^/AGAT: /' > /var/software_versions.txt\n" + entrypoint: [] + cmd: null +- type: "native" + id: "native" +build_info: + config: "src/agat/agat_sp_statistics/config.vsh.yaml" + runner: "nextflow" + engine: "docker|native" + output: "target/nextflow/agat/agat_sp_statistics" + executable: "target/nextflow/agat/agat_sp_statistics/main.nf" + viash_version: "0.9.0" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" +package_config: + name: "biobox" + version: "main" + description: "A collection of bioinformatics tools for working with sequence data.\n" + info: null + viash_version: "0.9.0" + source: "src" + target: "target" + config_mods: + - ".requirements.commands := ['ps']\n" + - ".engines += { type: \"native\" }" + - ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'" + - ".engines[.type == 'docker'].target_tag := 'main'" + keywords: + - "bioinformatics" + - "modules" + - "sequencing" + license: "MIT" + organization: "vsh" + links: + repository: "https://github.com/viash-hub/biobox" + issue_tracker: "https://github.com/viash-hub/biobox/issues" diff --git a/target/nextflow/agat/agat_sp_statistics/main.nf b/target/nextflow/agat/agat_sp_statistics/main.nf new file mode 100644 index 00000000..21e1f6c1 --- /dev/null +++ b/target/nextflow/agat/agat_sp_statistics/main.nf @@ -0,0 +1,3671 @@ +// agat_sp_statistics main +// +// This wrapper script is auto-generated by viash 0.9.0 and is thus a derivative +// work thereof. This software comes with ABSOLUTELY NO WARRANTY from Data +// Intuitive. +// +// The component may contain files which fall under a different license. The +// authors of this component should specify the license in the header of such +// files, or include a separate license file detailing the licenses of all included +// files. +// +// Component authors: +// * Leïla Paquay (author, maintainer) + +//////////////////////////// +// VDSL3 helper functions // +//////////////////////////// + +// helper file: 'src/main/resources/io/viash/runners/nextflow/arguments/_checkArgumentType.nf' +class UnexpectedArgumentTypeException extends Exception { + String errorIdentifier + String stage + String plainName + String expectedClass + String foundClass + + // ${key ? " in module '$key'" : ""}${id ? " id '$id'" : ""} + UnexpectedArgumentTypeException(String errorIdentifier, String stage, String plainName, String expectedClass, String foundClass) { + super("Error${errorIdentifier ? " $errorIdentifier" : ""}:${stage ? " $stage" : "" } argument '${plainName}' has the wrong type. " + + "Expected type: ${expectedClass}. Found type: ${foundClass}") + this.errorIdentifier = errorIdentifier + this.stage = stage + this.plainName = plainName + this.expectedClass = expectedClass + this.foundClass = foundClass + } +} + +/** + * Checks if the given value is of the expected type. If not, an exception is thrown. + * + * @param stage The stage of the argument (input or output) + * @param par The parameter definition + * @param value The value to check + * @param errorIdentifier The identifier to use in the error message + * @return The value, if it is of the expected type + * @throws UnexpectedArgumentTypeException If the value is not of the expected type +*/ +def _checkArgumentType(String stage, Map par, Object value, String errorIdentifier) { + // expectedClass will only be != null if value is not of the expected type + def expectedClass = null + def foundClass = null + + // todo: split if need be + + if (!par.required && value == null) { + expectedClass = null + } else if (par.multiple) { + if (value !instanceof Collection) { + value = [value] + } + + // split strings + value = value.collectMany{ val -> + if (val instanceof String) { + // collect() to ensure that the result is a List and not simply an array + val.split(par.multiple_sep).collect() + } else { + [val] + } + } + + // process globs + if (par.type == "file" && par.direction == "input") { + value = value.collect{ it instanceof String ? file(it, hidden: true) : it }.flatten() + } + + // check types of elements in list + try { + value = value.collect { listVal -> + _checkArgumentType(stage, par + [multiple: false], listVal, errorIdentifier) + } + } catch (UnexpectedArgumentTypeException e) { + expectedClass = "List[${e.expectedClass}]" + foundClass = "List[${e.foundClass}]" + } + } else if (par.type == "string") { + // cast to string if need be + if (value instanceof GString) { + value = value.toString() + } + expectedClass = value instanceof String ? null : "String" + } else if (par.type == "integer") { + // cast to integer if need be + if (value instanceof String) { + try { + value = value.toInteger() + } catch (NumberFormatException e) { + // do nothing + } + } + if (value instanceof java.math.BigInteger) { + value = value.intValue() + } + expectedClass = value instanceof Integer ? null : "Integer" + } else if (par.type == "long") { + // cast to long if need be + if (value instanceof String) { + try { + value = value.toLong() + } catch (NumberFormatException e) { + // do nothing + } + } + if (value instanceof Integer) { + value = value.toLong() + } + expectedClass = value instanceof Long ? null : "Long" + } else if (par.type == "double") { + // cast to double if need be + if (value instanceof String) { + try { + value = value.toDouble() + } catch (NumberFormatException e) { + // do nothing + } + } + if (value instanceof java.math.BigDecimal) { + value = value.doubleValue() + } + if (value instanceof Float) { + value = value.toDouble() + } + expectedClass = value instanceof Double ? null : "Double" + } else if (par.type == "boolean" | par.type == "boolean_true" | par.type == "boolean_false") { + // cast to boolean if need be + if (value instanceof String) { + def valueLower = value.toLowerCase() + if (valueLower == "true") { + value = true + } else if (valueLower == "false") { + value = false + } + } + expectedClass = value instanceof Boolean ? null : "Boolean" + } else if (par.type == "file" && (par.direction == "input" || stage == "output")) { + // cast to path if need be + if (value instanceof String) { + value = file(value, hidden: true) + } + if (value instanceof File) { + value = value.toPath() + } + expectedClass = value instanceof Path ? null : "Path" + } else if (par.type == "file" && stage == "input" && par.direction == "output") { + // cast to string if need be + if (value instanceof GString) { + value = value.toString() + } + expectedClass = value instanceof String ? null : "String" + } else { + // didn't find a match for par.type + expectedClass = par.type + } + + if (expectedClass != null) { + if (foundClass == null) { + foundClass = value.getClass().getName() + } + throw new UnexpectedArgumentTypeException(errorIdentifier, stage, par.plainName, expectedClass, foundClass) + } + + return value +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/arguments/_processInputValues.nf' +Map _processInputValues(Map inputs, Map config, String id, String key) { + if (!workflow.stubRun) { + config.allArguments.each { arg -> + if (arg.required) { + assert inputs.containsKey(arg.plainName) && inputs.get(arg.plainName) != null : + "Error in module '${key}' id '${id}': required input argument '${arg.plainName}' is missing" + } + } + + inputs = inputs.collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && (it.direction == "input" || it.type == "file") } + assert par != null : "Error in module '${key}' id '${id}': '${name}' is not a valid input argument" + + value = _checkArgumentType("input", par, value, "in module '$key' id '$id'") + + [ name, value ] + } + } + return inputs +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/arguments/_processOutputValues.nf' +Map _processOutputValues(Map outputs, Map config, String id, String key) { + if (!workflow.stubRun) { + config.allArguments.each { arg -> + if (arg.direction == "output" && arg.required) { + assert outputs.containsKey(arg.plainName) && outputs.get(arg.plainName) != null : + "Error in module '${key}' id '${id}': required output argument '${arg.plainName}' is missing" + } + } + + outputs = outputs.collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && it.direction == "output" } + assert par != null : "Error in module '${key}' id '${id}': '${name}' is not a valid output argument" + + value = _checkArgumentType("output", par, value, "in module '$key' id '$id'") + + [ name, value ] + } + } + return outputs +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/IDChecker.nf' +class IDChecker { + final def items = [] as Set + + @groovy.transform.WithWriteLock + boolean observe(String item) { + if (items.contains(item)) { + return false + } else { + items << item + return true + } + } + + @groovy.transform.WithReadLock + boolean contains(String item) { + return items.contains(item) + } + + @groovy.transform.WithReadLock + Set getItems() { + return items.clone() + } +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_checkUniqueIds.nf' + +/** + * Check if the ids are unique across parameter sets + * + * @param parameterSets a list of parameter sets. + */ +private void _checkUniqueIds(List>> parameterSets) { + def ppIds = parameterSets.collect{it[0]} + assert ppIds.size() == ppIds.unique().size() : "All argument sets should have unique ids. Detected ids: $ppIds" +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_getChild.nf' + +// helper functions for reading params from file // +def _getChild(parent, child) { + if (child.contains("://") || java.nio.file.Paths.get(child).isAbsolute()) { + child + } else { + def parentAbsolute = java.nio.file.Paths.get(parent).toAbsolutePath().toString() + parentAbsolute.replaceAll('/[^/]*$', "/") + child + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_parseParamList.nf' +/** + * Figure out the param list format based on the file extension + * + * @param param_list A String containing the path to the parameter list file. + * + * @return A String containing the format of the parameter list file. + */ +def _paramListGuessFormat(param_list) { + if (param_list !instanceof String) { + "asis" + } else if (param_list.endsWith(".csv")) { + "csv" + } else if (param_list.endsWith(".json") || param_list.endsWith(".jsn")) { + "json" + } else if (param_list.endsWith(".yaml") || param_list.endsWith(".yml")) { + "yaml" + } else { + "yaml_blob" + } +} + + +/** + * Read the param list + * + * @param param_list One of the following: + * - A String containing the path to the parameter list file (csv, json or yaml), + * - A yaml blob of a list of maps (yaml_blob), + * - Or a groovy list of maps (asis). + * @param config A Map of the Viash configuration. + * + * @return A List of Maps containing the parameters. + */ +def _parseParamList(param_list, Map config) { + // first determine format by extension + def paramListFormat = _paramListGuessFormat(param_list) + + def paramListPath = (paramListFormat != "asis" && paramListFormat != "yaml_blob") ? + file(param_list, hidden: true) : + null + + // get the correct parser function for the detected params_list format + def paramSets = [] + if (paramListFormat == "asis") { + paramSets = param_list + } else if (paramListFormat == "yaml_blob") { + paramSets = readYamlBlob(param_list) + } else if (paramListFormat == "yaml") { + paramSets = readYaml(paramListPath) + } else if (paramListFormat == "json") { + paramSets = readJson(paramListPath) + } else if (paramListFormat == "csv") { + paramSets = readCsv(paramListPath) + } else { + error "Format of provided --param_list not recognised.\n" + + "Found: '$paramListFormat'.\n" + + "Expected: a csv file, a json file, a yaml file,\n" + + "a yaml blob or a groovy list of maps." + } + + // data checks + assert paramSets instanceof List: "--param_list should contain a list of maps" + for (value in paramSets) { + assert value instanceof Map: "--param_list should contain a list of maps" + } + + // id is argument + def idIsArgument = config.allArguments.any{it.plainName == "id"} + + // Reformat from List to List> by adding the ID as first element of a Tuple2 + paramSets = paramSets.collect({ data -> + def id = data.id + if (!idIsArgument) { + data = data.findAll{k, v -> k != "id"} + } + [id, data] + }) + + // Split parameters with 'multiple: true' + paramSets = paramSets.collect({ id, data -> + data = _splitParams(data, config) + [id, data] + }) + + // The paths of input files inside a param_list file may have been specified relatively to the + // location of the param_list file. These paths must be made absolute. + if (paramListPath) { + paramSets = paramSets.collect({ id, data -> + def new_data = data.collectEntries{ parName, parValue -> + def par = config.allArguments.find{it.plainName == parName} + if (par && par.type == "file" && par.direction == "input") { + if (parValue instanceof Collection) { + parValue = parValue.collectMany{path -> + def x = _resolveSiblingIfNotAbsolute(path, paramListPath) + x instanceof Collection ? x : [x] + } + } else { + parValue = _resolveSiblingIfNotAbsolute(parValue, paramListPath) + } + } + [parName, parValue] + } + [id, new_data] + }) + } + + return paramSets +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/_splitParams.nf' +/** + * Split parameters for arguments that accept multiple values using their separator + * + * @param paramList A Map containing parameters to split. + * @param config A Map of the Viash configuration. This Map can be generated from the config file + * using the readConfig() function. + * + * @return A Map of parameters where the parameter values have been split into a list using + * their seperator. + */ +Map _splitParams(Map parValues, Map config){ + def parsedParamValues = parValues.collectEntries { parName, parValue -> + def parameterSettings = config.allArguments.find({it.plainName == parName}) + + if (!parameterSettings) { + // if argument is not found, do not alter + return [parName, parValue] + } + if (parameterSettings.multiple) { // Check if parameter can accept multiple values + if (parValue instanceof Collection) { + parValue = parValue.collect{it instanceof String ? it.split(parameterSettings.multiple_sep) : it } + } else if (parValue instanceof String) { + parValue = parValue.split(parameterSettings.multiple_sep) + } else if (parValue == null) { + parValue = [] + } else { + parValue = [ parValue ] + } + parValue = parValue.flatten() + } + // For all parameters check if multiple values are only passed for + // arguments that allow it. Quietly simplify lists of length 1. + if (!parameterSettings.multiple && parValue instanceof Collection) { + assert parValue.size() == 1 : + "Error: argument ${parName} has too many values.\n" + + " Expected amount: 1. Found: ${parValue.size()}" + parValue = parValue[0] + } + [parName, parValue] + } + return parsedParamValues +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/channelFromParams.nf' +/** + * Parse nextflow parameters based on settings defined in a viash config. + * Return a list of parameter sets, each parameter set corresponding to + * an event in a nextflow channel. The output from this function can be used + * with Channel.fromList to create a nextflow channel with Vdsl3 formatted + * events. + * + * This function performs: + * - A filtering of the params which can be found in the config file. + * - Process the params_list argument which allows a user to to initialise + * a Vsdl3 channel with multiple parameter sets. Possible formats are + * csv, json, yaml, or simply a yaml_blob. A csv should have column names + * which correspond to the different arguments of this pipeline. A json or a yaml + * file should be a list of maps, each of which has keys corresponding to the + * arguments of the pipeline. A yaml blob can also be passed directly as a parameter. + * When passing a csv, json or yaml, relative path names are relativized to the + * location of the parameter file. + * - Combine the parameter sets into a vdsl3 Channel. + * + * @param params Input parameters. Can optionaly contain a 'param_list' key that + * provides a list of arguments that can be split up into multiple events + * in the output channel possible formats of param_lists are: a csv file, + * json file, a yaml file or a yaml blob. Each parameters set (event) must + * have a unique ID. + * @param config A Map of the Viash configuration. This Map can be generated from the config file + * using the readConfig() function. + * + * @return A list of parameters with the first element of the event being + * the event ID and the second element containing a map of the parsed parameters. + */ + +private List>> _paramsToParamSets(Map params, Map config){ + // todo: fetch key from run args + def key_ = config.name + + /* parse regular parameters (not in param_list) */ + /*************************************************/ + def globalParams = config.allArguments + .findAll { params.containsKey(it.plainName) } + .collectEntries { [ it.plainName, params[it.plainName] ] } + def globalID = params.get("id", null) + + /* process params_list arguments */ + /*********************************/ + def paramList = params.containsKey("param_list") && params.param_list != null ? + params.param_list : [] + // if (paramList instanceof String) { + // paramList = [paramList] + // } + // def paramSets = paramList.collectMany{ _parseParamList(it, config) } + // TODO: be able to process param_list when it is a list of strings + def paramSets = _parseParamList(paramList, config) + if (paramSets.isEmpty()) { + paramSets = [[null, [:]]] + } + + /* combine arguments into channel */ + /**********************************/ + def processedParams = paramSets.indexed().collect{ index, tup -> + // Process ID + def id = tup[0] ?: globalID + + if (workflow.stubRun && !id) { + // if stub run, explicitly add an id if missing + id = "stub${index}" + } + assert id != null: "Each parameter set should have at least an 'id'" + + // Process params + def parValues = globalParams + tup[1] + // // Remove parameters which are null, if the default is also null + // parValues = parValues.collectEntries{paramName, paramValue -> + // parameterSettings = config.functionality.allArguments.find({it.plainName == paramName}) + // if ( paramValue != null || parameterSettings.get("default", null) != null ) { + // [paramName, paramValue] + // } + // } + parValues = parValues.collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && (it.direction == "input" || it.type == "file") } + assert par != null : "Error in module '${key_}' id '${id}': '${name}' is not a valid input argument" + + if (par == null) { + return [:] + } + value = _checkArgumentType("input", par, value, "in module '$key_' id '$id'") + + [ name, value ] + } + + [id, parValues] + } + + // Check if ids (first element of each list) is unique + _checkUniqueIds(processedParams) + return processedParams +} + +/** + * Parse nextflow parameters based on settings defined in a viash config + * and return a nextflow channel. + * + * @param params Input parameters. Can optionaly contain a 'param_list' key that + * provides a list of arguments that can be split up into multiple events + * in the output channel possible formats of param_lists are: a csv file, + * json file, a yaml file or a yaml blob. Each parameters set (event) must + * have a unique ID. + * @param config A Map of the Viash configuration. This Map can be generated from the config file + * using the readConfig() function. + * + * @return A nextflow Channel with events. Events are formatted as a tuple that contains + * first contains the ID of the event and as second element holds a parameter map. + * + * + */ +def channelFromParams(Map params, Map config) { + def processedParams = _paramsToParamSets(params, config) + return Channel.fromList(processedParams) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/checkUniqueIds.nf' +def checkUniqueIds(Map args) { + def stopOnError = args.stopOnError == null ? args.stopOnError : true + + def idChecker = new IDChecker() + + return filter { tup -> + if (!idChecker.observe(tup[0])) { + if (stopOnError) { + error "Duplicate id: ${tup[0]}" + } else { + log.warn "Duplicate id: ${tup[0]}, removing duplicate entry" + return false + } + } + return true + } +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/preprocessInputs.nf' +// This helper file will be deprecated soon +preprocessInputsDeprecationWarningPrinted = false + +def preprocessInputsDeprecationWarning() { + if (!preprocessInputsDeprecationWarningPrinted) { + preprocessInputsDeprecationWarningPrinted = true + System.err.println("Warning: preprocessInputs() is deprecated and will be removed in Viash 0.9.0.") + } +} + +/** + * Generate a nextflow Workflow that allows processing a channel of + * Vdsl3 formatted events and apply a Viash config to them: + * - Gather default parameters from the Viash config and make + * sure that they are correctly formatted (see applyConfig method). + * - Format the input parameters (also using the applyConfig method). + * - Apply the default parameter to the input parameters. + * - Do some assertions: + * ~ Check if the event IDs in the channel are unique. + * + * The events in the channel are formatted as tuples, with the + * first element of the tuples being a unique id of the parameter set, + * and the second element containg the the parameters themselves. + * Optional extra elements of the tuples will be passed to the output as is. + * + * @param args A map that must contain a 'config' key that points + * to a parsed config (see readConfig()). Optionally, a + * 'key' key can be provided which can be used to create a unique + * name for the workflow process. + * + * @return A workflow that allows processing a channel of Vdsl3 formatted events + * and apply a Viash config to them. + */ +def preprocessInputs(Map args) { + preprocessInputsDeprecationWarning() + + def config = args.config + assert config instanceof Map : + "Error in preprocessInputs: config must be a map. " + + "Expected class: Map. Found: config.getClass() is ${config.getClass()}" + def key_ = args.key ?: config.name + + // Get different parameter types (used throughout this function) + def defaultArgs = config.allArguments + .findAll { it.containsKey("default") } + .collectEntries { [ it.plainName, it.default ] } + + map { tup -> + def id = tup[0] + def data = tup[1] + def passthrough = tup.drop(2) + + def new_data = (defaultArgs + data).collectEntries { name, value -> + def par = config.allArguments.find { it.plainName == name && (it.direction == "input" || it.type == "file") } + + if (par != null) { + value = _checkArgumentType("input", par, value, "in module '$key_' id '$id'") + } + + [ name, value ] + } + + [ id, new_data ] + passthrough + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/runComponents.nf' +/** + * Run a list of components on a stream of data. + * + * @param components: list of Viash VDSL3 modules to run + * @param fromState: a closure, a map or a list of keys to extract from the input data. + * If a closure, it will be called with the id, the data and the component config. + * @param toState: a closure, a map or a list of keys to extract from the output data + * If a closure, it will be called with the id, the output data, the old state and the component config. + * @param filter: filter function to apply to the input. + * It will be called with the id, the data and the component config. + * @param id: id to use for the output data + * If a closure, it will be called with the id, the data and the component config. + * @param auto: auto options to pass to the components + * + * @return: a workflow that runs the components + **/ +def runComponents(Map args) { + log.warn("runComponents is deprecated, use runEach instead") + assert args.components: "runComponents should be passed a list of components to run" + + def components_ = args.components + if (components_ !instanceof List) { + components_ = [ components_ ] + } + assert components_.size() > 0: "pass at least one component to runComponents" + + def fromState_ = args.fromState + def toState_ = args.toState + def filter_ = args.filter + def id_ = args.id + + workflow runComponentsWf { + take: input_ch + main: + + // generate one channel per method + out_chs = components_.collect{ comp_ -> + def comp_config = comp_.config + + def filter_ch = filter_ + ? input_ch | filter{tup -> + filter_(tup[0], tup[1], comp_config) + } + : input_ch + def id_ch = id_ + ? filter_ch | map{tup -> + // def new_id = id_(tup[0], tup[1], comp_config) + def new_id = tup[0] + if (id_ instanceof String) { + new_id = id_ + } else if (id_ instanceof Closure) { + new_id = id_(new_id, tup[1], comp_config) + } + [new_id] + tup.drop(1) + } + : filter_ch + def data_ch = id_ch | map{tup -> + def new_data = tup[1] + if (fromState_ instanceof Map) { + new_data = fromState_.collectEntries{ key0, key1 -> + [key0, new_data[key1]] + } + } else if (fromState_ instanceof List) { + new_data = fromState_.collectEntries{ key -> + [key, new_data[key]] + } + } else if (fromState_ instanceof Closure) { + new_data = fromState_(tup[0], new_data, comp_config) + } + tup.take(1) + [new_data] + tup.drop(1) + } + def out_ch = data_ch + | comp_.run( + auto: (args.auto ?: [:]) + [simplifyInput: false, simplifyOutput: false] + ) + def post_ch = toState_ + ? out_ch | map{tup -> + def output = tup[1] + def old_state = tup[2] + def new_state = null + if (toState_ instanceof Map) { + new_state = old_state + toState_.collectEntries{ key0, key1 -> + [key0, output[key1]] + } + } else if (toState_ instanceof List) { + new_state = old_state + toState_.collectEntries{ key -> + [key, output[key]] + } + } else if (toState_ instanceof Closure) { + new_state = toState_(tup[0], output, old_state, comp_config) + } + [tup[0], new_state] + tup.drop(3) + } + : out_ch + + post_ch + } + + // mix all results + output_ch = + (out_chs.size == 1) + ? out_chs[0] + : out_chs[0].mix(*out_chs.drop(1)) + + emit: output_ch + } + + return runComponentsWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/runEach.nf' +/** + * Run a list of components on a stream of data. + * + * @param components: list of Viash VDSL3 modules to run + * @param fromState: a closure, a map or a list of keys to extract from the input data. + * If a closure, it will be called with the id, the data and the component itself. + * @param toState: a closure, a map or a list of keys to extract from the output data + * If a closure, it will be called with the id, the output data, the old state and the component itself. + * @param filter: filter function to apply to the input. + * It will be called with the id, the data and the component itself. + * @param id: id to use for the output data + * If a closure, it will be called with the id, the data and the component itself. + * @param auto: auto options to pass to the components + * + * @return: a workflow that runs the components + **/ +def runEach(Map args) { + assert args.components: "runEach should be passed a list of components to run" + + def components_ = args.components + if (components_ !instanceof List) { + components_ = [ components_ ] + } + assert components_.size() > 0: "pass at least one component to runEach" + + def fromState_ = args.fromState + def toState_ = args.toState + def filter_ = args.filter + def runIf_ = args.runIf + def id_ = args.id + + assert !runIf_ || runIf_ instanceof Closure: "runEach: must pass a Closure to runIf." + + workflow runEachWf { + take: input_ch + main: + + // generate one channel per method + out_chs = components_.collect{ comp_ -> + def filter_ch = filter_ + ? input_ch | filter{tup -> + filter_(tup[0], tup[1], comp_) + } + : input_ch + def id_ch = id_ + ? filter_ch | map{tup -> + def new_id = id_ + if (new_id instanceof Closure) { + new_id = new_id(tup[0], tup[1], comp_) + } + assert new_id instanceof String : "Error in runEach: id should be a String or a Closure that returns a String. Expected: id instanceof String. Found: ${new_id.getClass()}" + [new_id] + tup.drop(1) + } + : filter_ch + def chPassthrough = null + def chRun = null + if (runIf_) { + def idRunIfBranch = id_ch.branch{ tup -> + run: runIf_(tup[0], tup[1], comp_) + passthrough: true + } + chPassthrough = idRunIfBranch.passthrough + chRun = idRunIfBranch.run + } else { + chRun = id_ch + chPassthrough = Channel.empty() + } + def data_ch = chRun | map{tup -> + def new_data = tup[1] + if (fromState_ instanceof Map) { + new_data = fromState_.collectEntries{ key0, key1 -> + [key0, new_data[key1]] + } + } else if (fromState_ instanceof List) { + new_data = fromState_.collectEntries{ key -> + [key, new_data[key]] + } + } else if (fromState_ instanceof Closure) { + new_data = fromState_(tup[0], new_data, comp_) + } + tup.take(1) + [new_data] + tup.drop(1) + } + def out_ch = data_ch + | comp_.run( + auto: (args.auto ?: [:]) + [simplifyInput: false, simplifyOutput: false] + ) + def post_ch = toState_ + ? out_ch | map{tup -> + def output = tup[1] + def old_state = tup[2] + def new_state = null + if (toState_ instanceof Map) { + new_state = old_state + toState_.collectEntries{ key0, key1 -> + [key0, output[key1]] + } + } else if (toState_ instanceof List) { + new_state = old_state + toState_.collectEntries{ key -> + [key, output[key]] + } + } else if (toState_ instanceof Closure) { + new_state = toState_(tup[0], output, old_state, comp_) + } + [tup[0], new_state] + tup.drop(3) + } + : out_ch + + def return_ch = post_ch + | concat(chPassthrough) + + return_ch + } + + // mix all results + output_ch = + (out_chs.size == 1) + ? out_chs[0] + : out_chs[0].mix(*out_chs.drop(1)) + + emit: output_ch + } + + return runEachWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/channel/safeJoin.nf' +/** + * Join sourceChannel to targetChannel + * + * This function joins the sourceChannel to the targetChannel. + * However, each id in the targetChannel must be present in the + * sourceChannel. If _meta.join_id exists in the targetChannel, that is + * used as an id instead. If the id doesn't match any id in the sourceChannel, + * an error is thrown. + */ + +def safeJoin(targetChannel, sourceChannel, key) { + def sourceIDs = new IDChecker() + + def sourceCheck = sourceChannel + | map { tup -> + sourceIDs.observe(tup[0]) + tup + } + def targetCheck = targetChannel + | map { tup -> + def id = tup[0] + + if (!sourceIDs.contains(id)) { + error ( + "Error in module '${key}' when merging output with original state.\n" + + " Reason: output with id '${id}' could not be joined with source channel.\n" + + " If the IDs in the output channel differ from the input channel,\n" + + " please set `tup[1]._meta.join_id to the original ID.\n" + + " Original IDs in input channel: ['${sourceIDs.getItems().join("', '")}'].\n" + + " Unexpected ID in the output channel: '${id}'.\n" + + " Example input event: [\"id\", [input: file(...)]],\n" + + " Example output event: [\"newid\", [output: file(...), _meta: [join_id: \"id\"]]]" + ) + } + // TODO: add link to our documentation on how to fix this + + tup + } + + sourceCheck.cross(targetChannel) + | map{ left, right -> + right + left.drop(1) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/_processArgument.nf' +def _processArgument(arg) { + arg.multiple = arg.multiple != null ? arg.multiple : false + arg.required = arg.required != null ? arg.required : false + arg.direction = arg.direction != null ? arg.direction : "input" + arg.multiple_sep = arg.multiple_sep != null ? arg.multiple_sep : ";" + arg.plainName = arg.name.replaceAll("^-*", "") + + if (arg.type == "file") { + arg.must_exist = arg.must_exist != null ? arg.must_exist : true + arg.create_parent = arg.create_parent != null ? arg.create_parent : true + } + + // add default values to output files which haven't already got a default + if (arg.type == "file" && arg.direction == "output" && arg.default == null) { + def mult = arg.multiple ? "_*" : "" + def extSearch = "" + if (arg.default != null) { + extSearch = arg.default + } else if (arg.example != null) { + extSearch = arg.example + } + if (extSearch instanceof List) { + extSearch = extSearch[0] + } + def extSearchResult = extSearch.find("\\.[^\\.]+\$") + def ext = extSearchResult != null ? extSearchResult : "" + arg.default = "\$id.\$key.${arg.plainName}${mult}${ext}" + if (arg.multiple) { + arg.default = [arg.default] + } + } + + if (!arg.multiple) { + if (arg.default != null && arg.default instanceof List) { + arg.default = arg.default[0] + } + if (arg.example != null && arg.example instanceof List) { + arg.example = arg.example[0] + } + } + + if (arg.type == "boolean_true") { + arg.default = false + } + if (arg.type == "boolean_false") { + arg.default = true + } + + arg +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/addGlobalParams.nf' +def addGlobalArguments(config) { + def localConfig = [ + "argument_groups": [ + [ + "name": "Nextflow input-output arguments", + "description": "Input/output parameters for Nextflow itself. Please note that both publishDir and publish_dir are supported but at least one has to be configured.", + "arguments" : [ + [ + 'name': '--publish_dir', + 'required': true, + 'type': 'string', + 'description': 'Path to an output directory.', + 'example': 'output/', + 'multiple': false + ], + [ + 'name': '--param_list', + 'required': false, + 'type': 'string', + 'description': '''Allows inputting multiple parameter sets to initialise a Nextflow channel. A `param_list` can either be a list of maps, a csv file, a json file, a yaml file, or simply a yaml blob. + | + |* A list of maps (as-is) where the keys of each map corresponds to the arguments of the pipeline. Example: in a `nextflow.config` file: `param_list: [ ['id': 'foo', 'input': 'foo.txt'], ['id': 'bar', 'input': 'bar.txt'] ]`. + |* A csv file should have column names which correspond to the different arguments of this pipeline. Example: `--param_list data.csv` with columns `id,input`. + |* A json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. Example: `--param_list data.json` with contents `[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ]`. + |* A yaml blob can also be passed directly as a string. Example: `--param_list "[ {'id': 'foo', 'input': 'foo.txt'}, {'id': 'bar', 'input': 'bar.txt'} ]"`. + | + |When passing a csv, json or yaml file, relative path names are relativized to the location of the parameter file. No relativation is performed when `param_list` is a list of maps (as-is) or a yaml blob.'''.stripMargin(), + 'example': 'my_params.yaml', + 'multiple': false, + 'hidden': true + ] + // TODO: allow multiple: true in param_list? + // TODO: allow to specify a --param_list_regex to filter the param_list? + // TODO: allow to specify a --param_list_from_state to remap entries in the param_list? + ] + ] + ] + ] + + return processConfig(_mergeMap(config, localConfig)) +} + +def _mergeMap(Map lhs, Map rhs) { + return rhs.inject(lhs.clone()) { map, entry -> + if (map[entry.key] instanceof Map && entry.value instanceof Map) { + map[entry.key] = _mergeMap(map[entry.key], entry.value) + } else if (map[entry.key] instanceof Collection && entry.value instanceof Collection) { + map[entry.key] += entry.value + } else { + map[entry.key] = entry.value + } + return map + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/generateHelp.nf' +def _generateArgumentHelp(param) { + // alternatives are not supported + // def names = param.alternatives ::: List(param.name) + + def unnamedProps = [ + ["required parameter", param.required], + ["multiple values allowed", param.multiple], + ["output", param.direction.toLowerCase() == "output"], + ["file must exist", param.type == "file" && param.must_exist] + ].findAll{it[1]}.collect{it[0]} + + def dflt = null + if (param.default != null) { + if (param.default instanceof List) { + dflt = param.default.join(param.multiple_sep != null ? param.multiple_sep : ", ") + } else { + dflt = param.default.toString() + } + } + def example = null + if (param.example != null) { + if (param.example instanceof List) { + example = param.example.join(param.multiple_sep != null ? param.multiple_sep : ", ") + } else { + example = param.example.toString() + } + } + def min = param.min?.toString() + def max = param.max?.toString() + + def escapeChoice = { choice -> + def s1 = choice.replaceAll("\\n", "\\\\n") + def s2 = s1.replaceAll("\"", """\\\"""") + s2.contains(",") || s2 != choice ? "\"" + s2 + "\"" : s2 + } + def choices = param.choices == null ? + null : + "[ " + param.choices.collect{escapeChoice(it.toString())}.join(", ") + " ]" + + def namedPropsStr = [ + ["type", ([param.type] + unnamedProps).join(", ")], + ["default", dflt], + ["example", example], + ["choices", choices], + ["min", min], + ["max", max] + ] + .findAll{it[1]} + .collect{"\n " + it[0] + ": " + it[1].replaceAll("\n", "\\n")} + .join("") + + def descStr = param.description == null ? + "" : + _paragraphWrap("\n" + param.description.trim(), 80 - 8).join("\n ") + + "\n --" + param.plainName + + namedPropsStr + + descStr +} + +// Based on Helper.generateHelp() in Helper.scala +def _generateHelp(config) { + def fun = config + + // PART 1: NAME AND VERSION + def nameStr = fun.name + + (fun.version == null ? "" : " " + fun.version) + + // PART 2: DESCRIPTION + def descrStr = fun.description == null ? + "" : + "\n\n" + _paragraphWrap(fun.description.trim(), 80).join("\n") + + // PART 3: Usage + def usageStr = fun.usage == null ? + "" : + "\n\nUsage:\n" + fun.usage.trim() + + // PART 4: Options + def argGroupStrs = fun.allArgumentGroups.collect{argGroup -> + def name = argGroup.name + def descriptionStr = argGroup.description == null ? + "" : + "\n " + _paragraphWrap(argGroup.description.trim(), 80-4).join("\n ") + "\n" + def arguments = argGroup.arguments.collect{arg -> + arg instanceof String ? fun.allArguments.find{it.plainName == arg} : arg + }.findAll{it != null} + def argumentStrs = arguments.collect{param -> _generateArgumentHelp(param)} + + "\n\n$name:" + + descriptionStr + + argumentStrs.join("\n") + } + + // FINAL: combine + def out = nameStr + + descrStr + + usageStr + + argGroupStrs.join("") + + return out +} + +// based on Format._paragraphWrap +def _paragraphWrap(str, maxLength) { + def outLines = [] + str.split("\n").each{par -> + def words = par.split("\\s").toList() + + def word = null + def line = words.pop() + while(!words.isEmpty()) { + word = words.pop() + if (line.length() + word.length() + 1 <= maxLength) { + line = line + " " + word + } else { + outLines.add(line) + line = word + } + } + if (words.isEmpty()) { + outLines.add(line) + } + } + return outLines +} + +def helpMessage(config) { + if (params.containsKey("help") && params.help) { + def mergedConfig = addGlobalArguments(config) + def helpStr = _generateHelp(mergedConfig) + println(helpStr) + exit 0 + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/processConfig.nf' +def processConfig(config) { + // set defaults for arguments + config.arguments = + (config.arguments ?: []).collect{_processArgument(it)} + + // set defaults for argument_group arguments + config.argument_groups = + (config.argument_groups ?: []).collect{grp -> + grp.arguments = (grp.arguments ?: []).collect{_processArgument(it)} + grp + } + + // create combined arguments list + config.allArguments = + config.arguments + + config.argument_groups.collectMany{it.arguments} + + // add missing argument groups (based on Functionality::allArgumentGroups()) + def argGroups = config.argument_groups + if (argGroups.any{it.name.toLowerCase() == "arguments"}) { + argGroups = argGroups.collect{ grp -> + if (grp.name.toLowerCase() == "arguments") { + grp = grp + [ + arguments: grp.arguments + config.arguments + ] + } + grp + } + } else { + argGroups = argGroups + [ + name: "Arguments", + arguments: config.arguments + ] + } + config.allArgumentGroups = argGroups + + config +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/config/readConfig.nf' + +def readConfig(file) { + def config = readYaml(file ?: moduleDir.resolve("config.vsh.yaml")) + processConfig(config) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/_resolveSiblingIfNotAbsolute.nf' +/** + * Resolve a path relative to the current file. + * + * @param str The path to resolve, as a String. + * @param parentPath The path to resolve relative to, as a Path. + * + * @return The path that may have been resovled, as a Path. + */ +def _resolveSiblingIfNotAbsolute(str, parentPath) { + if (str !instanceof String) { + return str + } + if (!_stringIsAbsolutePath(str)) { + return parentPath.resolveSibling(str) + } else { + return file(str, hidden: true) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/_stringIsAbsolutePath.nf' +/** + * Check whether a path as a string is absolute. + * + * In the past, we tried using `file(., relative: true).isAbsolute()`, + * but the 'relative' option was added in 22.10.0. + * + * @param path The path to check, as a String. + * + * @return Whether the path is absolute, as a boolean. + */ +def _stringIsAbsolutePath(path) { + def _resolve_URL_PROTOCOL = ~/^([a-zA-Z][a-zA-Z0-9]*:)?\\/.+/ + + assert path instanceof String + return _resolve_URL_PROTOCOL.matcher(path).matches() +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/collectTraces.nf' +class CustomTraceObserver implements nextflow.trace.TraceObserver { + List traces + + CustomTraceObserver(List traces) { + this.traces = traces + } + + @Override + void onProcessComplete(nextflow.processor.TaskHandler handler, nextflow.trace.TraceRecord trace) { + def trace2 = trace.store.clone() + trace2.script = null + traces.add(trace2) + } + + @Override + void onProcessCached(nextflow.processor.TaskHandler handler, nextflow.trace.TraceRecord trace) { + def trace2 = trace.store.clone() + trace2.script = null + traces.add(trace2) + } +} + +def collectTraces() { + def traces = Collections.synchronizedList([]) + + // add custom trace observer which stores traces in the traces object + session.observers.add(new CustomTraceObserver(traces)) + + traces +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/deepClone.nf' +/** + * Performs a deep clone of the given object. + * @param x an object + */ +def deepClone(x) { + iterateMap(x, {it instanceof Cloneable ? it.clone() : it}) +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/getPublishDir.nf' +def getPublishDir() { + return params.containsKey("publish_dir") ? params.publish_dir : + params.containsKey("publishDir") ? params.publishDir : + null +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/getRootDir.nf' + +// Recurse upwards until we find a '.build.yaml' file +def _findBuildYamlFile(pathPossiblySymlink) { + def path = pathPossiblySymlink.toRealPath() + def child = path.resolve(".build.yaml") + if (java.nio.file.Files.isDirectory(path) && java.nio.file.Files.exists(child)) { + return child + } else { + def parent = path.getParent() + if (parent == null) { + return null + } else { + return _findBuildYamlFile(parent) + } + } +} + +// get the root of the target folder +def getRootDir() { + def dir = _findBuildYamlFile(meta.resources_dir) + assert dir != null: "Could not find .build.yaml in the folder structure" + dir.getParent() +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/iterateMap.nf' +/** + * Recursively apply a function over the leaves of an object. + * @param obj The object to iterate over. + * @param fun The function to apply to each value. + * @return The object with the function applied to each value. + */ +def iterateMap(obj, fun) { + if (obj instanceof List && obj !instanceof String) { + return obj.collect{item -> + iterateMap(item, fun) + } + } else if (obj instanceof Map) { + return obj.collectEntries{key, item -> + [key.toString(), iterateMap(item, fun)] + } + } else { + return fun(obj) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/functions/niceView.nf' +/** + * A view for printing the event of each channel as a YAML blob. + * This is useful for debugging. + */ +def niceView() { + workflow niceViewWf { + take: input + main: + output = input + | view{toYamlBlob(it)} + emit: output + } + return niceViewWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readCsv.nf' + +def readCsv(file_path) { + def output = [] + def inputFile = file_path !instanceof Path ? file(file_path, hidden: true) : file_path + + // todo: allow escaped quotes in string + // todo: allow single quotes? + def splitRegex = java.util.regex.Pattern.compile(''',(?=(?:[^"]*"[^"]*")*[^"]*$)''') + def removeQuote = java.util.regex.Pattern.compile('''"(.*)"''') + + def br = java.nio.file.Files.newBufferedReader(inputFile) + + def row = -1 + def header = null + while (br.ready() && header == null) { + def line = br.readLine() + row++ + if (!line.startsWith("#")) { + header = splitRegex.split(line, -1).collect{field -> + m = removeQuote.matcher(field) + m.find() ? m.replaceFirst('$1') : field + } + } + } + assert header != null: "CSV file should contain a header" + + while (br.ready()) { + def line = br.readLine() + row++ + if (line == null) { + br.close() + break + } + + if (!line.startsWith("#")) { + def predata = splitRegex.split(line, -1) + def data = predata.collect{field -> + if (field == "") { + return null + } + def m = removeQuote.matcher(field) + if (m.find()) { + return m.replaceFirst('$1') + } else { + return field + } + } + assert header.size() == data.size(): "Row $row should contain the same number as fields as the header" + + def dataMap = [header, data].transpose().collectEntries().findAll{it.value != null} + output.add(dataMap) + } + } + + output +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readJson.nf' +def readJson(file_path) { + def inputFile = file_path !instanceof Path ? file(file_path, hidden: true) : file_path + def jsonSlurper = new groovy.json.JsonSlurper() + jsonSlurper.parse(inputFile) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readJsonBlob.nf' +def readJsonBlob(str) { + def jsonSlurper = new groovy.json.JsonSlurper() + jsonSlurper.parseText(str) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readTaggedYaml.nf' +// Custom constructor to modify how certain objects are parsed from YAML +class CustomConstructor extends org.yaml.snakeyaml.constructor.Constructor { + Path root + + class ConstructPath extends org.yaml.snakeyaml.constructor.AbstractConstruct { + public Object construct(org.yaml.snakeyaml.nodes.Node node) { + String filename = (String) constructScalar(node); + if (root != null) { + return root.resolve(filename); + } + return java.nio.file.Paths.get(filename); + } + } + + CustomConstructor(org.yaml.snakeyaml.LoaderOptions options, Path root) { + super(options) + this.root = root + // Handling !file tag and parse it back to a File type + this.yamlConstructors.put(new org.yaml.snakeyaml.nodes.Tag("!file"), new ConstructPath()) + } +} + +def readTaggedYaml(Path path) { + def options = new org.yaml.snakeyaml.LoaderOptions() + def constructor = new CustomConstructor(options, path.getParent()) + def yaml = new org.yaml.snakeyaml.Yaml(constructor) + return yaml.load(path.text) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readYaml.nf' +def readYaml(file_path) { + def inputFile = file_path !instanceof Path ? file(file_path, hidden: true) : file_path + def yamlSlurper = new org.yaml.snakeyaml.Yaml() + yamlSlurper.load(inputFile) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/readYamlBlob.nf' +def readYamlBlob(str) { + def yamlSlurper = new org.yaml.snakeyaml.Yaml() + yamlSlurper.load(str) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/toJsonBlob.nf' +String toJsonBlob(data) { + return groovy.json.JsonOutput.toJson(data) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/toTaggedYamlBlob.nf' +// Custom representer to modify how certain objects are represented in YAML +class CustomRepresenter extends org.yaml.snakeyaml.representer.Representer { + Path relativizer + + class RepresentPath implements org.yaml.snakeyaml.representer.Represent { + public String getFileName(Object obj) { + if (obj instanceof File) { + obj = ((File) obj).toPath(); + } + if (obj !instanceof Path) { + throw new IllegalArgumentException("Object: " + obj + " is not a Path or File"); + } + def path = (Path) obj; + + if (relativizer != null) { + return relativizer.relativize(path).toString() + } else { + return path.toString() + } + } + + public org.yaml.snakeyaml.nodes.Node representData(Object data) { + String filename = getFileName(data); + def tag = new org.yaml.snakeyaml.nodes.Tag("!file"); + return representScalar(tag, filename); + } + } + CustomRepresenter(org.yaml.snakeyaml.DumperOptions options, Path relativizer) { + super(options) + this.relativizer = relativizer + this.representers.put(sun.nio.fs.UnixPath, new RepresentPath()) + this.representers.put(Path, new RepresentPath()) + this.representers.put(File, new RepresentPath()) + } +} + +String toTaggedYamlBlob(data) { + return toRelativeTaggedYamlBlob(data, null) +} +String toRelativeTaggedYamlBlob(data, Path relativizer) { + def options = new org.yaml.snakeyaml.DumperOptions() + options.setDefaultFlowStyle(org.yaml.snakeyaml.DumperOptions.FlowStyle.BLOCK) + def representer = new CustomRepresenter(options, relativizer) + def yaml = new org.yaml.snakeyaml.Yaml(representer, options) + return yaml.dump(data) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/toYamlBlob.nf' +String toYamlBlob(data) { + def options = new org.yaml.snakeyaml.DumperOptions() + options.setDefaultFlowStyle(org.yaml.snakeyaml.DumperOptions.FlowStyle.BLOCK) + options.setPrettyFlow(true) + def yaml = new org.yaml.snakeyaml.Yaml(options) + def cleanData = iterateMap(data, { it instanceof Path ? it.toString() : it }) + return yaml.dump(cleanData) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/writeJson.nf' +void writeJson(data, file) { + assert data: "writeJson: data should not be null" + assert file: "writeJson: file should not be null" + file.write(toJsonBlob(data)) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/readwrite/writeYaml.nf' +void writeYaml(data, file) { + assert data: "writeYaml: data should not be null" + assert file: "writeYaml: file should not be null" + file.write(toYamlBlob(data)) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/findStates.nf' +def findStates(Map params, Map config) { + def auto_config = deepClone(config) + def auto_params = deepClone(params) + + auto_config = auto_config.clone() + // override arguments + auto_config.argument_groups = [] + auto_config.arguments = [ + [ + type: "string", + name: "--id", + description: "A dummy identifier", + required: false + ], + [ + type: "file", + name: "--input_states", + example: "/path/to/input/directory/**/state.yaml", + description: "Path to input directory containing the datasets to be integrated.", + required: true, + multiple: true, + multiple_sep: ";" + ], + [ + type: "string", + name: "--filter", + example: "foo/.*/state.yaml", + description: "Regex to filter state files by path.", + required: false + ], + // to do: make this a yaml blob? + [ + type: "string", + name: "--rename_keys", + example: ["newKey1:oldKey1", "newKey2:oldKey2"], + description: "Rename keys in the detected input files. This is useful if the input files do not match the set of input arguments of the workflow.", + required: false, + multiple: true, + multiple_sep: ";" + ], + [ + type: "string", + name: "--settings", + example: '{"output_dataset": "dataset.h5ad", "k": 10}', + description: "Global arguments as a JSON glob to be passed to all components.", + required: false + ] + ] + if (!(auto_params.containsKey("id"))) { + auto_params["id"] = "auto" + } + + // run auto config through processConfig once more + auto_config = processConfig(auto_config) + + workflow findStatesWf { + helpMessage(auto_config) + + output_ch = + channelFromParams(auto_params, auto_config) + | flatMap { autoId, args -> + + def globalSettings = args.settings ? readYamlBlob(args.settings) : [:] + + // look for state files in input dir + def stateFiles = args.input_states + + // filter state files by regex + if (args.filter) { + stateFiles = stateFiles.findAll{ stateFile -> + def stateFileStr = stateFile.toString() + def matcher = stateFileStr =~ args.filter + matcher.matches()} + } + + // read in states + def states = stateFiles.collect { stateFile -> + def state_ = readTaggedYaml(stateFile) + [state_.id, state_] + } + + // construct renameMap + if (args.rename_keys) { + def renameMap = args.rename_keys.collectEntries{renameString -> + def split = renameString.split(":") + assert split.size() == 2: "Argument 'rename_keys' should be of the form 'newKey:oldKey', or 'newKey:oldKey;newKey:oldKey' in case of multiple values" + split + } + + // rename keys in state, only let states through which have all keys + // also add global settings + states = states.collectMany{id, state -> + def newState = [:] + + for (key in renameMap.keySet()) { + def origKey = renameMap[key] + if (!(state.containsKey(origKey))) { + return [] + } + newState[key] = state[origKey] + } + + [[id, globalSettings + newState]] + } + } + + states + } + emit: + output_ch + } + + return findStatesWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/joinStates.nf' +def joinStates(Closure apply_) { + workflow joinStatesWf { + take: input_ch + main: + output_ch = input_ch + | toSortedList + | filter{ it.size() > 0 } + | map{ tups -> + def ids = tups.collect{it[0]} + def states = tups.collect{it[1]} + apply_(ids, states) + } + + emit: output_ch + } + return joinStatesWf +} +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/publishStates.nf' +def collectFiles(obj) { + if (obj instanceof java.io.File || obj instanceof Path) { + return [obj] + } else if (obj instanceof List && obj !instanceof String) { + return obj.collectMany{item -> + collectFiles(item) + } + } else if (obj instanceof Map) { + return obj.collectMany{key, item -> + collectFiles(item) + } + } else { + return [] + } +} + +/** + * Recurse through a state and collect all input files and their target output filenames. + * @param obj The state to recurse through. + * @param prefix The prefix to prepend to the output filenames. + */ +def collectInputOutputPaths(obj, prefix) { + if (obj instanceof File || obj instanceof Path) { + def path = obj instanceof Path ? obj : obj.toPath() + def ext = path.getFileName().toString().find("\\.[^\\.]+\$") ?: "" + def newFilename = prefix + ext + return [[obj, newFilename]] + } else if (obj instanceof List && obj !instanceof String) { + return obj.withIndex().collectMany{item, ix -> + collectInputOutputPaths(item, prefix + "_" + ix) + } + } else if (obj instanceof Map) { + return obj.collectMany{key, item -> + collectInputOutputPaths(item, prefix + "." + key) + } + } else { + return [] + } +} + +def publishStates(Map args) { + def key_ = args.get("key") + def yamlTemplate_ = args.get("output_state", args.get("outputState", '$id.$key.state.yaml')) + + assert key_ != null : "publishStates: key must be specified" + + workflow publishStatesWf { + take: input_ch + main: + input_ch + | map { tup -> + def id_ = tup[0] + def state_ = tup[1] + + // the input files and the target output filenames + def inputoutputFilenames_ = collectInputOutputPaths(state_, id_ + "." + key_).transpose() + def inputFiles_ = inputoutputFilenames_[0] + def outputFilenames_ = inputoutputFilenames_[1] + + def yamlFilename = yamlTemplate_ + .replaceAll('\\$id', id_) + .replaceAll('\\$\\{id\\}', id_) + .replaceAll('\\$key', key_) + .replaceAll('\\$\\{key\\}', key_) + + // TODO: do the pathnames in state_ match up with the outputFilenames_? + + // convert state to yaml blob + def yamlBlob_ = toRelativeTaggedYamlBlob([id: id_] + state_, java.nio.file.Paths.get(yamlFilename)) + + [id_, yamlBlob_, yamlFilename, inputFiles_, outputFilenames_] + } + | publishStatesProc + emit: input_ch + } + return publishStatesWf +} +process publishStatesProc { + // todo: check publishpath? + publishDir path: "${getPublishDir()}/", mode: "copy" + tag "$id" + input: + tuple val(id), val(yamlBlob), val(yamlFile), path(inputFiles, stageAs: "_inputfile?/*"), val(outputFiles) + output: + tuple val(id), path{[yamlFile] + outputFiles} + script: + def copyCommands = [ + inputFiles instanceof List ? inputFiles : [inputFiles], + outputFiles instanceof List ? outputFiles : [outputFiles] + ] + .transpose() + .collectMany{infile, outfile -> + if (infile.toString() != outfile.toString()) { + [ + "[ -d \"\$(dirname '${outfile.toString()}')\" ] || mkdir -p \"\$(dirname '${outfile.toString()}')\"", + "cp -r '${infile.toString()}' '${outfile.toString()}'" + ] + } else { + // no need to copy if infile is the same as outfile + [] + } + } + """ +mkdir -p "\$(dirname '${yamlFile}')" +echo "Storing state as yaml" +echo '${yamlBlob}' > '${yamlFile}' +echo "Copying output files to destination folder" +${copyCommands.join("\n ")} +""" +} + + +// this assumes that the state contains no other values other than those specified in the config +def publishStatesByConfig(Map args) { + def config = args.get("config") + assert config != null : "publishStatesByConfig: config must be specified" + + def key_ = args.get("key", config.name) + assert key_ != null : "publishStatesByConfig: key must be specified" + + workflow publishStatesSimpleWf { + take: input_ch + main: + input_ch + | map { tup -> + def id_ = tup[0] + def state_ = tup[1] // e.g. [output: new File("myoutput.h5ad"), k: 10] + def origState_ = tup[2] // e.g. [output: '$id.$key.foo.h5ad'] + + // TODO: allow overriding the state.yaml template + // TODO TODO: if auto.publish == "state", add output_state as an argument + def yamlTemplate = params.containsKey("output_state") ? params.output_state : '$id.$key.state.yaml' + def yamlFilename = yamlTemplate + .replaceAll('\\$id', id_) + .replaceAll('\\$\\{id\\}', id_) + .replaceAll('\\$key', key_) + .replaceAll('\\$\\{key\\}', key_) + def yamlDir = java.nio.file.Paths.get(yamlFilename).getParent() + + // the processed state is a list of [key, value, inputPath, outputFilename] tuples, where + // - key is a String + // - value is any object that can be serialized to a Yaml (so a String/Integer/Long/Double/Boolean, a List, a Map, or a Path) + // - inputPath is a List[Path] + // - outputFilename is a List[String] + // - (key, value) are the tuples that will be saved to the state.yaml file + // - (inputPath, outputFilename) are the files that will be copied from src to dest (relative to the state.yaml) + def processedState = + config.allArguments + .findAll { it.direction == "output" } + .collectMany { par -> + def plainName_ = par.plainName + // if the state does not contain the key, it's an + // optional argument for which the component did + // not generate any output + if (!state_.containsKey(plainName_)) { + return [] + } + def value = state_[plainName_] + // if the parameter is not a file, it should be stored + // in the state as-is, but is not something that needs + // to be copied from the source path to the dest path + if (par.type != "file") { + return [[key: plainName_, value: value, inputPath: [], outputFilename: []]] + } + // if the orig state does not contain this filename, + // it's an optional argument for which the user specified + // that it should not be returned as a state + if (!origState_.containsKey(plainName_)) { + return [] + } + def filenameTemplate = origState_[plainName_] + // if the pararameter is multiple: true, fetch the template + if (par.multiple && filenameTemplate instanceof List) { + filenameTemplate = filenameTemplate[0] + } + // instantiate the template + def filename = filenameTemplate + .replaceAll('\\$id', id_) + .replaceAll('\\$\\{id\\}', id_) + .replaceAll('\\$key', key_) + .replaceAll('\\$\\{key\\}', key_) + if (par.multiple) { + // if the parameter is multiple: true, the filename + // should contain a wildcard '*' that is replaced with + // the index of the file + assert filename.contains("*") : "Module '${key_}' id '${id_}': Multiple output files specified, but no wildcard '*' in the filename: ${filename}" + def outputPerFile = value.withIndex().collect{ val, ix -> + def filename_ix = filename.replace("*", ix.toString()) + def value_ = java.nio.file.Paths.get(filename_ix) + // if id contains a slash + if (yamlDir != null) { + value_ = yamlDir.relativize(value_) + } + def inputPath = val instanceof File ? val.toPath() : val + [value: value_, inputPath: inputPath, outputFilename: filename_ix] + } + def transposedOutputs = ["value", "inputPath", "outputFilename"].collectEntries{ key -> + [key, outputPerFile.collect{dic -> dic[key]}] + } + return [[key: plainName_] + transposedOutputs] + } else { + def value_ = java.nio.file.Paths.get(filename) + // if id contains a slash + if (yamlDir != null) { + value_ = yamlDir.relativize(value_) + } + def inputPath = value instanceof File ? value.toPath() : value + return [[key: plainName_, value: value_, inputPath: [inputPath], outputFilename: [filename]]] + } + } + + def updatedState_ = processedState.collectEntries{[it.key, it.value]} + def inputPaths = processedState.collectMany{it.inputPath} + def outputFilenames = processedState.collectMany{it.outputFilename} + + // convert state to yaml blob + def yamlBlob_ = toTaggedYamlBlob([id: id_] + updatedState_) + + [id_, yamlBlob_, yamlFilename, inputPaths, outputFilenames] + } + | publishStatesProc + emit: input_ch + } + return publishStatesSimpleWf +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/states/setState.nf' +def setState(fun) { + assert fun instanceof Closure || fun instanceof Map || fun instanceof List : + "Error in setState: Expected process argument to be a Closure, a Map, or a List. Found: class ${fun.getClass()}" + + // if fun is a List, convert to map + if (fun instanceof List) { + // check whether fun is a list[string] + assert fun.every{it instanceof CharSequence} : "Error in setState: argument is a List, but not all elements are Strings" + fun = fun.collectEntries{[it, it]} + } + + // if fun is a map, convert to closure + if (fun instanceof Map) { + // check whether fun is a map[string, string] + assert fun.values().every{it instanceof CharSequence} : "Error in setState: argument is a Map, but not all values are Strings" + assert fun.keySet().every{it instanceof CharSequence} : "Error in setState: argument is a Map, but not all keys are Strings" + def funMap = fun.clone() + // turn the map into a closure to be used later on + fun = { id_, state_ -> + assert state_ instanceof Map : "Error in setState: the state is not a Map" + funMap.collectMany{newkey, origkey -> + if (state_.containsKey(origkey)) { + [[newkey, state_[origkey]]] + } else { + [] + } + }.collectEntries() + } + } + + map { tup -> + def id = tup[0] + def state = tup[1] + def unfilteredState = fun(id, state) + def newState = unfilteredState.findAll{key, val -> val != null} + [id, newState] + tup.drop(2) + } +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/processAuto.nf' +// TODO: unit test processAuto +def processAuto(Map auto) { + // remove null values + auto = auto.findAll{k, v -> v != null} + + // check for unexpected keys + def expectedKeys = ["simplifyInput", "simplifyOutput", "transcript", "publish"] + def unexpectedKeys = auto.keySet() - expectedKeys + assert unexpectedKeys.isEmpty(), "unexpected keys in auto: '${unexpectedKeys.join("', '")}'" + + // check auto.simplifyInput + assert auto.simplifyInput instanceof Boolean, "auto.simplifyInput must be a boolean" + + // check auto.simplifyOutput + assert auto.simplifyOutput instanceof Boolean, "auto.simplifyOutput must be a boolean" + + // check auto.transcript + assert auto.transcript instanceof Boolean, "auto.transcript must be a boolean" + + // check auto.publish + assert auto.publish instanceof Boolean || auto.publish == "state", "auto.publish must be a boolean or 'state'" + + return auto.subMap(expectedKeys) +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/processDirectives.nf' +def assertMapKeys(map, expectedKeys, requiredKeys, mapName) { + assert map instanceof Map : "Expected argument '$mapName' to be a Map. Found: class ${map.getClass()}" + map.forEach { key, val -> + assert key in expectedKeys : "Unexpected key '$key' in ${mapName ? mapName + " " : ""}map" + } + requiredKeys.forEach { requiredKey -> + assert map.containsKey(requiredKey) : "Missing required key '$key' in ${mapName ? mapName + " " : ""}map" + } +} + +// TODO: unit test processDirectives +def processDirectives(Map drctv) { + // remove null values + drctv = drctv.findAll{k, v -> v != null} + + // check for unexpected keys + def expectedKeys = [ + "accelerator", "afterScript", "beforeScript", "cache", "conda", "container", "containerOptions", "cpus", "disk", "echo", "errorStrategy", "executor", "machineType", "maxErrors", "maxForks", "maxRetries", "memory", "module", "penv", "pod", "publishDir", "queue", "label", "scratch", "storeDir", "stageInMode", "stageOutMode", "tag", "time" + ] + def unexpectedKeys = drctv.keySet() - expectedKeys + assert unexpectedKeys.isEmpty() : "Unexpected keys in process directive: '${unexpectedKeys.join("', '")}'" + + /* DIRECTIVE accelerator + accepted examples: + - [ limit: 4, type: "nvidia-tesla-k80" ] + */ + if (drctv.containsKey("accelerator")) { + assertMapKeys(drctv["accelerator"], ["type", "limit", "request", "runtime"], [], "accelerator") + } + + /* DIRECTIVE afterScript + accepted examples: + - "source /cluster/bin/cleanup" + */ + if (drctv.containsKey("afterScript")) { + assert drctv["afterScript"] instanceof CharSequence + } + + /* DIRECTIVE beforeScript + accepted examples: + - "source /cluster/bin/setup" + */ + if (drctv.containsKey("beforeScript")) { + assert drctv["beforeScript"] instanceof CharSequence + } + + /* DIRECTIVE cache + accepted examples: + - true + - false + - "deep" + - "lenient" + */ + if (drctv.containsKey("cache")) { + assert drctv["cache"] instanceof CharSequence || drctv["cache"] instanceof Boolean + if (drctv["cache"] instanceof CharSequence) { + assert drctv["cache"] in ["deep", "lenient"] : "Unexpected value for cache" + } + } + + /* DIRECTIVE conda + accepted examples: + - "bwa=0.7.15" + - "bwa=0.7.15 fastqc=0.11.5" + - ["bwa=0.7.15", "fastqc=0.11.5"] + */ + if (drctv.containsKey("conda")) { + if (drctv["conda"] instanceof List) { + drctv["conda"] = drctv["conda"].join(" ") + } + assert drctv["conda"] instanceof CharSequence + } + + /* DIRECTIVE container + accepted examples: + - "foo/bar:tag" + - [ registry: "reg", image: "im", tag: "ta" ] + is transformed to "reg/im:ta" + - [ image: "im" ] + is transformed to "im:latest" + */ + if (drctv.containsKey("container")) { + assert drctv["container"] instanceof Map || drctv["container"] instanceof CharSequence + if (drctv["container"] instanceof Map) { + def m = drctv["container"] + assertMapKeys(m, [ "registry", "image", "tag" ], ["image"], "container") + def part1 = + System.getenv('OVERRIDE_CONTAINER_REGISTRY') ? System.getenv('OVERRIDE_CONTAINER_REGISTRY') + "/" : + params.containsKey("override_container_registry") ? params["override_container_registry"] + "/" : // todo: remove? + m.registry ? m.registry + "/" : + "" + def part2 = m.image + def part3 = m.tag ? ":" + m.tag : ":latest" + drctv["container"] = part1 + part2 + part3 + } + } + + /* DIRECTIVE containerOptions + accepted examples: + - "--foo bar" + - ["--foo bar", "-f b"] + */ + if (drctv.containsKey("containerOptions")) { + if (drctv["containerOptions"] instanceof List) { + drctv["containerOptions"] = drctv["containerOptions"].join(" ") + } + assert drctv["containerOptions"] instanceof CharSequence + } + + /* DIRECTIVE cpus + accepted examples: + - 1 + - 10 + */ + if (drctv.containsKey("cpus")) { + assert drctv["cpus"] instanceof Integer + } + + /* DIRECTIVE disk + accepted examples: + - "1 GB" + - "2TB" + - "3.2KB" + - "10.B" + */ + if (drctv.containsKey("disk")) { + assert drctv["disk"] instanceof CharSequence + // assert drctv["disk"].matches("[0-9]+(\\.[0-9]*)? *[KMGTPEZY]?B") + // ^ does not allow closures + } + + /* DIRECTIVE echo + accepted examples: + - true + - false + */ + if (drctv.containsKey("echo")) { + assert drctv["echo"] instanceof Boolean + } + + /* DIRECTIVE errorStrategy + accepted examples: + - "terminate" + - "finish" + */ + if (drctv.containsKey("errorStrategy")) { + assert drctv["errorStrategy"] instanceof CharSequence + assert drctv["errorStrategy"] in ["terminate", "finish", "ignore", "retry"] : "Unexpected value for errorStrategy" + } + + /* DIRECTIVE executor + accepted examples: + - "local" + - "sge" + */ + if (drctv.containsKey("executor")) { + assert drctv["executor"] instanceof CharSequence + assert drctv["executor"] in ["local", "sge", "uge", "lsf", "slurm", "pbs", "pbspro", "moab", "condor", "nqsii", "ignite", "k8s", "awsbatch", "google-pipelines"] : "Unexpected value for executor" + } + + /* DIRECTIVE machineType + accepted examples: + - "n1-highmem-8" + */ + if (drctv.containsKey("machineType")) { + assert drctv["machineType"] instanceof CharSequence + } + + /* DIRECTIVE maxErrors + accepted examples: + - 1 + - 3 + */ + if (drctv.containsKey("maxErrors")) { + assert drctv["maxErrors"] instanceof Integer + } + + /* DIRECTIVE maxForks + accepted examples: + - 1 + - 3 + */ + if (drctv.containsKey("maxForks")) { + assert drctv["maxForks"] instanceof Integer + } + + /* DIRECTIVE maxRetries + accepted examples: + - 1 + - 3 + */ + if (drctv.containsKey("maxRetries")) { + assert drctv["maxRetries"] instanceof Integer + } + + /* DIRECTIVE memory + accepted examples: + - "1 GB" + - "2TB" + - "3.2KB" + - "10.B" + */ + if (drctv.containsKey("memory")) { + assert drctv["memory"] instanceof CharSequence + // assert drctv["memory"].matches("[0-9]+(\\.[0-9]*)? *[KMGTPEZY]?B") + // ^ does not allow closures + } + + /* DIRECTIVE module + accepted examples: + - "ncbi-blast/2.2.27" + - "ncbi-blast/2.2.27:t_coffee/10.0" + - ["ncbi-blast/2.2.27", "t_coffee/10.0"] + */ + if (drctv.containsKey("module")) { + if (drctv["module"] instanceof List) { + drctv["module"] = drctv["module"].join(":") + } + assert drctv["module"] instanceof CharSequence + } + + /* DIRECTIVE penv + accepted examples: + - "smp" + */ + if (drctv.containsKey("penv")) { + assert drctv["penv"] instanceof CharSequence + } + + /* DIRECTIVE pod + accepted examples: + - [ label: "key", value: "val" ] + - [ annotation: "key", value: "val" ] + - [ env: "key", value: "val" ] + - [ [label: "l", value: "v"], [env: "e", value: "v"]] + */ + if (drctv.containsKey("pod")) { + if (drctv["pod"] instanceof Map) { + drctv["pod"] = [ drctv["pod"] ] + } + assert drctv["pod"] instanceof List + drctv["pod"].forEach { pod -> + assert pod instanceof Map + // TODO: should more checks be added? + // See https://www.nextflow.io/docs/latest/process.html?highlight=directives#pod + // e.g. does it contain 'label' and 'value', or 'annotation' and 'value', or ...? + } + } + + /* DIRECTIVE publishDir + accepted examples: + - [] + - [ [ path: "foo", enabled: true ], [ path: "bar", enabled: false ] ] + - "/path/to/dir" + is transformed to [[ path: "/path/to/dir" ]] + - [ path: "/path/to/dir", mode: "cache" ] + is transformed to [[ path: "/path/to/dir", mode: "cache" ]] + */ + // TODO: should we also look at params["publishDir"]? + if (drctv.containsKey("publishDir")) { + def pblsh = drctv["publishDir"] + + // check different options + assert pblsh instanceof List || pblsh instanceof Map || pblsh instanceof CharSequence + + // turn into list if not already so + // for some reason, 'if (!pblsh instanceof List) pblsh = [ pblsh ]' doesn't work. + pblsh = pblsh instanceof List ? pblsh : [ pblsh ] + + // check elements of publishDir + pblsh = pblsh.collect{ elem -> + // turn into map if not already so + elem = elem instanceof CharSequence ? [ path: elem ] : elem + + // check types and keys + assert elem instanceof Map : "Expected publish argument '$elem' to be a String or a Map. Found: class ${elem.getClass()}" + assertMapKeys(elem, [ "path", "mode", "overwrite", "pattern", "saveAs", "enabled" ], ["path"], "publishDir") + + // check elements in map + assert elem.containsKey("path") + assert elem["path"] instanceof CharSequence + if (elem.containsKey("mode")) { + assert elem["mode"] instanceof CharSequence + assert elem["mode"] in [ "symlink", "rellink", "link", "copy", "copyNoFollow", "move" ] + } + if (elem.containsKey("overwrite")) { + assert elem["overwrite"] instanceof Boolean + } + if (elem.containsKey("pattern")) { + assert elem["pattern"] instanceof CharSequence + } + if (elem.containsKey("saveAs")) { + assert elem["saveAs"] instanceof CharSequence //: "saveAs as a Closure is currently not supported. Surround your closure with single quotes to get the desired effect. Example: '\{ foo \}'" + } + if (elem.containsKey("enabled")) { + assert elem["enabled"] instanceof Boolean + } + + // return final result + elem + } + // store final directive + drctv["publishDir"] = pblsh + } + + /* DIRECTIVE queue + accepted examples: + - "long" + - "short,long" + - ["short", "long"] + */ + if (drctv.containsKey("queue")) { + if (drctv["queue"] instanceof List) { + drctv["queue"] = drctv["queue"].join(",") + } + assert drctv["queue"] instanceof CharSequence + } + + /* DIRECTIVE label + accepted examples: + - "big_mem" + - "big_cpu" + - ["big_mem", "big_cpu"] + */ + if (drctv.containsKey("label")) { + if (drctv["label"] instanceof CharSequence) { + drctv["label"] = [ drctv["label"] ] + } + assert drctv["label"] instanceof List + drctv["label"].forEach { label -> + assert label instanceof CharSequence + // assert label.matches("[a-zA-Z0-9]([a-zA-Z0-9_]*[a-zA-Z0-9])?") + // ^ does not allow closures + } + } + + /* DIRECTIVE scratch + accepted examples: + - true + - "/path/to/scratch" + - '$MY_PATH_TO_SCRATCH' + - "ram-disk" + */ + if (drctv.containsKey("scratch")) { + assert drctv["scratch"] == true || drctv["scratch"] instanceof CharSequence + } + + /* DIRECTIVE storeDir + accepted examples: + - "/path/to/storeDir" + */ + if (drctv.containsKey("storeDir")) { + assert drctv["storeDir"] instanceof CharSequence + } + + /* DIRECTIVE stageInMode + accepted examples: + - "copy" + - "link" + */ + if (drctv.containsKey("stageInMode")) { + assert drctv["stageInMode"] instanceof CharSequence + assert drctv["stageInMode"] in ["copy", "link", "symlink", "rellink"] + } + + /* DIRECTIVE stageOutMode + accepted examples: + - "copy" + - "link" + */ + if (drctv.containsKey("stageOutMode")) { + assert drctv["stageOutMode"] instanceof CharSequence + assert drctv["stageOutMode"] in ["copy", "move", "rsync"] + } + + /* DIRECTIVE tag + accepted examples: + - "foo" + - '$id' + */ + if (drctv.containsKey("tag")) { + assert drctv["tag"] instanceof CharSequence + } + + /* DIRECTIVE time + accepted examples: + - "1h" + - "2days" + - "1day 6hours 3minutes 30seconds" + */ + if (drctv.containsKey("time")) { + assert drctv["time"] instanceof CharSequence + // todo: validation regex? + } + + return drctv +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/processWorkflowArgs.nf' +def processWorkflowArgs(Map args, Map defaultWfArgs, Map meta) { + // override defaults with args + def workflowArgs = defaultWfArgs + args + + // check whether 'key' exists + assert workflowArgs.containsKey("key") : "Error in module '${meta.config.name}': key is a required argument" + + // if 'key' is a closure, apply it to the original key + if (workflowArgs["key"] instanceof Closure) { + workflowArgs["key"] = workflowArgs["key"](meta.config.name) + } + def key = workflowArgs["key"] + assert key instanceof CharSequence : "Expected process argument 'key' to be a String. Found: class ${key.getClass()}" + assert key ==~ /^[a-zA-Z_]\w*$/ : "Error in module '$key': Expected process argument 'key' to consist of only letters, digits or underscores. Found: ${key}" + + // check for any unexpected keys + def expectedKeys = ["key", "directives", "auto", "map", "mapId", "mapData", "mapPassthrough", "filter", "runIf", "fromState", "toState", "args", "renameKeys", "debug"] + def unexpectedKeys = workflowArgs.keySet() - expectedKeys + assert unexpectedKeys.isEmpty() : "Error in module '$key': unexpected arguments to the '.run()' function: '${unexpectedKeys.join("', '")}'" + + // check whether directives exists and apply defaults + assert workflowArgs.containsKey("directives") : "Error in module '$key': directives is a required argument" + assert workflowArgs["directives"] instanceof Map : "Error in module '$key': Expected process argument 'directives' to be a Map. Found: class ${workflowArgs['directives'].getClass()}" + workflowArgs["directives"] = processDirectives(defaultWfArgs.directives + workflowArgs["directives"]) + + // check whether directives exists and apply defaults + assert workflowArgs.containsKey("auto") : "Error in module '$key': auto is a required argument" + assert workflowArgs["auto"] instanceof Map : "Error in module '$key': Expected process argument 'auto' to be a Map. Found: class ${workflowArgs['auto'].getClass()}" + workflowArgs["auto"] = processAuto(defaultWfArgs.auto + workflowArgs["auto"]) + + // auto define publish, if so desired + if (workflowArgs.auto.publish == true && (workflowArgs.directives.publishDir != null ? workflowArgs.directives.publishDir : [:]).isEmpty()) { + // can't assert at this level thanks to the no_publish profile + // assert params.containsKey("publishDir") || params.containsKey("publish_dir") : + // "Error in module '${workflowArgs['key']}': if auto.publish is true, params.publish_dir needs to be defined.\n" + + // " Example: params.publish_dir = \"./output/\"" + def publishDir = getPublishDir() + + if (publishDir != null) { + workflowArgs.directives.publishDir = [[ + path: publishDir, + saveAs: "{ it.startsWith('.') ? null : it }", // don't publish hidden files, by default + mode: "copy" + ]] + } + } + + // auto define transcript, if so desired + if (workflowArgs.auto.transcript == true) { + // can't assert at this level thanks to the no_publish profile + // assert params.containsKey("transcriptsDir") || params.containsKey("transcripts_dir") || params.containsKey("publishDir") || params.containsKey("publish_dir") : + // "Error in module '${workflowArgs['key']}': if auto.transcript is true, either params.transcripts_dir or params.publish_dir needs to be defined.\n" + + // " Example: params.transcripts_dir = \"./transcripts/\"" + def transcriptsDir = + params.containsKey("transcripts_dir") ? params.transcripts_dir : + params.containsKey("transcriptsDir") ? params.transcriptsDir : + params.containsKey("publish_dir") ? params.publish_dir + "/_transcripts" : + params.containsKey("publishDir") ? params.publishDir + "/_transcripts" : + null + if (transcriptsDir != null) { + def timestamp = nextflow.Nextflow.getSession().getWorkflowMetadata().start.format('yyyy-MM-dd_HH-mm-ss') + def transcriptsPublishDir = [ + path: "$transcriptsDir/$timestamp/\${task.process.replaceAll(':', '-')}/\${id}/", + saveAs: "{ it.startsWith('.') ? it.replaceAll('^.', '') : null }", + mode: "copy" + ] + def publishDirs = workflowArgs.directives.publishDir != null ? workflowArgs.directives.publishDir : null ? workflowArgs.directives.publishDir : [] + workflowArgs.directives.publishDir = publishDirs + transcriptsPublishDir + } + } + + // if this is a stubrun, remove certain directives? + if (workflow.stubRun) { + workflowArgs.directives.keySet().removeAll(["publishDir", "cpus", "memory", "label"]) + } + + for (nam in ["map", "mapId", "mapData", "mapPassthrough", "filter", "runIf"]) { + if (workflowArgs.containsKey(nam) && workflowArgs[nam]) { + assert workflowArgs[nam] instanceof Closure : "Error in module '$key': Expected process argument '$nam' to be null or a Closure. Found: class ${workflowArgs[nam].getClass()}" + } + } + + // TODO: should functions like 'map', 'mapId', 'mapData', 'mapPassthrough' be deprecated as well? + for (nam in ["map", "mapData", "mapPassthrough", "renameKeys"]) { + if (workflowArgs.containsKey(nam) && workflowArgs[nam] != null) { + log.warn "module '$key': workflow argument '$nam' is deprecated and will be removed in Viash 0.9.0. Please use 'fromState' and 'toState' instead." + } + } + + // check fromState + workflowArgs["fromState"] = _processFromState(workflowArgs.get("fromState"), key, meta.config) + + // check toState + workflowArgs["toState"] = _processToState(workflowArgs.get("toState"), key, meta.config) + + // return output + return workflowArgs +} + +def _processFromState(fromState, key_, config_) { + assert fromState == null || fromState instanceof Closure || fromState instanceof Map || fromState instanceof List : + "Error in module '$key_': Expected process argument 'fromState' to be null, a Closure, a Map, or a List. Found: class ${fromState.getClass()}" + if (fromState == null) { + return null + } + + // if fromState is a List, convert to map + if (fromState instanceof List) { + // check whether fromstate is a list[string] + assert fromState.every{it instanceof CharSequence} : "Error in module '$key_': fromState is a List, but not all elements are Strings" + fromState = fromState.collectEntries{[it, it]} + } + + // if fromState is a map, convert to closure + if (fromState instanceof Map) { + // check whether fromstate is a map[string, string] + assert fromState.values().every{it instanceof CharSequence} : "Error in module '$key_': fromState is a Map, but not all values are Strings" + assert fromState.keySet().every{it instanceof CharSequence} : "Error in module '$key_': fromState is a Map, but not all keys are Strings" + def fromStateMap = fromState.clone() + def requiredInputNames = meta.config.allArguments.findAll{it.required && it.direction == "Input"}.collect{it.plainName} + // turn the map into a closure to be used later on + fromState = { it -> + def state = it[1] + assert state instanceof Map : "Error in module '$key_': the state is not a Map" + def data = fromStateMap.collectMany{newkey, origkey -> + // check whether newkey corresponds to a required argument + if (state.containsKey(origkey)) { + [[newkey, state[origkey]]] + } else if (!requiredInputNames.contains(origkey)) { + [] + } else { + throw new Exception("Error in module '$key_': fromState key '$origkey' not found in current state") + } + }.collectEntries() + data + } + } + + return fromState +} + +def _processToState(toState, key_, config_) { + if (toState == null) { + toState = { tup -> tup[1] } + } + + // toState should be a closure, map[string, string], or list[string] + assert toState instanceof Closure || toState instanceof Map || toState instanceof List : + "Error in module '$key_': Expected process argument 'toState' to be a Closure, a Map, or a List. Found: class ${toState.getClass()}" + + // if toState is a List, convert to map + if (toState instanceof List) { + // check whether toState is a list[string] + assert toState.every{it instanceof CharSequence} : "Error in module '$key_': toState is a List, but not all elements are Strings" + toState = toState.collectEntries{[it, it]} + } + + // if toState is a map, convert to closure + if (toState instanceof Map) { + // check whether toState is a map[string, string] + assert toState.values().every{it instanceof CharSequence} : "Error in module '$key_': toState is a Map, but not all values are Strings" + assert toState.keySet().every{it instanceof CharSequence} : "Error in module '$key_': toState is a Map, but not all keys are Strings" + def toStateMap = toState.clone() + def requiredOutputNames = config_.allArguments.findAll{it.required && it.direction == "Output"}.collect{it.plainName} + // turn the map into a closure to be used later on + toState = { it -> + def output = it[1] + def state = it[2] + assert output instanceof Map : "Error in module '$key_': the output is not a Map" + assert state instanceof Map : "Error in module '$key_': the state is not a Map" + def extraEntries = toStateMap.collectMany{newkey, origkey -> + // check whether newkey corresponds to a required argument + if (output.containsKey(origkey)) { + [[newkey, output[origkey]]] + } else if (!requiredOutputNames.contains(origkey)) { + [] + } else { + throw new Exception("Error in module '$key_': toState key '$origkey' not found in current output") + } + }.collectEntries() + state + extraEntries + } + } + + return toState +} + +// helper file: 'src/main/resources/io/viash/runners/nextflow/workflowFactory/workflowFactory.nf' +def _debug(workflowArgs, debugKey) { + if (workflowArgs.debug) { + view { "process '${workflowArgs.key}' $debugKey tuple: $it" } + } else { + map { it } + } +} + +// depends on: innerWorkflowFactory +def workflowFactory(Map args, Map defaultWfArgs, Map meta) { + def workflowArgs = processWorkflowArgs(args, defaultWfArgs, meta) + def key_ = workflowArgs["key"] + + workflow workflowInstance { + take: input_ + + main: + def chModified = input_ + | checkUniqueIds([:]) + | _debug(workflowArgs, "input") + | map { tuple -> + tuple = deepClone(tuple) + + if (workflowArgs.map) { + tuple = workflowArgs.map(tuple) + } + if (workflowArgs.mapId) { + tuple[0] = workflowArgs.mapId(tuple[0]) + } + if (workflowArgs.mapData) { + tuple[1] = workflowArgs.mapData(tuple[1]) + } + if (workflowArgs.mapPassthrough) { + tuple = tuple.take(2) + workflowArgs.mapPassthrough(tuple.drop(2)) + } + + // check tuple + assert tuple instanceof List : + "Error in module '${key_}': element in channel should be a tuple [id, data, ...otherargs...]\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Expected class: List. Found: tuple.getClass() is ${tuple.getClass()}" + assert tuple.size() >= 2 : + "Error in module '${key_}': expected length of tuple in input channel to be two or greater.\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Found: tuple.size() == ${tuple.size()}" + + // check id field + if (tuple[0] instanceof GString) { + tuple[0] = tuple[0].toString() + } + assert tuple[0] instanceof CharSequence : + "Error in module '${key_}': first element of tuple in channel should be a String\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Found: ${tuple[0]}" + + // match file to input file + if (workflowArgs.auto.simplifyInput && (tuple[1] instanceof Path || tuple[1] instanceof List)) { + def inputFiles = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "input" } + + assert inputFiles.size() == 1 : + "Error in module '${key_}' id '${tuple[0]}'.\n" + + " Anonymous file inputs are only allowed when the process has exactly one file input.\n" + + " Expected: inputFiles.size() == 1. Found: inputFiles.size() is ${inputFiles.size()}" + + tuple[1] = [[ inputFiles[0].plainName, tuple[1] ]].collectEntries() + } + + // check data field + assert tuple[1] instanceof Map : + "Error in module '${key_}' id '${tuple[0]}': second element of tuple in channel should be a Map\n" + + " Example: [\"id\", [input: file('foo.txt'), arg: 10]].\n" + + " Expected class: Map. Found: tuple[1].getClass() is ${tuple[1].getClass()}" + + // rename keys of data field in tuple + if (workflowArgs.renameKeys) { + assert workflowArgs.renameKeys instanceof Map : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Example: renameKeys: ['new_key': 'old_key'].\n" + + " Expected class: Map. Found: renameKeys.getClass() is ${workflowArgs.renameKeys.getClass()}" + assert tuple[1] instanceof Map : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Expected class: Map. Found: tuple[1].getClass() is ${tuple[1].getClass()}" + + // TODO: allow renameKeys to be a function? + workflowArgs.renameKeys.each { newKey, oldKey -> + assert newKey instanceof CharSequence : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Example: renameKeys: ['new_key': 'old_key'].\n" + + " Expected class of newKey: String. Found: newKey.getClass() is ${newKey.getClass()}" + assert oldKey instanceof CharSequence : + "Error renaming data keys in module '${key_}' id '${tuple[0]}'.\n" + + " Example: renameKeys: ['new_key': 'old_key'].\n" + + " Expected class of oldKey: String. Found: oldKey.getClass() is ${oldKey.getClass()}" + assert tuple[1].containsKey(oldKey) : + "Error renaming data keys in module '${key}' id '${tuple[0]}'.\n" + + " Key '$oldKey' is missing in the data map. tuple[1].keySet() is '${tuple[1].keySet()}'" + tuple[1].put(newKey, tuple[1][oldKey]) + } + tuple[1].keySet().removeAll(workflowArgs.renameKeys.collect{ newKey, oldKey -> oldKey }) + } + tuple + } + + + def chRun = null + def chPassthrough = null + if (workflowArgs.runIf) { + def runIfBranch = chModified.branch{ tup -> + run: workflowArgs.runIf(tup[0], tup[1]) + passthrough: true + } + chRun = runIfBranch.run + chPassthrough = runIfBranch.passthrough + } else { + chRun = chModified + chPassthrough = Channel.empty() + } + + def chRunFiltered = workflowArgs.filter ? + chRun | filter{workflowArgs.filter(it)} : + chRun + + def chArgs = workflowArgs.fromState ? + chRunFiltered | map{ + def new_data = workflowArgs.fromState(it.take(2)) + [it[0], new_data] + } : + chRunFiltered | map {tup -> tup.take(2)} + + // fill in defaults + def chArgsWithDefaults = chArgs + | map { tuple -> + def id_ = tuple[0] + def data_ = tuple[1] + + // TODO: could move fromState to here + + // fetch default params from functionality + def defaultArgs = meta.config.allArguments + .findAll { it.containsKey("default") } + .collectEntries { [ it.plainName, it.default ] } + + // fetch overrides in params + def paramArgs = meta.config.allArguments + .findAll { par -> + def argKey = key_ + "__" + par.plainName + params.containsKey(argKey) + } + .collectEntries { [ it.plainName, params[key_ + "__" + it.plainName] ] } + + // fetch overrides in data + def dataArgs = meta.config.allArguments + .findAll { data_.containsKey(it.plainName) } + .collectEntries { [ it.plainName, data_[it.plainName] ] } + + // combine params + def combinedArgs = defaultArgs + paramArgs + workflowArgs.args + dataArgs + + // remove arguments with explicit null values + combinedArgs + .removeAll{_, val -> val == null || val == "viash_no_value" || val == "force_null"} + + combinedArgs = _processInputValues(combinedArgs, meta.config, id_, key_) + + [id_, combinedArgs] + tuple.drop(2) + } + + // TODO: move some of the _meta.join_id wrangling to the safeJoin() function. + def chInitialOutput = chArgsWithDefaults + | _debug(workflowArgs, "processed") + // run workflow + | innerWorkflowFactory(workflowArgs) + // check output tuple + | map { id_, output_ -> + + // see if output map contains metadata + def meta_ = + output_ instanceof Map && output_.containsKey("_meta") ? + output_["_meta"] : + [:] + def join_id = meta_.join_id ?: id_ + + // remove metadata + output_ = output_.findAll{k, v -> k != "_meta"} + + // check value types + output_ = _processOutputValues(output_, meta.config, id_, key_) + + // simplify output if need be + if (workflowArgs.auto.simplifyOutput && output_.size() == 1) { + output_ = output_.values()[0] + } + + [join_id, id_, output_] + } + // | view{"chInitialOutput: ${it.take(3)}"} + + // join the output [prev_id, new_id, output] with the previous state [prev_id, state, ...] + def chNewState = safeJoin(chInitialOutput, chRunFiltered, key_) + // input tuple format: [join_id, id, output, prev_state, ...] + // output tuple format: [join_id, id, new_state, ...] + | map{ tup -> + def new_state = workflowArgs.toState(tup.drop(1).take(3)) + tup.take(2) + [new_state] + tup.drop(4) + } + + if (workflowArgs.auto.publish == "state") { + def chPublish = chNewState + // input tuple format: [join_id, id, new_state, ...] + // output tuple format: [join_id, id, new_state] + | map{ tup -> + tup.take(3) + } + + safeJoin(chPublish, chArgsWithDefaults, key_) + // input tuple format: [join_id, id, new_state, orig_state, ...] + // output tuple format: [id, new_state, orig_state] + | map { tup -> + tup.drop(1).take(3) + } + | publishStatesByConfig(key: key_, config: meta.config) + } + + // remove join_id and meta + chReturn = chNewState + | map { tup -> + // input tuple format: [join_id, id, new_state, ...] + // output tuple format: [id, new_state, ...] + tup.drop(1) + } + | _debug(workflowArgs, "output") + | concat(chPassthrough) + + emit: chReturn + } + + def wf = workflowInstance.cloneWithName(key_) + + // add factory function + wf.metaClass.run = { runArgs -> + workflowFactory(runArgs, workflowArgs, meta) + } + // add config to module for later introspection + wf.metaClass.config = meta.config + + return wf +} + +nextflow.enable.dsl=2 + +// START COMPONENT-SPECIFIC CODE + +// create meta object +meta = [ + "resources_dir": moduleDir.toRealPath().normalize(), + "config": processConfig(readJsonBlob('''{ + "name" : "agat_sp_statistics", + "namespace" : "agat", + "version" : "main", + "authors" : [ + { + "name" : "Leïla Paquay", + "roles" : [ + "author", + "maintainer" + ], + "info" : { + "links" : { + "email" : "leila@data-intuitive.com", + "github" : "Leila011", + "linkedin" : "leilapaquay" + }, + "organizations" : [ + { + "name" : "Data Intuitive", + "href" : "https://www.data-intuitive.com", + "role" : "Software Developer" + } + ] + } + } + ], + "argument_groups" : [ + { + "name" : "Inputs", + "arguments" : [ + { + "type" : "file", + "name" : "--gff", + "alternatives" : [ + "-i" + ], + "description" : "Input GTF/GFF file.", + "example" : [ + "input.gff" + ], + "must_exist" : true, + "create_parent" : true, + "required" : true, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--gs_fasta", + "description" : "Genome size directly from a fasta file to compute more statistics.\n", + "example" : [ + "genome.fasta" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Outputs", + "arguments" : [ + { + "type" : "file", + "name" : "--output", + "alternatives" : [ + "-o" + ], + "description" : "The file where the results will be written.\n", + "example" : [ + "output.txt" + ], + "must_exist" : true, + "create_parent" : true, + "required" : true, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Options", + "arguments" : [ + { + "type" : "boolean_true", + "name" : "--plot", + "alternatives" : [ + "-p", + "-d" + ], + "description" : "When this option is used, an histogram of distribution of the features will be printed in pdf files.\n", + "direction" : "input" + }, + { + "type" : "integer", + "name" : "--gs_size", + "description" : "Genome size in nucleotides to compute more statistics.\n", + "example" : [ + 1000000 + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "integer", + "name" : "--verbose", + "alternatives" : [ + "-v" + ], + "description" : "Verbose option. To modify verbosity. Default is 1. 0 is quiet, 2 and 3 are increasing verbosity.\n", + "example" : [ + 1 + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--config", + "alternatives" : [ + "-c" + ], + "description" : "AGAT config file. By default AGAT takes the original agat_config.yaml shipped with AGAT. The `--config`\noption gives you the possibility to use your own AGAT config file (located elsewhere or named differently).\n", + "example" : [ + "custom_agat_config.yaml" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + } + ], + "resources" : [ + { + "type" : "bash_script", + "path" : "script.sh", + "is_executable" : true + } + ], + "description" : "The script provides exhaustive statistics of a gft/gff file. \n\nIf you have isoforms in your file, even if correct, some values calculated\nmight sounds incoherent: e.g. total length mRNA can be superior than the\ngenome size. Because all isoforms length is added... It is why by\ndefault we always compute the statistics twice when there are isoforms,\nonce with the isoforms, once without (In that case we keep the longest\nisoform per locus).\n", + "test_resources" : [ + { + "type" : "bash_script", + "path" : "test.sh", + "is_executable" : true + }, + { + "type" : "file", + "path" : "test_data" + } + ], + "status" : "enabled", + "requirements" : { + "commands" : [ + "ps" + ] + }, + "keywords" : [ + "gene annotations", + "statistics", + "gff" + ], + "license" : "GPL-3.0", + "references" : { + "doi" : [ + "10.5281/zenodo.3552717" + ] + }, + "links" : { + "repository" : "https://github.com/NBISweden/AGAT", + "homepage" : "https://github.com/NBISweden/AGAT", + "documentation" : "https://agat.readthedocs.io/en/latest/tools/agat_sp_statistics.html", + "issue_tracker" : "https://github.com/NBISweden/AGAT/issues" + }, + "runners" : [ + { + "type" : "executable", + "id" : "executable", + "docker_setup_strategy" : "ifneedbepullelsecachedbuild" + }, + { + "type" : "nextflow", + "id" : "nextflow", + "directives" : { + "tag" : "$id" + }, + "auto" : { + "simplifyInput" : true, + "simplifyOutput" : false, + "transcript" : false, + "publish" : false + }, + "config" : { + "labels" : { + "mem1gb" : "memory = 1000000000.B", + "mem2gb" : "memory = 2000000000.B", + "mem5gb" : "memory = 5000000000.B", + "mem10gb" : "memory = 10000000000.B", + "mem20gb" : "memory = 20000000000.B", + "mem50gb" : "memory = 50000000000.B", + "mem100gb" : "memory = 100000000000.B", + "mem200gb" : "memory = 200000000000.B", + "mem500gb" : "memory = 500000000000.B", + "mem1tb" : "memory = 1000000000000.B", + "mem2tb" : "memory = 2000000000000.B", + "mem5tb" : "memory = 5000000000000.B", + "mem10tb" : "memory = 10000000000000.B", + "mem20tb" : "memory = 20000000000000.B", + "mem50tb" : "memory = 50000000000000.B", + "mem100tb" : "memory = 100000000000000.B", + "mem200tb" : "memory = 200000000000000.B", + "mem500tb" : "memory = 500000000000000.B", + "mem1gib" : "memory = 1073741824.B", + "mem2gib" : "memory = 2147483648.B", + "mem4gib" : "memory = 4294967296.B", + "mem8gib" : "memory = 8589934592.B", + "mem16gib" : "memory = 17179869184.B", + "mem32gib" : "memory = 34359738368.B", + "mem64gib" : "memory = 68719476736.B", + "mem128gib" : "memory = 137438953472.B", + "mem256gib" : "memory = 274877906944.B", + "mem512gib" : "memory = 549755813888.B", + "mem1tib" : "memory = 1099511627776.B", + "mem2tib" : "memory = 2199023255552.B", + "mem4tib" : "memory = 4398046511104.B", + "mem8tib" : "memory = 8796093022208.B", + "mem16tib" : "memory = 17592186044416.B", + "mem32tib" : "memory = 35184372088832.B", + "mem64tib" : "memory = 70368744177664.B", + "mem128tib" : "memory = 140737488355328.B", + "mem256tib" : "memory = 281474976710656.B", + "mem512tib" : "memory = 562949953421312.B", + "cpu1" : "cpus = 1", + "cpu2" : "cpus = 2", + "cpu5" : "cpus = 5", + "cpu10" : "cpus = 10", + "cpu20" : "cpus = 20", + "cpu50" : "cpus = 50", + "cpu100" : "cpus = 100", + "cpu200" : "cpus = 200", + "cpu500" : "cpus = 500", + "cpu1000" : "cpus = 1000" + } + }, + "debug" : false, + "container" : "docker" + } + ], + "engines" : [ + { + "type" : "docker", + "id" : "docker", + "image" : "quay.io/biocontainers/agat:1.4.0--pl5321hdfd78af_0", + "target_registry" : "images.viash-hub.com", + "target_tag" : "main", + "namespace_separator" : "/", + "setup" : [ + { + "type" : "docker", + "run" : [ + "agat --version | sed 's/.*v\\\\.//; s/\\\\s.*//' | sed 's/^/AGAT: /' > /var/software_versions.txt\n" + ] + } + ] + }, + { + "type" : "native", + "id" : "native" + } + ], + "build_info" : { + "config" : "/workdir/root/repo/src/agat/agat_sp_statistics/config.vsh.yaml", + "runner" : "nextflow", + "engine" : "docker|native", + "output" : "target/nextflow/agat/agat_sp_statistics", + "viash_version" : "0.9.0", + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" + }, + "package_config" : { + "name" : "biobox", + "version" : "main", + "description" : "A collection of bioinformatics tools for working with sequence data.\n", + "viash_version" : "0.9.0", + "source" : "src", + "target" : "target", + "config_mods" : [ + ".requirements.commands := ['ps']\n", + ".engines += { type: \\"native\\" }", + ".engines[.type == 'docker'].target_registry := 'images.viash-hub.com'", + ".engines[.type == 'docker'].target_tag := 'main'" + ], + "keywords" : [ + "bioinformatics", + "modules", + "sequencing" + ], + "license" : "MIT", + "organization" : "vsh", + "links" : { + "repository" : "https://github.com/viash-hub/biobox", + "issue_tracker" : "https://github.com/viash-hub/biobox/issues" + } + } +}''')) +] + +// resolve dependencies dependencies (if any) + + +// inner workflow +// inner workflow hook +def innerWorkflowFactory(args) { + def rawScript = '''set -e +tempscript=".viash_script.sh" +cat > "$tempscript" << VIASHMAIN +#!/bin/bash + +set -eo pipefail + +## VIASH START +# The following code has been auto-generated by Viash. +$( if [ ! -z ${VIASH_PAR_GFF+x} ]; then echo "${VIASH_PAR_GFF}" | sed "s#'#'\\"'\\"'#g;s#.*#par_gff='&'#" ; else echo "# par_gff="; fi ) +$( if [ ! -z ${VIASH_PAR_GS_FASTA+x} ]; then echo "${VIASH_PAR_GS_FASTA}" | sed "s#'#'\\"'\\"'#g;s#.*#par_gs_fasta='&'#" ; else echo "# par_gs_fasta="; fi ) +$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi ) +$( if [ ! -z ${VIASH_PAR_PLOT+x} ]; then echo "${VIASH_PAR_PLOT}" | sed "s#'#'\\"'\\"'#g;s#.*#par_plot='&'#" ; else echo "# par_plot="; fi ) +$( if [ ! -z ${VIASH_PAR_GS_SIZE+x} ]; then echo "${VIASH_PAR_GS_SIZE}" | sed "s#'#'\\"'\\"'#g;s#.*#par_gs_size='&'#" ; else echo "# par_gs_size="; fi ) +$( if [ ! -z ${VIASH_PAR_VERBOSE+x} ]; then echo "${VIASH_PAR_VERBOSE}" | sed "s#'#'\\"'\\"'#g;s#.*#par_verbose='&'#" ; else echo "# par_verbose="; fi ) +$( if [ ! -z ${VIASH_PAR_CONFIG+x} ]; then echo "${VIASH_PAR_CONFIG}" | sed "s#'#'\\"'\\"'#g;s#.*#par_config='&'#" ; else echo "# par_config="; fi ) +$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi ) +$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi ) +$( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "${VIASH_META_RESOURCES_DIR}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_resources_dir='&'#" ; else echo "# meta_resources_dir="; fi ) +$( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "${VIASH_META_EXECUTABLE}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_executable='&'#" ; else echo "# meta_executable="; fi ) +$( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "${VIASH_META_CONFIG}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_config='&'#" ; else echo "# meta_config="; fi ) +$( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "${VIASH_META_TEMP_DIR}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_temp_dir='&'#" ; else echo "# meta_temp_dir="; fi ) +$( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "${VIASH_META_CPUS}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_cpus='&'#" ; else echo "# meta_cpus="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "${VIASH_META_MEMORY_B}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_b='&'#" ; else echo "# meta_memory_b="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "${VIASH_META_MEMORY_KB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_kb='&'#" ; else echo "# meta_memory_kb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "${VIASH_META_MEMORY_MB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_mb='&'#" ; else echo "# meta_memory_mb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "${VIASH_META_MEMORY_GB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_gb='&'#" ; else echo "# meta_memory_gb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "${VIASH_META_MEMORY_TB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_tb='&'#" ; else echo "# meta_memory_tb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "${VIASH_META_MEMORY_PB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_pb='&'#" ; else echo "# meta_memory_pb="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "${VIASH_META_MEMORY_KIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_kib='&'#" ; else echo "# meta_memory_kib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "${VIASH_META_MEMORY_MIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_mib='&'#" ; else echo "# meta_memory_mib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "${VIASH_META_MEMORY_GIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_gib='&'#" ; else echo "# meta_memory_gib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "${VIASH_META_MEMORY_TIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_tib='&'#" ; else echo "# meta_memory_tib="; fi ) +$( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "${VIASH_META_MEMORY_PIB}" | sed "s#'#'\\"'\\"'#g;s#.*#meta_memory_pib='&'#" ; else echo "# meta_memory_pib="; fi ) + +## VIASH END + +# unset flags +[[ "\\$par_d" == "false" ]] && unset par_d + +if [[ -n "\\$par_gs_size" && -n "\\$par_gs_fasta" ]]; then + echo "[error] Please provide only one of the following options to set genome size: --gs_size or --gs_fasta" + exit 1 +fi + +# run agat_sp_statistics +agat_sp_statistics.pl \\\\ + -i "\\$par_gff" \\\\ + -o "\\$par_output" \\\\ + \\${par_plot:+-d} \\\\ + \\${par_gs_size:+--gs "\\${par_gs_size}"} \\\\ + \\${par_gs_fasta:+--gs "\\${par_gs_fasta}"} \\\\ + \\${par_verbose:+--verbose "\\${par_verbose}"} \\\\ + \\${par_config:+--config "\\${par_config}"} +VIASHMAIN +bash "$tempscript" +''' + + return vdsl3WorkflowFactory(args, meta, rawScript) +} + + + +/** + * Generate a workflow for VDSL3 modules. + * + * This function is called by the workflowFactory() function. + * + * Input channel: [id, input_map] + * Output channel: [id, output_map] + * + * Internally, this workflow will convert the input channel + * to a format which the Nextflow module will be able to handle. + */ +def vdsl3WorkflowFactory(Map args, Map meta, String rawScript) { + def key = args["key"] + def processObj = null + + workflow processWf { + take: input_ + main: + + if (processObj == null) { + processObj = _vdsl3ProcessFactory(args, meta, rawScript) + } + + output_ = input_ + | map { tuple -> + def id = tuple[0] + def data_ = tuple[1] + + if (workflow.stubRun) { + // add id if missing + data_ = [id: 'stub'] + data_ + } + + // process input files separately + def inputPaths = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "input" } + .collect { par -> + def val = data_.containsKey(par.plainName) ? data_[par.plainName] : [] + def inputFiles = [] + if (val == null) { + inputFiles = [] + } else if (val instanceof List) { + inputFiles = val + } else if (val instanceof Path) { + inputFiles = [ val ] + } else { + inputFiles = [] + } + if (!workflow.stubRun) { + // throw error when an input file doesn't exist + inputFiles.each{ file -> + assert file.exists() : + "Error in module '${key}' id '${id}' argument '${par.plainName}'.\n" + + " Required input file does not exist.\n" + + " Path: '$file'.\n" + + " Expected input file to exist" + } + } + inputFiles + } + + // remove input files + def argsExclInputFiles = meta.config.allArguments + .findAll { (it.type != "file" || it.direction != "input") && data_.containsKey(it.plainName) } + .collectEntries { par -> + def parName = par.plainName + def val = data_[parName] + if (par.multiple && val instanceof Collection) { + val = val.join(par.multiple_sep) + } + if (par.direction == "output" && par.type == "file") { + val = val + .replaceAll('\\$id', id) + .replaceAll('\\$\\{id\\}', id) + .replaceAll('\\$key', key) + .replaceAll('\\$\\{key\\}', key) + } + [parName, val] + } + + [ id ] + inputPaths + [ argsExclInputFiles, meta.resources_dir ] + } + | processObj + | map { output -> + def outputFiles = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" } + .indexed() + .collectEntries{ index, par -> + def out = output[index + 1] + // strip dummy '.exitcode' file from output (see nextflow-io/nextflow#2678) + if (!out instanceof List || out.size() <= 1) { + if (par.multiple) { + out = [] + } else { + assert !par.required : + "Error in module '${key}' id '${output[0]}' argument '${par.plainName}'.\n" + + " Required output file is missing" + out = null + } + } else if (out.size() == 2 && !par.multiple) { + out = out[1] + } else { + out = out.drop(1) + } + [ par.plainName, out ] + } + + // drop null outputs + outputFiles.removeAll{it.value == null} + + [ output[0], outputFiles ] + } + emit: output_ + } + + return processWf +} + +// depends on: session? +def _vdsl3ProcessFactory(Map workflowArgs, Map meta, String rawScript) { + // autodetect process key + def wfKey = workflowArgs["key"] + def procKeyPrefix = "${wfKey}_process" + def scriptMeta = nextflow.script.ScriptMeta.current() + def existing = scriptMeta.getProcessNames().findAll{it.startsWith(procKeyPrefix)} + def numbers = existing.collect{it.replace(procKeyPrefix, "0").toInteger()} + def newNumber = (numbers + [-1]).max() + 1 + + def procKey = newNumber == 0 ? procKeyPrefix : "$procKeyPrefix$newNumber" + + if (newNumber > 0) { + log.warn "Key for module '${wfKey}' is duplicated.\n", + "If you run a component multiple times in the same workflow,\n" + + "it's recommended you set a unique key for every call,\n" + + "for example: ${wfKey}.run(key: \"foo\")." + } + + // subset directives and convert to list of tuples + def drctv = workflowArgs.directives + + // TODO: unit test the two commands below + // convert publish array into tags + def valueToStr = { val -> + // ignore closures + if (val instanceof CharSequence) { + if (!val.matches('^[{].*[}]$')) { + '"' + val + '"' + } else { + val + } + } else if (val instanceof List) { + "[" + val.collect{valueToStr(it)}.join(", ") + "]" + } else if (val instanceof Map) { + "[" + val.collect{k, v -> k + ": " + valueToStr(v)}.join(", ") + "]" + } else { + val.inspect() + } + } + + // multiple entries allowed: label, publishdir + def drctvStrs = drctv.collect { key, value -> + if (key in ["label", "publishDir"]) { + value.collect{ val -> + if (val instanceof Map) { + "\n$key " + val.collect{ k, v -> k + ": " + valueToStr(v) }.join(", ") + } else if (val == null) { + "" + } else { + "\n$key " + valueToStr(val) + } + }.join() + } else if (value instanceof Map) { + "\n$key " + value.collect{ k, v -> k + ": " + valueToStr(v) }.join(", ") + } else { + "\n$key " + valueToStr(value) + } + }.join() + + def inputPaths = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "input" } + .collect { ', path(viash_par_' + it.plainName + ', stageAs: "_viash_par/' + it.plainName + '_?/*")' } + .join() + + def outputPaths = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" } + .collect { par -> + // insert dummy into every output (see nextflow-io/nextflow#2678) + if (!par.multiple) { + ', path{[".exitcode", args.' + par.plainName + ']}' + } else { + ', path{[".exitcode"] + args.' + par.plainName + '}' + } + } + .join() + + // TODO: move this functionality somewhere else? + if (workflowArgs.auto.transcript) { + outputPaths = outputPaths + ', path{[".exitcode", ".command*"]}' + } else { + outputPaths = outputPaths + ', path{[".exitcode"]}' + } + + // create dirs for output files (based on BashWrapper.createParentFiles) + def createParentStr = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" && it.create_parent } + .collect { par -> + def contents = "args[\"${par.plainName}\"] instanceof List ? args[\"${par.plainName}\"].join('\" \"') : args[\"${par.plainName}\"]" + "\${ args.containsKey(\"${par.plainName}\") ? \"mkdir_parent '\" + escapeText(${contents}) + \"'\" : \"\" }" + } + .join("\n") + + // construct inputFileExports + def inputFileExports = meta.config.allArguments + .findAll { it.type == "file" && it.direction.toLowerCase() == "input" } + .collect { par -> + def contents = "viash_par_${par.plainName} instanceof List ? viash_par_${par.plainName}.join(\"${par.multiple_sep}\") : viash_par_${par.plainName}" + "\n\${viash_par_${par.plainName}.empty ? \"\" : \"export VIASH_PAR_${par.plainName.toUpperCase()}='\" + escapeText(${contents}) + \"'\"}" + } + + // NOTE: if using docker, use /tmp instead of tmpDir! + def tmpDir = java.nio.file.Paths.get( + System.getenv('NXF_TEMP') ?: + System.getenv('VIASH_TEMP') ?: + System.getenv('VIASH_TMPDIR') ?: + System.getenv('VIASH_TEMPDIR') ?: + System.getenv('VIASH_TMP') ?: + System.getenv('TEMP') ?: + System.getenv('TMPDIR') ?: + System.getenv('TEMPDIR') ?: + System.getenv('TMP') ?: + '/tmp' + ).toAbsolutePath() + + // construct stub + def stub = meta.config.allArguments + .findAll { it.type == "file" && it.direction == "output" } + .collect { par -> + "\${ args.containsKey(\"${par.plainName}\") ? \"touch2 \\\"\" + (args[\"${par.plainName}\"] instanceof String ? args[\"${par.plainName}\"].replace(\"_*\", \"_0\") : args[\"${par.plainName}\"].join('\" \"')) + \"\\\"\" : \"\" }" + } + .join("\n") + + // escape script + def escapedScript = rawScript.replace('\\', '\\\\').replace('$', '\\$').replace('"""', '\\"\\"\\"') + + // publishdir assert + def assertStr = (workflowArgs.auto.publish == true) || workflowArgs.auto.transcript ? + """\nassert task.publishDir.size() > 0: "if auto.publish is true, params.publish_dir needs to be defined.\\n Example: --publish_dir './output/'" """ : + "" + + // generate process string + def procStr = + """nextflow.enable.dsl=2 + | + |def escapeText = { s -> s.toString().replaceAll("'", "'\\\"'\\\"'") } + |process $procKey {$drctvStrs + |input: + | tuple val(id)$inputPaths, val(args), path(resourcesDir, stageAs: ".viash_meta_resources") + |output: + | tuple val("\$id")$outputPaths, optional: true + |stub: + |\"\"\" + |touch2() { mkdir -p "\\\$(dirname "\\\$1")" && touch "\\\$1" ; } + |$stub + |\"\"\" + |script:$assertStr + |def parInject = args + | .findAll{key, value -> value != null} + | .collect{key, value -> "export VIASH_PAR_\${key.toUpperCase()}='\${escapeText(value)}'"} + | .join("\\n") + |\"\"\" + |# meta exports + |export VIASH_META_RESOURCES_DIR="\${resourcesDir}" + |export VIASH_META_TEMP_DIR="${['docker', 'podman', 'charliecloud'].any{ it == workflow.containerEngine } ? '/tmp' : tmpDir}" + |export VIASH_META_NAME="${meta.config.name}" + |# export VIASH_META_EXECUTABLE="\\\$VIASH_META_RESOURCES_DIR/\\\$VIASH_META_NAME" + |export VIASH_META_CONFIG="\\\$VIASH_META_RESOURCES_DIR/.config.vsh.yaml" + |\${task.cpus ? "export VIASH_META_CPUS=\$task.cpus" : "" } + |\${task.memory?.bytes != null ? "export VIASH_META_MEMORY_B=\$task.memory.bytes" : "" } + |if [ ! -z \\\${VIASH_META_MEMORY_B+x} ]; then + | export VIASH_META_MEMORY_KB=\\\$(( (\\\$VIASH_META_MEMORY_B+999) / 1000 )) + | export VIASH_META_MEMORY_MB=\\\$(( (\\\$VIASH_META_MEMORY_KB+999) / 1000 )) + | export VIASH_META_MEMORY_GB=\\\$(( (\\\$VIASH_META_MEMORY_MB+999) / 1000 )) + | export VIASH_META_MEMORY_TB=\\\$(( (\\\$VIASH_META_MEMORY_GB+999) / 1000 )) + | export VIASH_META_MEMORY_PB=\\\$(( (\\\$VIASH_META_MEMORY_TB+999) / 1000 )) + | export VIASH_META_MEMORY_KIB=\\\$(( (\\\$VIASH_META_MEMORY_B+1023) / 1024 )) + | export VIASH_META_MEMORY_MIB=\\\$(( (\\\$VIASH_META_MEMORY_KIB+1023) / 1024 )) + | export VIASH_META_MEMORY_GIB=\\\$(( (\\\$VIASH_META_MEMORY_MIB+1023) / 1024 )) + | export VIASH_META_MEMORY_TIB=\\\$(( (\\\$VIASH_META_MEMORY_GIB+1023) / 1024 )) + | export VIASH_META_MEMORY_PIB=\\\$(( (\\\$VIASH_META_MEMORY_TIB+1023) / 1024 )) + |fi + | + |# meta synonyms + |export VIASH_TEMP="\\\$VIASH_META_TEMP_DIR" + |export TEMP_DIR="\\\$VIASH_META_TEMP_DIR" + | + |# create output dirs if need be + |function mkdir_parent { + | for file in "\\\$@"; do + | mkdir -p "\\\$(dirname "\\\$file")" + | done + |} + |$createParentStr + | + |# argument exports${inputFileExports.join()} + |\$parInject + | + |# process script + |${escapedScript} + |\"\"\" + |} + |""".stripMargin() + + // TODO: print on debug + // if (workflowArgs.debug == true) { + // println("######################\n$procStr\n######################") + // } + + // write process to temp file + def tempFile = java.nio.file.Files.createTempFile("viash-process-${procKey}-", ".nf") + addShutdownHook { java.nio.file.Files.deleteIfExists(tempFile) } + tempFile.text = procStr + + // create process from temp file + def binding = new nextflow.script.ScriptBinding([:]) + def session = nextflow.Nextflow.getSession() + def parser = new nextflow.script.ScriptParser(session) + .setModule(true) + .setBinding(binding) + def moduleScript = parser.runScript(tempFile) + .getScript() + + // register module in meta + def module = new nextflow.script.IncludeDef.Module(name: procKey) + scriptMeta.addModule(moduleScript, module.name, module.alias) + + // retrieve and return process from meta + return scriptMeta.getProcess(procKey) +} + +// defaults +meta["defaults"] = [ + // key to be used to trace the process and determine output names + key: null, + + // fixed arguments to be passed to script + args: [:], + + // default directives + directives: readJsonBlob('''{ + "container" : { + "registry" : "images.viash-hub.com", + "image" : "vsh/biobox/agat/agat_sp_statistics", + "tag" : "main" + }, + "tag" : "$id" +}'''), + + // auto settings + auto: readJsonBlob('''{ + "simplifyInput" : true, + "simplifyOutput" : false, + "transcript" : false, + "publish" : false +}'''), + + // Apply a map over the incoming tuple + // Example: `{ tup -> [ tup[0], [input: tup[1].output] ] + tup.drop(2) }` + map: null, + + // Apply a map over the ID element of a tuple (i.e. the first element) + // Example: `{ id -> id + "_foo" }` + mapId: null, + + // Apply a map over the data element of a tuple (i.e. the second element) + // Example: `{ data -> [ input: data.output ] }` + mapData: null, + + // Apply a map over the passthrough elements of a tuple (i.e. the tuple excl. the first two elements) + // Example: `{ pt -> pt.drop(1) }` + mapPassthrough: null, + + // Filter the channel + // Example: `{ tup -> tup[0] == "foo" }` + filter: null, + + // Choose whether or not to run the component on the tuple if the condition is true. + // Otherwise, the tuple will be passed through. + // Example: `{ tup -> tup[0] != "skip_this" }` + runIf: null, + + // Rename keys in the data field of the tuple (i.e. the second element) + // Will likely be deprecated in favour of `fromState`. + // Example: `[ "new_key": "old_key" ]` + renameKeys: null, + + // Fetch data from the state and pass it to the module without altering the current state. + // + // `fromState` should be `null`, `List[String]`, `Map[String, String]` or a function. + // + // - If it is `null`, the state will be passed to the module as is. + // - If it is a `List[String]`, the data will be the values of the state at the given keys. + // - If it is a `Map[String, String]`, the data will be the values of the state at the given keys, with the keys renamed according to the map. + // - If it is a function, the tuple (`[id, state]`) in the channel will be passed to the function, and the result will be used as the data. + // + // Example: `{ id, state -> [input: state.fastq_file] }` + // Default: `null` + fromState: null, + + // Determine how the state should be updated after the module has been run. + // + // `toState` should be `null`, `List[String]`, `Map[String, String]` or a function. + // + // - If it is `null`, the state will be replaced with the output of the module. + // - If it is a `List[String]`, the state will be updated with the values of the data at the given keys. + // - If it is a `Map[String, String]`, the state will be updated with the values of the data at the given keys, with the keys renamed according to the map. + // - If it is a function, a tuple (`[id, output, state]`) will be passed to the function, and the result will be used as the new state. + // + // Example: `{ id, output, state -> state + [counts: state.output] }` + // Default: `{ id, output, state -> output }` + toState: null, + + // Whether or not to print debug messages + // Default: `false` + debug: false +] + +// initialise default workflow +meta["workflow"] = workflowFactory([key: meta.config.name], meta.defaults, meta) + +// add workflow to environment +nextflow.script.ScriptMeta.current().addDefinition(meta.workflow) + +// anonymous workflow for running this module as a standalone +workflow { + // add id argument if it's not already in the config + // TODO: deep copy + def newConfig = deepClone(meta.config) + def newParams = deepClone(params) + + def argsContainsId = newConfig.allArguments.any{it.plainName == "id"} + if (!argsContainsId) { + def idArg = [ + 'name': '--id', + 'required': false, + 'type': 'string', + 'description': 'A unique id for every entry.', + 'multiple': false + ] + newConfig.arguments.add(0, idArg) + newConfig = processConfig(newConfig) + } + if (!newParams.containsKey("id")) { + newParams.id = "run" + } + + helpMessage(newConfig) + + channelFromParams(newParams, newConfig) + // make sure id is not in the state if id is not in the args + | map {id, state -> + if (!argsContainsId) { + [id, state.findAll{k, v -> k != "id"}] + } else { + [id, state] + } + } + | meta.workflow.run( + auto: [ publish: "state" ] + ) +} + +// END COMPONENT-SPECIFIC CODE diff --git a/target/nextflow/agat/agat_sp_statistics/nextflow.config b/target/nextflow/agat/agat_sp_statistics/nextflow.config new file mode 100644 index 00000000..05a825f1 --- /dev/null +++ b/target/nextflow/agat/agat_sp_statistics/nextflow.config @@ -0,0 +1,126 @@ +manifest { + name = 'agat/agat_sp_statistics' + mainScript = 'main.nf' + nextflowVersion = '!>=20.12.1-edge' + version = 'main' + description = 'The script provides exhaustive statistics of a gft/gff file. \n\nIf you have isoforms in your file, even if correct, some values calculated\nmight sounds incoherent: e.g. total length mRNA can be superior than the\ngenome size. Because all isoforms length is added... It is why by\ndefault we always compute the statistics twice when there are isoforms,\nonce with the isoforms, once without (In that case we keep the longest\nisoform per locus).\n' + author = 'Leïla Paquay' +} + +process.container = 'nextflow/bash:latest' + +// detect tempdir +tempDir = java.nio.file.Paths.get( + System.getenv('NXF_TEMP') ?: + System.getenv('VIASH_TEMP') ?: + System.getenv('TEMPDIR') ?: + System.getenv('TMPDIR') ?: + '/tmp' +).toAbsolutePath() + +profiles { + no_publish { + process { + withName: '.*' { + publishDir = [ + enabled: false + ] + } + } + } + mount_temp { + docker.temp = tempDir + podman.temp = tempDir + charliecloud.temp = tempDir + } + docker { + docker.enabled = true + // docker.userEmulation = true + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + singularity { + singularity.enabled = true + singularity.autoMounts = true + docker.enabled = false + podman.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + podman { + podman.enabled = true + docker.enabled = false + singularity.enabled = false + shifter.enabled = false + charliecloud.enabled = false + } + shifter { + shifter.enabled = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + charliecloud.enabled = false + } + charliecloud { + charliecloud.enabled = true + docker.enabled = false + singularity.enabled = false + podman.enabled = false + shifter.enabled = false + } +} + +process{ + withLabel: mem1gb { memory = 1000000000.B } + withLabel: mem2gb { memory = 2000000000.B } + withLabel: mem5gb { memory = 5000000000.B } + withLabel: mem10gb { memory = 10000000000.B } + withLabel: mem20gb { memory = 20000000000.B } + withLabel: mem50gb { memory = 50000000000.B } + withLabel: mem100gb { memory = 100000000000.B } + withLabel: mem200gb { memory = 200000000000.B } + withLabel: mem500gb { memory = 500000000000.B } + withLabel: mem1tb { memory = 1000000000000.B } + withLabel: mem2tb { memory = 2000000000000.B } + withLabel: mem5tb { memory = 5000000000000.B } + withLabel: mem10tb { memory = 10000000000000.B } + withLabel: mem20tb { memory = 20000000000000.B } + withLabel: mem50tb { memory = 50000000000000.B } + withLabel: mem100tb { memory = 100000000000000.B } + withLabel: mem200tb { memory = 200000000000000.B } + withLabel: mem500tb { memory = 500000000000000.B } + withLabel: mem1gib { memory = 1073741824.B } + withLabel: mem2gib { memory = 2147483648.B } + withLabel: mem4gib { memory = 4294967296.B } + withLabel: mem8gib { memory = 8589934592.B } + withLabel: mem16gib { memory = 17179869184.B } + withLabel: mem32gib { memory = 34359738368.B } + withLabel: mem64gib { memory = 68719476736.B } + withLabel: mem128gib { memory = 137438953472.B } + withLabel: mem256gib { memory = 274877906944.B } + withLabel: mem512gib { memory = 549755813888.B } + withLabel: mem1tib { memory = 1099511627776.B } + withLabel: mem2tib { memory = 2199023255552.B } + withLabel: mem4tib { memory = 4398046511104.B } + withLabel: mem8tib { memory = 8796093022208.B } + withLabel: mem16tib { memory = 17592186044416.B } + withLabel: mem32tib { memory = 35184372088832.B } + withLabel: mem64tib { memory = 70368744177664.B } + withLabel: mem128tib { memory = 140737488355328.B } + withLabel: mem256tib { memory = 281474976710656.B } + withLabel: mem512tib { memory = 562949953421312.B } + withLabel: cpu1 { cpus = 1 } + withLabel: cpu2 { cpus = 2 } + withLabel: cpu5 { cpus = 5 } + withLabel: cpu10 { cpus = 10 } + withLabel: cpu20 { cpus = 20 } + withLabel: cpu50 { cpus = 50 } + withLabel: cpu100 { cpus = 100 } + withLabel: cpu200 { cpus = 200 } + withLabel: cpu500 { cpus = 500 } + withLabel: cpu1000 { cpus = 1000 } +} + + diff --git a/target/nextflow/agat/agat_sp_statistics/nextflow_schema.json b/target/nextflow/agat/agat_sp_statistics/nextflow_schema.json new file mode 100644 index 00000000..1e3cacfa --- /dev/null +++ b/target/nextflow/agat/agat_sp_statistics/nextflow_schema.json @@ -0,0 +1,160 @@ +{ +"$schema": "http://json-schema.org/draft-07/schema", +"title": "agat_sp_statistics", +"description": "The script provides exhaustive statistics of a gft/gff file. \n\nIf you have isoforms in your file, even if correct, some values calculated\nmight sounds incoherent: e.g. total length mRNA can be superior than the\ngenome size. Because all isoforms length is added... It is why by\ndefault we always compute the statistics twice when there are isoforms,\nonce with the isoforms, once without (In that case we keep the longest\nisoform per locus).\n", +"type": "object", +"definitions": { + + + + "inputs" : { + "title": "Inputs", + "type": "object", + "description": "No description", + "properties": { + + + "gff": { + "type": + "string", + "description": "Type: `file`, required, example: `input.gff`. Input GTF/GFF file", + "help_text": "Type: `file`, required, example: `input.gff`. Input GTF/GFF file." + + } + + + , + "gs_fasta": { + "type": + "string", + "description": "Type: `file`, example: `genome.fasta`. Genome size directly from a fasta file to compute more statistics", + "help_text": "Type: `file`, example: `genome.fasta`. Genome size directly from a fasta file to compute more statistics.\n" + + } + + +} +}, + + + "outputs" : { + "title": "Outputs", + "type": "object", + "description": "No description", + "properties": { + + + "output": { + "type": + "string", + "description": "Type: `file`, required, default: `$id.$key.output.txt`, example: `output.txt`. The file where the results will be written", + "help_text": "Type: `file`, required, default: `$id.$key.output.txt`, example: `output.txt`. The file where the results will be written.\n" + , + "default": "$id.$key.output.txt" + } + + +} +}, + + + "options" : { + "title": "Options", + "type": "object", + "description": "No description", + "properties": { + + + "plot": { + "type": + "boolean", + "description": "Type: `boolean_true`, default: `false`. When this option is used, an histogram of distribution of the features will be printed in pdf files", + "help_text": "Type: `boolean_true`, default: `false`. When this option is used, an histogram of distribution of the features will be printed in pdf files.\n" + , + "default": "False" + } + + + , + "gs_size": { + "type": + "integer", + "description": "Type: `integer`, example: `1000000`. Genome size in nucleotides to compute more statistics", + "help_text": "Type: `integer`, example: `1000000`. Genome size in nucleotides to compute more statistics.\n" + + } + + + , + "verbose": { + "type": + "integer", + "description": "Type: `integer`, example: `1`. Verbose option", + "help_text": "Type: `integer`, example: `1`. Verbose option. To modify verbosity. Default is 1. 0 is quiet, 2 and 3 are increasing verbosity.\n" + + } + + + , + "config": { + "type": + "string", + "description": "Type: `file`, example: `custom_agat_config.yaml`. AGAT config file", + "help_text": "Type: `file`, example: `custom_agat_config.yaml`. AGAT config file. By default AGAT takes the original agat_config.yaml shipped with AGAT. The `--config`\noption gives you the possibility to use your own AGAT config file (located elsewhere or named differently).\n" + + } + + +} +}, + + + "nextflow input-output arguments" : { + "title": "Nextflow input-output arguments", + "type": "object", + "description": "Input/output parameters for Nextflow itself. Please note that both publishDir and publish_dir are supported but at least one has to be configured.", + "properties": { + + + "publish_dir": { + "type": + "string", + "description": "Type: `string`, required, example: `output/`. Path to an output directory", + "help_text": "Type: `string`, required, example: `output/`. Path to an output directory." + + } + + + , + "param_list": { + "type": + "string", + "description": "Type: `string`, example: `my_params.yaml`. Allows inputting multiple parameter sets to initialise a Nextflow channel", + "help_text": "Type: `string`, example: `my_params.yaml`. Allows inputting multiple parameter sets to initialise a Nextflow channel. A `param_list` can either be a list of maps, a csv file, a json file, a yaml file, or simply a yaml blob.\n\n* A list of maps (as-is) where the keys of each map corresponds to the arguments of the pipeline. Example: in a `nextflow.config` file: `param_list: [ [\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027], [\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027] ]`.\n* A csv file should have column names which correspond to the different arguments of this pipeline. Example: `--param_list data.csv` with columns `id,input`.\n* A json or a yaml file should be a list of maps, each of which has keys corresponding to the arguments of the pipeline. Example: `--param_list data.json` with contents `[ {\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027}, {\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027} ]`.\n* A yaml blob can also be passed directly as a string. Example: `--param_list \"[ {\u0027id\u0027: \u0027foo\u0027, \u0027input\u0027: \u0027foo.txt\u0027}, {\u0027id\u0027: \u0027bar\u0027, \u0027input\u0027: \u0027bar.txt\u0027} ]\"`.\n\nWhen passing a csv, json or yaml file, relative path names are relativized to the location of the parameter file. No relativation is performed when `param_list` is a list of maps (as-is) or a yaml blob.", + "hidden": true + + } + + +} +} +}, +"allOf": [ + + { + "$ref": "#/definitions/inputs" + }, + + { + "$ref": "#/definitions/outputs" + }, + + { + "$ref": "#/definitions/options" + }, + + { + "$ref": "#/definitions/nextflow input-output arguments" + } +] +} diff --git a/target/nextflow/arriba/.config.vsh.yaml b/target/nextflow/arriba/.config.vsh.yaml index 8d351156..157b9d78 100644 --- a/target/nextflow/arriba/.config.vsh.yaml +++ b/target/nextflow/arriba/.config.vsh.yaml @@ -706,9 +706,9 @@ build_info: output: "target/nextflow/arriba" executable: "target/nextflow/arriba/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/arriba/main.nf b/target/nextflow/arriba/main.nf index 16deaf2c..0b4b6791 100644 --- a/target/nextflow/arriba/main.nf +++ b/target/nextflow/arriba/main.nf @@ -3592,9 +3592,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/arriba", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bbmap/bbmap_bbsplit/.config.vsh.yaml b/target/nextflow/bbmap/bbmap_bbsplit/.config.vsh.yaml index 7c8e5e82..b5b1d1e7 100644 --- a/target/nextflow/bbmap/bbmap_bbsplit/.config.vsh.yaml +++ b/target/nextflow/bbmap/bbmap_bbsplit/.config.vsh.yaml @@ -359,9 +359,9 @@ build_info: output: "target/nextflow/bbmap/bbmap_bbsplit" executable: "target/nextflow/bbmap/bbmap_bbsplit/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bbmap/bbmap_bbsplit/main.nf b/target/nextflow/bbmap/bbmap_bbsplit/main.nf index 9d9994fe..0f56fce6 100644 --- a/target/nextflow/bbmap/bbmap_bbsplit/main.nf +++ b/target/nextflow/bbmap/bbmap_bbsplit/main.nf @@ -3207,9 +3207,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bbmap/bbmap_bbsplit", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bcftools/bcftools_annotate/.config.vsh.yaml b/target/nextflow/bcftools/bcftools_annotate/.config.vsh.yaml index a32a7179..955049a6 100644 --- a/target/nextflow/bcftools/bcftools_annotate/.config.vsh.yaml +++ b/target/nextflow/bcftools/bcftools_annotate/.config.vsh.yaml @@ -469,9 +469,9 @@ build_info: output: "target/nextflow/bcftools/bcftools_annotate" executable: "target/nextflow/bcftools/bcftools_annotate/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bcftools/bcftools_annotate/main.nf b/target/nextflow/bcftools/bcftools_annotate/main.nf index 92db5605..24d5bb9f 100644 --- a/target/nextflow/bcftools/bcftools_annotate/main.nf +++ b/target/nextflow/bcftools/bcftools_annotate/main.nf @@ -3335,9 +3335,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bcftools/bcftools_annotate", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bcftools/bcftools_concat/.config.vsh.yaml b/target/nextflow/bcftools/bcftools_concat/.config.vsh.yaml index 8e91c175..38373267 100644 --- a/target/nextflow/bcftools/bcftools_concat/.config.vsh.yaml +++ b/target/nextflow/bcftools/bcftools_concat/.config.vsh.yaml @@ -335,9 +335,9 @@ build_info: output: "target/nextflow/bcftools/bcftools_concat" executable: "target/nextflow/bcftools/bcftools_concat/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bcftools/bcftools_concat/main.nf b/target/nextflow/bcftools/bcftools_concat/main.nf index fe0342ff..9a83e318 100644 --- a/target/nextflow/bcftools/bcftools_concat/main.nf +++ b/target/nextflow/bcftools/bcftools_concat/main.nf @@ -3207,9 +3207,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bcftools/bcftools_concat", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bcftools/bcftools_norm/.config.vsh.yaml b/target/nextflow/bcftools/bcftools_norm/.config.vsh.yaml index e3a87343..179ad075 100644 --- a/target/nextflow/bcftools/bcftools_norm/.config.vsh.yaml +++ b/target/nextflow/bcftools/bcftools_norm/.config.vsh.yaml @@ -416,9 +416,9 @@ build_info: output: "target/nextflow/bcftools/bcftools_norm" executable: "target/nextflow/bcftools/bcftools_norm/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bcftools/bcftools_norm/main.nf b/target/nextflow/bcftools/bcftools_norm/main.nf index ed1b6f6d..cd963691 100644 --- a/target/nextflow/bcftools/bcftools_norm/main.nf +++ b/target/nextflow/bcftools/bcftools_norm/main.nf @@ -3300,9 +3300,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bcftools/bcftools_norm", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bcftools/bcftools_sort/.config.vsh.yaml b/target/nextflow/bcftools/bcftools_sort/.config.vsh.yaml index a7f0d805..c7bd6350 100644 --- a/target/nextflow/bcftools/bcftools_sort/.config.vsh.yaml +++ b/target/nextflow/bcftools/bcftools_sort/.config.vsh.yaml @@ -185,9 +185,9 @@ build_info: output: "target/nextflow/bcftools/bcftools_sort" executable: "target/nextflow/bcftools/bcftools_sort/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bcftools/bcftools_sort/main.nf b/target/nextflow/bcftools/bcftools_sort/main.nf index 128287cf..a775fe7f 100644 --- a/target/nextflow/bcftools/bcftools_sort/main.nf +++ b/target/nextflow/bcftools/bcftools_sort/main.nf @@ -3048,9 +3048,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bcftools/bcftools_sort", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bcftools/bcftools_stats/.config.vsh.yaml b/target/nextflow/bcftools/bcftools_stats/.config.vsh.yaml index 79a11095..00ca9fba 100644 --- a/target/nextflow/bcftools/bcftools_stats/.config.vsh.yaml +++ b/target/nextflow/bcftools/bcftools_stats/.config.vsh.yaml @@ -458,9 +458,9 @@ build_info: output: "target/nextflow/bcftools/bcftools_stats" executable: "target/nextflow/bcftools/bcftools_stats/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bcftools/bcftools_stats/main.nf b/target/nextflow/bcftools/bcftools_stats/main.nf index a025f77b..0a26132e 100644 --- a/target/nextflow/bcftools/bcftools_stats/main.nf +++ b/target/nextflow/bcftools/bcftools_stats/main.nf @@ -3337,9 +3337,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bcftools/bcftools_stats", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bcl_convert/.config.vsh.yaml b/target/nextflow/bcl_convert/.config.vsh.yaml index 87ebccf1..4c3d2f2d 100644 --- a/target/nextflow/bcl_convert/.config.vsh.yaml +++ b/target/nextflow/bcl_convert/.config.vsh.yaml @@ -418,9 +418,9 @@ build_info: output: "target/nextflow/bcl_convert" executable: "target/nextflow/bcl_convert/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bcl_convert/main.nf b/target/nextflow/bcl_convert/main.nf index 1772efcd..6ef9e358 100644 --- a/target/nextflow/bcl_convert/main.nf +++ b/target/nextflow/bcl_convert/main.nf @@ -3329,9 +3329,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bcl_convert", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml b/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml index 4d68cbcc..2d466e4f 100644 --- a/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/.config.vsh.yaml @@ -274,9 +274,9 @@ build_info: output: "target/nextflow/bd_rhapsody/bd_rhapsody_make_reference" executable: "target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/main.nf b/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/main.nf index 6135662c..c39b9a5a 100644 --- a/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/main.nf +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/main.nf @@ -3146,9 +3146,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bd_rhapsody/bd_rhapsody_make_reference", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml index ce95b590..3685de52 100644 --- a/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml @@ -1115,9 +1115,9 @@ build_info: output: "target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis" executable: "target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf index 7918cc84..34723612 100644 --- a/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf @@ -4193,9 +4193,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_bamtofastq/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_bamtofastq/.config.vsh.yaml index ed448d54..8009a09a 100644 --- a/target/nextflow/bedtools/bedtools_bamtofastq/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_bamtofastq/.config.vsh.yaml @@ -187,9 +187,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_bamtofastq" executable: "target/nextflow/bedtools/bedtools_bamtofastq/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_bamtofastq/main.nf b/target/nextflow/bedtools/bedtools_bamtofastq/main.nf index d5166764..9ac5aa0f 100644 --- a/target/nextflow/bedtools/bedtools_bamtofastq/main.nf +++ b/target/nextflow/bedtools/bedtools_bamtofastq/main.nf @@ -3050,9 +3050,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_bamtofastq", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_bed12tobed6/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_bed12tobed6/.config.vsh.yaml index f9961cab..b30c7594 100644 --- a/target/nextflow/bedtools/bedtools_bed12tobed6/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_bed12tobed6/.config.vsh.yaml @@ -176,9 +176,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_bed12tobed6" executable: "target/nextflow/bedtools/bedtools_bed12tobed6/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_bed12tobed6/main.nf b/target/nextflow/bedtools/bedtools_bed12tobed6/main.nf index 242c0281..49e51345 100644 --- a/target/nextflow/bedtools/bedtools_bed12tobed6/main.nf +++ b/target/nextflow/bedtools/bedtools_bed12tobed6/main.nf @@ -3035,9 +3035,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_bed12tobed6", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_bedtobam/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_bedtobam/.config.vsh.yaml index 4d455308..ccc69bcf 100644 --- a/target/nextflow/bedtools/bedtools_bedtobam/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_bedtobam/.config.vsh.yaml @@ -214,9 +214,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_bedtobam" executable: "target/nextflow/bedtools/bedtools_bedtobam/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_bedtobam/main.nf b/target/nextflow/bedtools/bedtools_bedtobam/main.nf index fa4be79c..b3cbde2a 100644 --- a/target/nextflow/bedtools/bedtools_bedtobam/main.nf +++ b/target/nextflow/bedtools/bedtools_bedtobam/main.nf @@ -3083,9 +3083,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_bedtobam", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_genomecov/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_genomecov/.config.vsh.yaml index 0d57f800..b679691b 100644 --- a/target/nextflow/bedtools/bedtools_genomecov/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_genomecov/.config.vsh.yaml @@ -337,9 +337,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_genomecov" executable: "target/nextflow/bedtools/bedtools_genomecov/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_genomecov/main.nf b/target/nextflow/bedtools/bedtools_genomecov/main.nf index b0fa5de6..2d0cde48 100644 --- a/target/nextflow/bedtools/bedtools_genomecov/main.nf +++ b/target/nextflow/bedtools/bedtools_genomecov/main.nf @@ -3207,9 +3207,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_genomecov", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_getfasta/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_getfasta/.config.vsh.yaml index fabe3127..f731a00d 100644 --- a/target/nextflow/bedtools/bedtools_getfasta/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_getfasta/.config.vsh.yaml @@ -232,9 +232,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_getfasta" executable: "target/nextflow/bedtools/bedtools_getfasta/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_getfasta/main.nf b/target/nextflow/bedtools/bedtools_getfasta/main.nf index dc0c49b7..aefb0d81 100644 --- a/target/nextflow/bedtools/bedtools_getfasta/main.nf +++ b/target/nextflow/bedtools/bedtools_getfasta/main.nf @@ -3086,9 +3086,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_getfasta", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_groupby/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_groupby/.config.vsh.yaml index 62586915..6053c58f 100644 --- a/target/nextflow/bedtools/bedtools_groupby/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_groupby/.config.vsh.yaml @@ -273,9 +273,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_groupby" executable: "target/nextflow/bedtools/bedtools_groupby/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_groupby/main.nf b/target/nextflow/bedtools/bedtools_groupby/main.nf index 6514beef..878095c9 100644 --- a/target/nextflow/bedtools/bedtools_groupby/main.nf +++ b/target/nextflow/bedtools/bedtools_groupby/main.nf @@ -3130,9 +3130,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_groupby", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_intersect/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_intersect/.config.vsh.yaml index 3e1921cc..aef995b5 100644 --- a/target/nextflow/bedtools/bedtools_intersect/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_intersect/.config.vsh.yaml @@ -410,9 +410,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_intersect" executable: "target/nextflow/bedtools/bedtools_intersect/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_intersect/main.nf b/target/nextflow/bedtools/bedtools_intersect/main.nf index 445ce8dc..c1b69759 100644 --- a/target/nextflow/bedtools/bedtools_intersect/main.nf +++ b/target/nextflow/bedtools/bedtools_intersect/main.nf @@ -3282,9 +3282,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_intersect", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_links/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_links/.config.vsh.yaml index f39cf920..17095134 100644 --- a/target/nextflow/bedtools/bedtools_links/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_links/.config.vsh.yaml @@ -210,9 +210,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_links" executable: "target/nextflow/bedtools/bedtools_links/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_links/main.nf b/target/nextflow/bedtools/bedtools_links/main.nf index 6c74a50b..68a7efbe 100644 --- a/target/nextflow/bedtools/bedtools_links/main.nf +++ b/target/nextflow/bedtools/bedtools_links/main.nf @@ -3073,9 +3073,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_links", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_merge/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_merge/.config.vsh.yaml index 930202a3..f31081cc 100644 --- a/target/nextflow/bedtools/bedtools_merge/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_merge/.config.vsh.yaml @@ -279,9 +279,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_merge" executable: "target/nextflow/bedtools/bedtools_merge/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_merge/main.nf b/target/nextflow/bedtools/bedtools_merge/main.nf index d1dfeb39..d932a4ad 100644 --- a/target/nextflow/bedtools/bedtools_merge/main.nf +++ b/target/nextflow/bedtools/bedtools_merge/main.nf @@ -3134,9 +3134,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_merge", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bedtools/bedtools_sort/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_sort/.config.vsh.yaml index 458301c5..e5a05df5 100644 --- a/target/nextflow/bedtools/bedtools_sort/.config.vsh.yaml +++ b/target/nextflow/bedtools/bedtools_sort/.config.vsh.yaml @@ -222,9 +222,9 @@ build_info: output: "target/nextflow/bedtools/bedtools_sort" executable: "target/nextflow/bedtools/bedtools_sort/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bedtools/bedtools_sort/main.nf b/target/nextflow/bedtools/bedtools_sort/main.nf index 9691a4a5..c0d09a63 100644 --- a/target/nextflow/bedtools/bedtools_sort/main.nf +++ b/target/nextflow/bedtools/bedtools_sort/main.nf @@ -3092,9 +3092,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bedtools/bedtools_sort", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/busco/busco_download_datasets/.config.vsh.yaml b/target/nextflow/busco/busco_download_datasets/.config.vsh.yaml index 0aba6a2c..f5095890 100644 --- a/target/nextflow/busco/busco_download_datasets/.config.vsh.yaml +++ b/target/nextflow/busco/busco_download_datasets/.config.vsh.yaml @@ -158,9 +158,9 @@ build_info: output: "target/nextflow/busco/busco_download_datasets" executable: "target/nextflow/busco/busco_download_datasets/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/busco/busco_download_datasets/main.nf b/target/nextflow/busco/busco_download_datasets/main.nf index 989f3677..75ddb55e 100644 --- a/target/nextflow/busco/busco_download_datasets/main.nf +++ b/target/nextflow/busco/busco_download_datasets/main.nf @@ -3011,9 +3011,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/busco/busco_download_datasets", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/busco/busco_list_datasets/.config.vsh.yaml b/target/nextflow/busco/busco_list_datasets/.config.vsh.yaml index 0dc9f81c..3185c80f 100644 --- a/target/nextflow/busco/busco_list_datasets/.config.vsh.yaml +++ b/target/nextflow/busco/busco_list_datasets/.config.vsh.yaml @@ -145,9 +145,9 @@ build_info: output: "target/nextflow/busco/busco_list_datasets" executable: "target/nextflow/busco/busco_list_datasets/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/busco/busco_list_datasets/main.nf b/target/nextflow/busco/busco_list_datasets/main.nf index cd4042e7..95bf98d7 100644 --- a/target/nextflow/busco/busco_list_datasets/main.nf +++ b/target/nextflow/busco/busco_list_datasets/main.nf @@ -2997,9 +2997,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/busco/busco_list_datasets", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/busco/busco_run/.config.vsh.yaml b/target/nextflow/busco/busco_run/.config.vsh.yaml index 9e27b0f1..e81730a1 100644 --- a/target/nextflow/busco/busco_run/.config.vsh.yaml +++ b/target/nextflow/busco/busco_run/.config.vsh.yaml @@ -423,9 +423,9 @@ build_info: output: "target/nextflow/busco/busco_run" executable: "target/nextflow/busco/busco_run/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/busco/busco_run/main.nf b/target/nextflow/busco/busco_run/main.nf index f4cb1d92..661b5db2 100644 --- a/target/nextflow/busco/busco_run/main.nf +++ b/target/nextflow/busco/busco_run/main.nf @@ -3309,9 +3309,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/busco/busco_run", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/cutadapt/.config.vsh.yaml b/target/nextflow/cutadapt/.config.vsh.yaml index d51ccdac..e181fac7 100644 --- a/target/nextflow/cutadapt/.config.vsh.yaml +++ b/target/nextflow/cutadapt/.config.vsh.yaml @@ -740,9 +740,9 @@ build_info: output: "target/nextflow/cutadapt" executable: "target/nextflow/cutadapt/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/cutadapt/main.nf b/target/nextflow/cutadapt/main.nf index 01651e49..efaaba94 100644 --- a/target/nextflow/cutadapt/main.nf +++ b/target/nextflow/cutadapt/main.nf @@ -3619,9 +3619,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/cutadapt", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/falco/.config.vsh.yaml b/target/nextflow/falco/.config.vsh.yaml index 35337644..0cc13a8e 100644 --- a/target/nextflow/falco/.config.vsh.yaml +++ b/target/nextflow/falco/.config.vsh.yaml @@ -317,9 +317,9 @@ build_info: output: "target/nextflow/falco" executable: "target/nextflow/falco/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/falco/main.nf b/target/nextflow/falco/main.nf index 8a27a274..3cecbdde 100644 --- a/target/nextflow/falco/main.nf +++ b/target/nextflow/falco/main.nf @@ -3170,9 +3170,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/falco", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/fastp/.config.vsh.yaml b/target/nextflow/fastp/.config.vsh.yaml index 221983f8..6186d865 100644 --- a/target/nextflow/fastp/.config.vsh.yaml +++ b/target/nextflow/fastp/.config.vsh.yaml @@ -1083,9 +1083,9 @@ build_info: output: "target/nextflow/fastp" executable: "target/nextflow/fastp/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/fastp/main.nf b/target/nextflow/fastp/main.nf index dcbd591b..2cab6a6f 100644 --- a/target/nextflow/fastp/main.nf +++ b/target/nextflow/fastp/main.nf @@ -4023,9 +4023,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/fastp", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/fastqc/.config.vsh.yaml b/target/nextflow/fastqc/.config.vsh.yaml index d23bac0e..2e7105e0 100644 --- a/target/nextflow/fastqc/.config.vsh.yaml +++ b/target/nextflow/fastqc/.config.vsh.yaml @@ -340,9 +340,9 @@ build_info: output: "target/nextflow/fastqc" executable: "target/nextflow/fastqc/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/fastqc/main.nf b/target/nextflow/fastqc/main.nf index 477addaa..40db44fb 100644 --- a/target/nextflow/fastqc/main.nf +++ b/target/nextflow/fastqc/main.nf @@ -3182,9 +3182,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/fastqc", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/featurecounts/.config.vsh.yaml b/target/nextflow/featurecounts/.config.vsh.yaml index 528adfd6..92f0b820 100644 --- a/target/nextflow/featurecounts/.config.vsh.yaml +++ b/target/nextflow/featurecounts/.config.vsh.yaml @@ -645,9 +645,9 @@ build_info: output: "target/nextflow/featurecounts" executable: "target/nextflow/featurecounts/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/featurecounts/main.nf b/target/nextflow/featurecounts/main.nf index f3932c4d..70b8fd3d 100644 --- a/target/nextflow/featurecounts/main.nf +++ b/target/nextflow/featurecounts/main.nf @@ -3549,9 +3549,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/featurecounts", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/fq_subsample/.config.vsh.yaml b/target/nextflow/fq_subsample/.config.vsh.yaml index 1562240d..93310c6f 100644 --- a/target/nextflow/fq_subsample/.config.vsh.yaml +++ b/target/nextflow/fq_subsample/.config.vsh.yaml @@ -190,9 +190,9 @@ build_info: output: "target/nextflow/fq_subsample" executable: "target/nextflow/fq_subsample/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/fq_subsample/main.nf b/target/nextflow/fq_subsample/main.nf index 4b395fc2..b263b064 100644 --- a/target/nextflow/fq_subsample/main.nf +++ b/target/nextflow/fq_subsample/main.nf @@ -3032,9 +3032,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/fq_subsample", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/gffread/.config.vsh.yaml b/target/nextflow/gffread/.config.vsh.yaml index 7aa26a95..53e8a38c 100644 --- a/target/nextflow/gffread/.config.vsh.yaml +++ b/target/nextflow/gffread/.config.vsh.yaml @@ -685,9 +685,9 @@ build_info: output: "target/nextflow/gffread" executable: "target/nextflow/gffread/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/gffread/main.nf b/target/nextflow/gffread/main.nf index 00326467..2c814c0f 100644 --- a/target/nextflow/gffread/main.nf +++ b/target/nextflow/gffread/main.nf @@ -3606,9 +3606,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/gffread", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/kallisto/kallisto_index/.config.vsh.yaml b/target/nextflow/kallisto/kallisto_index/.config.vsh.yaml index 8efcb9c0..e376deb9 100644 --- a/target/nextflow/kallisto/kallisto_index/.config.vsh.yaml +++ b/target/nextflow/kallisto/kallisto_index/.config.vsh.yaml @@ -218,9 +218,9 @@ build_info: output: "target/nextflow/kallisto/kallisto_index" executable: "target/nextflow/kallisto/kallisto_index/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/kallisto/kallisto_index/main.nf b/target/nextflow/kallisto/kallisto_index/main.nf index 92a2b913..7b9e3c35 100644 --- a/target/nextflow/kallisto/kallisto_index/main.nf +++ b/target/nextflow/kallisto/kallisto_index/main.nf @@ -3071,9 +3071,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/kallisto/kallisto_index", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/kallisto/kallisto_quant/.config.vsh.yaml b/target/nextflow/kallisto/kallisto_quant/.config.vsh.yaml index 46a429b6..e0a3ec9e 100644 --- a/target/nextflow/kallisto/kallisto_quant/.config.vsh.yaml +++ b/target/nextflow/kallisto/kallisto_quant/.config.vsh.yaml @@ -234,9 +234,9 @@ build_info: output: "target/nextflow/kallisto/kallisto_quant" executable: "target/nextflow/kallisto/kallisto_quant/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/kallisto/kallisto_quant/main.nf b/target/nextflow/kallisto/kallisto_quant/main.nf index cc3773e4..7f859e2a 100644 --- a/target/nextflow/kallisto/kallisto_quant/main.nf +++ b/target/nextflow/kallisto/kallisto_quant/main.nf @@ -3092,9 +3092,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/kallisto/kallisto_quant", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/lofreq/lofreq_call/.config.vsh.yaml b/target/nextflow/lofreq/lofreq_call/.config.vsh.yaml index 39b8b4c2..3421e6cb 100644 --- a/target/nextflow/lofreq/lofreq_call/.config.vsh.yaml +++ b/target/nextflow/lofreq/lofreq_call/.config.vsh.yaml @@ -507,9 +507,9 @@ build_info: output: "target/nextflow/lofreq/lofreq_call" executable: "target/nextflow/lofreq/lofreq_call/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/lofreq/lofreq_call/main.nf b/target/nextflow/lofreq/lofreq_call/main.nf index b9f4dd6e..a3cab2bd 100644 --- a/target/nextflow/lofreq/lofreq_call/main.nf +++ b/target/nextflow/lofreq/lofreq_call/main.nf @@ -3414,9 +3414,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/lofreq/lofreq_call", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/lofreq/lofreq_indelqual/.config.vsh.yaml b/target/nextflow/lofreq/lofreq_indelqual/.config.vsh.yaml index c26e6d97..22be4f92 100644 --- a/target/nextflow/lofreq/lofreq_indelqual/.config.vsh.yaml +++ b/target/nextflow/lofreq/lofreq_indelqual/.config.vsh.yaml @@ -215,9 +215,9 @@ build_info: output: "target/nextflow/lofreq/lofreq_indelqual" executable: "target/nextflow/lofreq/lofreq_indelqual/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/lofreq/lofreq_indelqual/main.nf b/target/nextflow/lofreq/lofreq_indelqual/main.nf index 07469981..f0c88079 100644 --- a/target/nextflow/lofreq/lofreq_indelqual/main.nf +++ b/target/nextflow/lofreq/lofreq_indelqual/main.nf @@ -3077,9 +3077,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/lofreq/lofreq_indelqual", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/multiqc/.config.vsh.yaml b/target/nextflow/multiqc/.config.vsh.yaml index 353ff7c6..ff7a5d19 100644 --- a/target/nextflow/multiqc/.config.vsh.yaml +++ b/target/nextflow/multiqc/.config.vsh.yaml @@ -456,9 +456,9 @@ build_info: output: "target/nextflow/multiqc" executable: "target/nextflow/multiqc/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/multiqc/main.nf b/target/nextflow/multiqc/main.nf index 137889fb..2bb46281 100644 --- a/target/nextflow/multiqc/main.nf +++ b/target/nextflow/multiqc/main.nf @@ -3366,9 +3366,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/multiqc", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/nanoplot/.config.vsh.yaml b/target/nextflow/nanoplot/.config.vsh.yaml index 313e6dba..3344e9e7 100644 --- a/target/nextflow/nanoplot/.config.vsh.yaml +++ b/target/nextflow/nanoplot/.config.vsh.yaml @@ -492,9 +492,9 @@ build_info: output: "target/nextflow/nanoplot" executable: "target/nextflow/nanoplot/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/nanoplot/main.nf b/target/nextflow/nanoplot/main.nf index fac6ed70..1979783b 100644 --- a/target/nextflow/nanoplot/main.nf +++ b/target/nextflow/nanoplot/main.nf @@ -3397,9 +3397,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/nanoplot", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/pear/.config.vsh.yaml b/target/nextflow/pear/.config.vsh.yaml index cf63801f..4af49547 100644 --- a/target/nextflow/pear/.config.vsh.yaml +++ b/target/nextflow/pear/.config.vsh.yaml @@ -398,9 +398,9 @@ build_info: output: "target/nextflow/pear" executable: "target/nextflow/pear/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/pear/main.nf b/target/nextflow/pear/main.nf index 21d4bcd2..d59f5338 100644 --- a/target/nextflow/pear/main.nf +++ b/target/nextflow/pear/main.nf @@ -3259,9 +3259,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/pear", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/qualimap/qualimap_rnaseq/.config.vsh.yaml b/target/nextflow/qualimap/qualimap_rnaseq/.config.vsh.yaml index 8be61998..836cd753 100644 --- a/target/nextflow/qualimap/qualimap_rnaseq/.config.vsh.yaml +++ b/target/nextflow/qualimap/qualimap_rnaseq/.config.vsh.yaml @@ -264,9 +264,9 @@ build_info: output: "target/nextflow/qualimap/qualimap_rnaseq" executable: "target/nextflow/qualimap/qualimap_rnaseq/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/qualimap/qualimap_rnaseq/main.nf b/target/nextflow/qualimap/qualimap_rnaseq/main.nf index 4c61721f..0405ecde 100644 --- a/target/nextflow/qualimap/qualimap_rnaseq/main.nf +++ b/target/nextflow/qualimap/qualimap_rnaseq/main.nf @@ -3129,9 +3129,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/qualimap/qualimap_rnaseq", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/rsem/rsem_calculate_expression/.config.vsh.yaml b/target/nextflow/rsem/rsem_calculate_expression/.config.vsh.yaml index 30105b2c..9f5dd35e 100644 --- a/target/nextflow/rsem/rsem_calculate_expression/.config.vsh.yaml +++ b/target/nextflow/rsem/rsem_calculate_expression/.config.vsh.yaml @@ -852,9 +852,9 @@ build_info: output: "target/nextflow/rsem/rsem_calculate_expression" executable: "target/nextflow/rsem/rsem_calculate_expression/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/rsem/rsem_calculate_expression/main.nf b/target/nextflow/rsem/rsem_calculate_expression/main.nf index da9a2855..71dc940b 100644 --- a/target/nextflow/rsem/rsem_calculate_expression/main.nf +++ b/target/nextflow/rsem/rsem_calculate_expression/main.nf @@ -3661,9 +3661,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/rsem/rsem_calculate_expression", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/rsem/rsem_prepare_reference/.config.vsh.yaml b/target/nextflow/rsem/rsem_prepare_reference/.config.vsh.yaml index 493bc335..b5b8c58c 100644 --- a/target/nextflow/rsem/rsem_prepare_reference/.config.vsh.yaml +++ b/target/nextflow/rsem/rsem_prepare_reference/.config.vsh.yaml @@ -416,9 +416,9 @@ build_info: output: "target/nextflow/rsem/rsem_prepare_reference" executable: "target/nextflow/rsem/rsem_prepare_reference/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/rsem/rsem_prepare_reference/main.nf b/target/nextflow/rsem/rsem_prepare_reference/main.nf index 4222c86b..f395c2a9 100644 --- a/target/nextflow/rsem/rsem_prepare_reference/main.nf +++ b/target/nextflow/rsem/rsem_prepare_reference/main.nf @@ -3245,9 +3245,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/rsem/rsem_prepare_reference", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/salmon/salmon_index/.config.vsh.yaml b/target/nextflow/salmon/salmon_index/.config.vsh.yaml index 6f577df7..0e2f7745 100644 --- a/target/nextflow/salmon/salmon_index/.config.vsh.yaml +++ b/target/nextflow/salmon/salmon_index/.config.vsh.yaml @@ -277,9 +277,9 @@ build_info: output: "target/nextflow/salmon/salmon_index" executable: "target/nextflow/salmon/salmon_index/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/salmon/salmon_index/main.nf b/target/nextflow/salmon/salmon_index/main.nf index 448c2a5a..f0322fb6 100644 --- a/target/nextflow/salmon/salmon_index/main.nf +++ b/target/nextflow/salmon/salmon_index/main.nf @@ -3129,9 +3129,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/salmon/salmon_index", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/salmon/salmon_quant/.config.vsh.yaml b/target/nextflow/salmon/salmon_quant/.config.vsh.yaml index 42a47d3f..40d8c017 100644 --- a/target/nextflow/salmon/salmon_quant/.config.vsh.yaml +++ b/target/nextflow/salmon/salmon_quant/.config.vsh.yaml @@ -1173,9 +1173,9 @@ build_info: output: "target/nextflow/salmon/salmon_quant" executable: "target/nextflow/salmon/salmon_quant/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/salmon/salmon_quant/main.nf b/target/nextflow/salmon/salmon_quant/main.nf index b98c90cf..1f91c578 100644 --- a/target/nextflow/salmon/salmon_quant/main.nf +++ b/target/nextflow/salmon/salmon_quant/main.nf @@ -3964,9 +3964,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/salmon/salmon_quant", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_collate/.config.vsh.yaml b/target/nextflow/samtools/samtools_collate/.config.vsh.yaml index fc6377aa..3fc26275 100644 --- a/target/nextflow/samtools/samtools_collate/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_collate/.config.vsh.yaml @@ -264,9 +264,9 @@ build_info: output: "target/nextflow/samtools/samtools_collate" executable: "target/nextflow/samtools/samtools_collate/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_collate/main.nf b/target/nextflow/samtools/samtools_collate/main.nf index cfef0132..30508e71 100644 --- a/target/nextflow/samtools/samtools_collate/main.nf +++ b/target/nextflow/samtools/samtools_collate/main.nf @@ -3140,9 +3140,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_collate", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_faidx/.config.vsh.yaml b/target/nextflow/samtools/samtools_faidx/.config.vsh.yaml index 2fb05ad8..98d403fe 100644 --- a/target/nextflow/samtools/samtools_faidx/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_faidx/.config.vsh.yaml @@ -243,9 +243,9 @@ build_info: output: "target/nextflow/samtools/samtools_faidx" executable: "target/nextflow/samtools/samtools_faidx/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_faidx/main.nf b/target/nextflow/samtools/samtools_faidx/main.nf index 94730b5a..aaeda3f8 100644 --- a/target/nextflow/samtools/samtools_faidx/main.nf +++ b/target/nextflow/samtools/samtools_faidx/main.nf @@ -3112,9 +3112,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_faidx", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_fasta/.config.vsh.yaml b/target/nextflow/samtools/samtools_fasta/.config.vsh.yaml index c7b32ffb..eda1b294 100644 --- a/target/nextflow/samtools/samtools_fasta/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_fasta/.config.vsh.yaml @@ -433,9 +433,9 @@ build_info: output: "target/nextflow/samtools/samtools_fasta" executable: "target/nextflow/samtools/samtools_fasta/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_fasta/main.nf b/target/nextflow/samtools/samtools_fasta/main.nf index cd376663..66a7f022 100644 --- a/target/nextflow/samtools/samtools_fasta/main.nf +++ b/target/nextflow/samtools/samtools_fasta/main.nf @@ -3304,9 +3304,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_fasta", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_fastq/.config.vsh.yaml b/target/nextflow/samtools/samtools_fastq/.config.vsh.yaml index 3802e408..2320f91c 100644 --- a/target/nextflow/samtools/samtools_fastq/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_fastq/.config.vsh.yaml @@ -433,9 +433,9 @@ build_info: output: "target/nextflow/samtools/samtools_fastq" executable: "target/nextflow/samtools/samtools_fastq/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_fastq/main.nf b/target/nextflow/samtools/samtools_fastq/main.nf index b8280900..7d638c43 100644 --- a/target/nextflow/samtools/samtools_fastq/main.nf +++ b/target/nextflow/samtools/samtools_fastq/main.nf @@ -3304,9 +3304,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_fastq", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_flagstat/.config.vsh.yaml b/target/nextflow/samtools/samtools_flagstat/.config.vsh.yaml index 0f953f4f..5638073e 100644 --- a/target/nextflow/samtools/samtools_flagstat/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_flagstat/.config.vsh.yaml @@ -173,9 +173,9 @@ build_info: output: "target/nextflow/samtools/samtools_flagstat" executable: "target/nextflow/samtools/samtools_flagstat/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_flagstat/main.nf b/target/nextflow/samtools/samtools_flagstat/main.nf index f0269761..f12b54ae 100644 --- a/target/nextflow/samtools/samtools_flagstat/main.nf +++ b/target/nextflow/samtools/samtools_flagstat/main.nf @@ -3028,9 +3028,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_flagstat", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_idxstats/.config.vsh.yaml b/target/nextflow/samtools/samtools_idxstats/.config.vsh.yaml index a368fe88..89fad7c0 100644 --- a/target/nextflow/samtools/samtools_idxstats/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_idxstats/.config.vsh.yaml @@ -183,9 +183,9 @@ build_info: output: "target/nextflow/samtools/samtools_idxstats" executable: "target/nextflow/samtools/samtools_idxstats/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_idxstats/main.nf b/target/nextflow/samtools/samtools_idxstats/main.nf index aff1d8ff..c5737dba 100644 --- a/target/nextflow/samtools/samtools_idxstats/main.nf +++ b/target/nextflow/samtools/samtools_idxstats/main.nf @@ -3040,9 +3040,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_idxstats", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_index/.config.vsh.yaml b/target/nextflow/samtools/samtools_index/.config.vsh.yaml index 0edcad68..b6cf0f31 100644 --- a/target/nextflow/samtools/samtools_index/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_index/.config.vsh.yaml @@ -189,9 +189,9 @@ build_info: output: "target/nextflow/samtools/samtools_index" executable: "target/nextflow/samtools/samtools_index/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_index/main.nf b/target/nextflow/samtools/samtools_index/main.nf index 39488a44..9ff11d84 100644 --- a/target/nextflow/samtools/samtools_index/main.nf +++ b/target/nextflow/samtools/samtools_index/main.nf @@ -3053,9 +3053,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_index", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_sort/.config.vsh.yaml b/target/nextflow/samtools/samtools_sort/.config.vsh.yaml index 09b378fd..4d531c4f 100644 --- a/target/nextflow/samtools/samtools_sort/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_sort/.config.vsh.yaml @@ -332,9 +332,9 @@ build_info: output: "target/nextflow/samtools/samtools_sort" executable: "target/nextflow/samtools/samtools_sort/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_sort/main.nf b/target/nextflow/samtools/samtools_sort/main.nf index d9ac81a7..c9c8ecea 100644 --- a/target/nextflow/samtools/samtools_sort/main.nf +++ b/target/nextflow/samtools/samtools_sort/main.nf @@ -3225,9 +3225,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_sort", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_stats/.config.vsh.yaml b/target/nextflow/samtools/samtools_stats/.config.vsh.yaml index 610e8266..e155f70c 100644 --- a/target/nextflow/samtools/samtools_stats/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_stats/.config.vsh.yaml @@ -401,9 +401,9 @@ build_info: output: "target/nextflow/samtools/samtools_stats" executable: "target/nextflow/samtools/samtools_stats/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_stats/main.nf b/target/nextflow/samtools/samtools_stats/main.nf index 6d1bbfca..75f76daf 100644 --- a/target/nextflow/samtools/samtools_stats/main.nf +++ b/target/nextflow/samtools/samtools_stats/main.nf @@ -3295,9 +3295,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_stats", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/samtools/samtools_view/.config.vsh.yaml b/target/nextflow/samtools/samtools_view/.config.vsh.yaml index 22946e1f..1c64c3e7 100644 --- a/target/nextflow/samtools/samtools_view/.config.vsh.yaml +++ b/target/nextflow/samtools/samtools_view/.config.vsh.yaml @@ -665,9 +665,9 @@ build_info: output: "target/nextflow/samtools/samtools_view" executable: "target/nextflow/samtools/samtools_view/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/samtools/samtools_view/main.nf b/target/nextflow/samtools/samtools_view/main.nf index 8db0d9df..1e326291 100644 --- a/target/nextflow/samtools/samtools_view/main.nf +++ b/target/nextflow/samtools/samtools_view/main.nf @@ -3476,9 +3476,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/samtools/samtools_view", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/seqtk/seqtk_sample/.config.vsh.yaml b/target/nextflow/seqtk/seqtk_sample/.config.vsh.yaml index 3f3016b6..ea45df49 100644 --- a/target/nextflow/seqtk/seqtk_sample/.config.vsh.yaml +++ b/target/nextflow/seqtk/seqtk_sample/.config.vsh.yaml @@ -173,9 +173,9 @@ build_info: output: "target/nextflow/seqtk/seqtk_sample" executable: "target/nextflow/seqtk/seqtk_sample/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/seqtk/seqtk_sample/main.nf b/target/nextflow/seqtk/seqtk_sample/main.nf index 5526071f..b4fdec0a 100644 --- a/target/nextflow/seqtk/seqtk_sample/main.nf +++ b/target/nextflow/seqtk/seqtk_sample/main.nf @@ -3030,9 +3030,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/seqtk/seqtk_sample", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/seqtk/seqtk_subseq/.config.vsh.yaml b/target/nextflow/seqtk/seqtk_subseq/.config.vsh.yaml index e160cac3..5e09e498 100644 --- a/target/nextflow/seqtk/seqtk_subseq/.config.vsh.yaml +++ b/target/nextflow/seqtk/seqtk_subseq/.config.vsh.yaml @@ -196,9 +196,9 @@ build_info: output: "target/nextflow/seqtk/seqtk_subseq" executable: "target/nextflow/seqtk/seqtk_subseq/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/seqtk/seqtk_subseq/main.nf b/target/nextflow/seqtk/seqtk_subseq/main.nf index 5a28c1f6..19a71312 100644 --- a/target/nextflow/seqtk/seqtk_subseq/main.nf +++ b/target/nextflow/seqtk/seqtk_subseq/main.nf @@ -3060,9 +3060,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/seqtk/seqtk_subseq", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/snpeff/.config.vsh.yaml b/target/nextflow/snpeff/.config.vsh.yaml index ab716ca9..4cee3bcc 100644 --- a/target/nextflow/snpeff/.config.vsh.yaml +++ b/target/nextflow/snpeff/.config.vsh.yaml @@ -628,9 +628,9 @@ build_info: output: "target/nextflow/snpeff" executable: "target/nextflow/snpeff/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/snpeff/main.nf b/target/nextflow/snpeff/main.nf index eeafca19..10f456cc 100644 --- a/target/nextflow/snpeff/main.nf +++ b/target/nextflow/snpeff/main.nf @@ -3555,9 +3555,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/snpeff", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/sortmerna/.config.vsh.yaml b/target/nextflow/sortmerna/.config.vsh.yaml index 4e9e7d98..80eca719 100644 --- a/target/nextflow/sortmerna/.config.vsh.yaml +++ b/target/nextflow/sortmerna/.config.vsh.yaml @@ -591,9 +591,9 @@ build_info: output: "target/nextflow/sortmerna" executable: "target/nextflow/sortmerna/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/sortmerna/main.nf b/target/nextflow/sortmerna/main.nf index f967191b..fa214093 100644 --- a/target/nextflow/sortmerna/main.nf +++ b/target/nextflow/sortmerna/main.nf @@ -3456,9 +3456,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/sortmerna", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/star/star_align_reads/.config.vsh.yaml b/target/nextflow/star/star_align_reads/.config.vsh.yaml index 3e5fb4da..1b8c3470 100644 --- a/target/nextflow/star/star_align_reads/.config.vsh.yaml +++ b/target/nextflow/star/star_align_reads/.config.vsh.yaml @@ -2663,9 +2663,9 @@ build_info: output: "target/nextflow/star/star_align_reads" executable: "target/nextflow/star/star_align_reads/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/star/star_align_reads/main.nf b/target/nextflow/star/star_align_reads/main.nf index e452b1cc..4f294d92 100644 --- a/target/nextflow/star/star_align_reads/main.nf +++ b/target/nextflow/star/star_align_reads/main.nf @@ -5943,9 +5943,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/star/star_align_reads", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/star/star_genome_generate/.config.vsh.yaml b/target/nextflow/star/star_genome_generate/.config.vsh.yaml index 4b700892..3e2ca331 100644 --- a/target/nextflow/star/star_genome_generate/.config.vsh.yaml +++ b/target/nextflow/star/star_genome_generate/.config.vsh.yaml @@ -333,9 +333,9 @@ build_info: output: "target/nextflow/star/star_genome_generate" executable: "target/nextflow/star/star_genome_generate/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/star/star_genome_generate/main.nf b/target/nextflow/star/star_genome_generate/main.nf index 28b9805e..e3c5aa6b 100644 --- a/target/nextflow/star/star_genome_generate/main.nf +++ b/target/nextflow/star/star_genome_generate/main.nf @@ -3195,9 +3195,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/star/star_genome_generate", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/trimgalore/.config.vsh.yaml b/target/nextflow/trimgalore/.config.vsh.yaml index 861f94fb..53f2ae4b 100644 --- a/target/nextflow/trimgalore/.config.vsh.yaml +++ b/target/nextflow/trimgalore/.config.vsh.yaml @@ -770,9 +770,9 @@ build_info: output: "target/nextflow/trimgalore" executable: "target/nextflow/trimgalore/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/trimgalore/main.nf b/target/nextflow/trimgalore/main.nf index ff9d7e58..de770f0b 100644 --- a/target/nextflow/trimgalore/main.nf +++ b/target/nextflow/trimgalore/main.nf @@ -3560,9 +3560,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/trimgalore", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/umi_tools/umi_tools_dedup/.config.vsh.yaml b/target/nextflow/umi_tools/umi_tools_dedup/.config.vsh.yaml index 53705034..694f6c1e 100644 --- a/target/nextflow/umi_tools/umi_tools_dedup/.config.vsh.yaml +++ b/target/nextflow/umi_tools/umi_tools_dedup/.config.vsh.yaml @@ -611,9 +611,9 @@ build_info: output: "target/nextflow/umi_tools/umi_tools_dedup" executable: "target/nextflow/umi_tools/umi_tools_dedup/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/umi_tools/umi_tools_dedup/main.nf b/target/nextflow/umi_tools/umi_tools_dedup/main.nf index ce223d29..70a361d4 100644 --- a/target/nextflow/umi_tools/umi_tools_dedup/main.nf +++ b/target/nextflow/umi_tools/umi_tools_dedup/main.nf @@ -3487,9 +3487,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/umi_tools/umi_tools_dedup", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/umi_tools/umi_tools_extract/.config.vsh.yaml b/target/nextflow/umi_tools/umi_tools_extract/.config.vsh.yaml index dfe9c985..797ea610 100644 --- a/target/nextflow/umi_tools/umi_tools_extract/.config.vsh.yaml +++ b/target/nextflow/umi_tools/umi_tools_extract/.config.vsh.yaml @@ -449,9 +449,9 @@ build_info: output: "target/nextflow/umi_tools/umi_tools_extract" executable: "target/nextflow/umi_tools/umi_tools_extract/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/umi_tools/umi_tools_extract/main.nf b/target/nextflow/umi_tools/umi_tools_extract/main.nf index 90c2bd17..0a781812 100644 --- a/target/nextflow/umi_tools/umi_tools_extract/main.nf +++ b/target/nextflow/umi_tools/umi_tools_extract/main.nf @@ -3316,9 +3316,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/umi_tools/umi_tools_extract", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml b/target/nextflow/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml index cca3c5ff..467ecff2 100644 --- a/target/nextflow/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml +++ b/target/nextflow/umi_tools/umi_tools_prepareforrsem/.config.vsh.yaml @@ -256,9 +256,9 @@ build_info: output: "target/nextflow/umi_tools/umi_tools_prepareforrsem" executable: "target/nextflow/umi_tools/umi_tools_prepareforrsem/main.nf" viash_version: "0.9.0" - git_commit: "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29" - git_remote: "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox" - git_tag: "v0.2.0-12-g6e6b139" + git_commit: "52f44f5049606ac655154cf54ed53fa76b49896f" + git_remote: "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox" + git_tag: "v0.2.0-14-g52f44f5" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/umi_tools/umi_tools_prepareforrsem/main.nf b/target/nextflow/umi_tools/umi_tools_prepareforrsem/main.nf index 487b904b..2c74d881 100644 --- a/target/nextflow/umi_tools/umi_tools_prepareforrsem/main.nf +++ b/target/nextflow/umi_tools/umi_tools_prepareforrsem/main.nf @@ -3121,9 +3121,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/umi_tools/umi_tools_prepareforrsem", "viash_version" : "0.9.0", - "git_commit" : "6e6b13939c9d719f1cd7ff5a91a6562e0a6e2e29", - "git_remote" : "https://x-access-token:ghs_yMJ96XEhcHROF2pqaopOfHbmZnWq3J2wWhaj@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-12-g6e6b139" + "git_commit" : "52f44f5049606ac655154cf54ed53fa76b49896f", + "git_remote" : "https://x-access-token:ghs_Clbt7tbJqVcfiS3VxySrdzjhMh1FWp3VaTFP@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-14-g52f44f5" }, "package_config" : { "name" : "biobox",