diff --git a/CHANGELOG.md b/CHANGELOG.md index b31f43d9..07a83c15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ * `agat`: - `agat/agat_convert_genscan2gff`: convert a genscan file into a GFF file (PR #100). +* `bd_rhapsody/bd_rhapsody_sequence_analysis`: BD Rhapsody Sequence Analysis CWL pipeline (PR #96). + ## MINOR CHANGES * Upgrade to Viash 0.9.0. diff --git a/src/bd_rhapsody/bd_rhapsody_make_reference/config.vsh.yaml b/src/bd_rhapsody/bd_rhapsody_make_reference/config.vsh.yaml index e596bf06..dc71262b 100644 --- a/src/bd_rhapsody/bd_rhapsody_make_reference/config.vsh.yaml +++ b/src/bd_rhapsody/bd_rhapsody_make_reference/config.vsh.yaml @@ -116,12 +116,11 @@ argument_groups: resources: - type: python_script path: script.py - - path: make_rhap_reference_2.2.1_nodocker.cwl test_resources: - type: bash_script path: test.sh - - path: test_data + - path: ../test_data requirements: commands: [ "cwl-runner" ] @@ -131,12 +130,19 @@ engines: image: bdgenomics/rhapsody:2.2.1 setup: - type: apt - packages: [procps] + packages: [procps, git] - type: python packages: [cwlref-runner, cwl-runner] - type: docker run: | - echo "bdgenomics/rhapsody: 2.2.1" > /var/software_versions.txt + mkdir /var/bd_rhapsody_cwl && \ + cd /var/bd_rhapsody_cwl && \ + git clone https://bitbucket.org/CRSwDev/cwl.git . && \ + git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de + - type: docker + run: + - VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1) + - 'echo "bdgenomics/rhapsody: \"$VERSION\"" > /var/software_versions.txt' runners: - type: executable diff --git a/src/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl b/src/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl deleted file mode 100644 index fead2c02..00000000 --- a/src/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl +++ /dev/null @@ -1,115 +0,0 @@ -requirements: - InlineJavascriptRequirement: {} -class: CommandLineTool -label: Reference Files Generator for BD Rhapsodyâ„¢ Sequencing Analysis Pipeline -cwlVersion: v1.2 -doc: >- - The Reference Files Generator creates an archive containing Genome Index and Transcriptome annotation files needed for the BD Rhapsodyâ„¢ Sequencing Analysis Pipeline. The app takes as input one or more FASTA and GTF files and produces a compressed archive in the form of a tar.gz file. The archive contains:\n - STAR index\n - Filtered GTF file - - -baseCommand: run_reference_generator.sh -inputs: - Genome_fasta: - type: File[] - label: Reference Genome - doc: |- - Reference genome file in FASTA format. The BD Rhapsodyâ„¢ Sequencing Analysis Pipeline uses GRCh38 for Human and GRCm39 for Mouse. - inputBinding: - prefix: --reference-genome - shellQuote: false - Gtf: - type: File[] - label: Transcript Annotations - doc: |- - Transcript annotation files in GTF format. The BD Rhapsodyâ„¢ Sequencing Analysis Pipeline uses Gencode v42 for Human and M31 for Mouse. - inputBinding: - prefix: --gtf - shellQuote: false - Extra_sequences: - type: File[]? - label: Extra Sequences - doc: |- - Additional sequences in FASTA format to use when building the STAR index. (E.g. phiX genome) - inputBinding: - prefix: --extra-sequences - shellQuote: false - Mitochondrial_Contigs: - type: string[]? - default: ["chrM", "chrMT", "M", "MT"] - label: Mitochondrial Contig Names - doc: |- - Names of the Mitochondrial contigs in the provided Reference Genome. Fragments originating from contigs other than these are identified as 'nuclear fragments' in the ATACseq analysis pipeline. - inputBinding: - prefix: --mitochondrial-contigs - shellQuote: false - Filtering_off: - type: boolean? - label: Turn off filtering - doc: |- - By default the input Transcript Annotation files are filtered based on the gene_type/gene_biotype attribute. Only features having the following attribute values are are kept: - - protein_coding - - lncRNA (lincRNA and antisense for Gencode < v31/M22/Ensembl97) - - IG_LV_gene - - IG_V_gene - - IG_V_pseudogene - - IG_D_gene - - IG_J_gene - - IG_J_pseudogene - - IG_C_gene - - IG_C_pseudogene - - TR_V_gene - - TR_V_pseudogene - - TR_D_gene - - TR_J_gene - - TR_J_pseudogene - - TR_C_gene - If you have already pre-filtered the input Annotation files and/or wish to turn-off the filtering, please set this option to True. - inputBinding: - prefix: --filtering-off - shellQuote: false - WTA_Only: - type: boolean? - label: WTA only index - doc: Build a WTA only index, otherwise builds a WTA + ATAC index. - inputBinding: - prefix: --wta-only-index - shellQuote: false - Archive_prefix: - type: string? - label: Archive Prefix - doc: |- - A prefix for naming the compressed archive file containing the Reference genome index and annotation files. The default value is constructed based on the input Reference files. - inputBinding: - prefix: --archive-prefix - shellQuote: false - Extra_STAR_params: - type: string? - label: Extra STAR Params - doc: |- - Additional parameters to pass to STAR when building the genome index. Specify exactly like how you would on the command line. - Example: - --limitGenomeGenerateRAM 48000 --genomeSAindexNbases 11 - inputBinding: - prefix: --extra-star-params - shellQuote: true - - Maximum_threads: - type: int? - label: Maximum Number of Threads - doc: |- - The maximum number of threads to use in the pipeline. By default, all available cores are used. - inputBinding: - prefix: --maximum-threads - shellQuote: false - -outputs: - - Archive: - type: File - doc: |- - A Compressed archive containing the Reference Genome Index and annotation GTF files. This archive is meant to be used as an input in the BD Rhapsodyâ„¢ Sequencing Analysis Pipeline. - id: Reference_Archive - label: Reference Files Archive - outputBinding: - glob: '*.tar.gz' - diff --git a/src/bd_rhapsody/bd_rhapsody_make_reference/script.py b/src/bd_rhapsody/bd_rhapsody_make_reference/script.py index ca635508..dcbfe933 100644 --- a/src/bd_rhapsody/bd_rhapsody_make_reference/script.py +++ b/src/bd_rhapsody/bd_rhapsody_make_reference/script.py @@ -83,21 +83,21 @@ def generate_config(par: dict[str, Any], meta, config) -> str: for config_key, arg_type, par_value in config_key_value_pairs: if arg_type == "file": - str = strip_margin(f"""\ + content = strip_margin(f"""\ |{config_key}: |""") if isinstance(par_value, list): for file in par_value: - str += strip_margin(f"""\ + content += strip_margin(f"""\ | - class: File | location: "{file}" |""") else: - str += strip_margin(f"""\ + content += strip_margin(f"""\ | class: File | location: "{par_value}" |""") - content_list.append(str) + content_list.append(content) else: content_list.append(strip_margin(f"""\ |{config_key}: {par_value} @@ -108,9 +108,9 @@ def generate_config(par: dict[str, Any], meta, config) -> str: def get_cwl_file(meta: dict[str, Any]) -> str: # create cwl file (if need be) - cwl_file=os.path.join(meta["resources_dir"], "make_rhap_reference_2.2.1_nodocker.cwl") + cwl_file="/var/bd_rhapsody_cwl/v2.2.1/Extra_Utilities/make_rhap_reference_2.2.1.cwl" - return cwl_file + return os.path.abspath(cwl_file) def main(par: dict[str, Any], meta: dict[str, Any]): config = read_config(meta["config"]) diff --git a/src/bd_rhapsody/bd_rhapsody_make_reference/test_data/script.sh b/src/bd_rhapsody/bd_rhapsody_make_reference/test_data/script.sh deleted file mode 100644 index 8d468064..00000000 --- a/src/bd_rhapsody/bd_rhapsody_make_reference/test_data/script.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -TMP_DIR=/tmp/bd_rhapsody_make_reference -OUT_DIR=src/bd_rhapsody/bd_rhapsody_make_reference/test_data - -# check if seqkit is installed -if ! command -v seqkit &> /dev/null; then - echo "seqkit could not be found" - exit 1 -fi - -# create temporary directory and clean up on exit -mkdir -p $TMP_DIR -function clean_up { - rm -rf "$TMP_DIR" -} -trap clean_up EXIT - -# fetch reference -ORIG_FA=$TMP_DIR/reference.fa.gz -if [ ! -f $ORIG_FA ]; then - wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz \ - -O $ORIG_FA -fi - -ORIG_GTF=$TMP_DIR/reference.gtf.gz -if [ ! -f $ORIG_GTF ]; then - wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz \ - -O $ORIG_GTF -fi - -# create small reference -START=30000 -END=31500 -CHR=chr1 - -# subset to small region -seqkit grep -r -p "^$CHR\$" "$ORIG_FA" | \ - seqkit subseq -r "$START:$END" > $OUT_DIR/reference_small.fa - -zcat "$ORIG_GTF" | \ - awk -v FS='\t' -v OFS='\t' " - \$1 == \"$CHR\" && \$4 >= $START && \$5 <= $END { - \$4 = \$4 - $START + 1; - \$5 = \$5 - $START + 1; - print; - }" > $OUT_DIR/reference_small.gtf diff --git a/src/bd_rhapsody/bd_rhapsody_sequence_analysis/_process_cwl.R b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/_process_cwl.R new file mode 100644 index 00000000..e33b8ea7 --- /dev/null +++ b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/_process_cwl.R @@ -0,0 +1,116 @@ +# Extract arguments from CWL file and write them to arguments.yaml +# +# This script: +# - reads the CWL file +# - extracts the main workflow arguments +# - compares cwl arguments to viash config arguments +# - writes the arguments to arguments.yaml +# +# It can be used to update the arguments in the viash config after an +# update to the CWL file has been made. +# +# Dependencies: tidyverse, jsonlite, yaml, dynutils +# +# Install dependencies: +# ```R +# install.packages(c("tidyverse", "jsonlite", "yaml", "dynutils")) +# ``` +# +# Usage: +# ```bash +# Rscript src/bd_rhapsody/bd_rhapsody_sequence_analysis/_process_cwl.R +# ``` + +library(tidyverse) + +# fetch and read cwl file +lines <- read_lines("https://bitbucket.org/CRSwDev/cwl/raw/8feeace1141b24749ea6003f8e6ad6d3ad5232de/v2.2.1/rhapsody_pipeline_2.2.1.cwl") +cwl_header <- lines[[1]] +cwl_obj <- jsonlite::fromJSON(lines[-1], simplifyVector = FALSE) + +# detect main workflow arguments +gr <- dynutils::list_as_tibble(cwl_obj$`$graph`) + +gr %>% print(n = 100) + +main <- gr %>% filter(gr$id == "#main") + +main_inputs <- main$inputs[[1]] + +input_ids <- main_inputs %>% map_chr("id") %>% gsub("^#main/", "", .) + +# check whether in config +config <- yaml::read_yaml("src/bd_rhapsody/bd_rhapsody_sequence_analysis/config.vsh.yaml") +config$all_arguments <- config$argument_groups %>% map("arguments") %>% list_flatten() +arg_names <- config$all_arguments %>% map_chr("name") %>% gsub("^--", "", .) + +# arguments in cwl but not in config +setdiff(tolower(input_ids), arg_names) + +# arguments in config but not in cwl +setdiff(arg_names, tolower(input_ids)) + +# create arguments from main_inputs +arguments <- map(main_inputs, function(main_input) { + input_id <- main_input$id %>% gsub("^#main/", "", .) + input_type <- main_input$type[[2]] + + if (is.list(input_type) && input_type$type == "array") { + multiple <- TRUE + input_type <- input_type$items + } else { + multiple <- FALSE + } + + if (is.list(input_type) && input_type$type == "enum") { + choices <- input_type$symbols %>% + gsub(paste0(input_type$name, "/"), "", .) + input_type <- "enum" + } else { + choices <- NULL + } + + description <- + if (is.null(main_input$label)) { + main_input$doc + } else if (is.null(main_input$doc)) { + main_input$label + } else { + paste0(main_input$label, ". ", main_input$doc) + } + + type_map <- c( + "float" = "double", + "int" = "integer", + "string" = "string", + "boolean" = "boolean", + "File" = "file", + "enum" = "string" + ) + + out <- list( + name = paste0("--", tolower(input_id)), + type = type_map[input_type], + # TODO: use summary when viash 0.9 is released + # summary = main_input$doc, + # description = main_input$doc, + description = description, + multiple = multiple, + choices = choices, + info = list( + config_key = input_id + ) + ) + + out[!sapply(out, is.null)] +}) + + + +yaml::write_yaml( + arguments, + "src/bd_rhapsody/bd_rhapsody_sequence_analysis/arguments.yaml", + handlers = list( + logical = yaml::verbatim_logical + ) +) diff --git a/src/bd_rhapsody/bd_rhapsody_sequence_analysis/config.vsh.yaml b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/config.vsh.yaml new file mode 100644 index 00000000..eb3eaf38 --- /dev/null +++ b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/config.vsh.yaml @@ -0,0 +1,661 @@ +name: bd_rhapsody_sequence_analysis +namespace: bd_rhapsody +description: | + BD Rhapsody Sequence Analysis CWL pipeline v2.2. + + This pipeline performs analysis of single-cell multiomic sequence read (FASTQ) data. The supported + sequencing libraries are those generated by the BD Rhapsody™ assay kits, including: Whole Transcriptome + mRNA (WTA), Targeted mRNA, AbSeq Antibody-Oligonucleotides (ABC), Single-Cell Multiplexing (SMK), + TCR/BCR (VDJ), and ATAC-Seq. +keywords: [rna-seq, single-cell, multiomic, atac-seq, targeted, abseq, tcr, bcr] +links: + repository: https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1 + documentation: https://bd-rhapsody-bioinfo-docs.genomics.bd.com +license: Unknown +authors: + - __merge__: /src/_authors/robrecht_cannoodt.yaml + roles: [ author, maintainer ] + - __merge__: /src/_authors/weiwei_schultz.yaml + roles: [ contributor ] + +argument_groups: + - name: Inputs + arguments: + - name: "--reads" + type: file + description: | + Reads (optional) - Path to your FASTQ.GZ formatted read files from libraries that may include: + + - WTA mRNA + - Targeted mRNA + - AbSeq + - Sample Multiplexing + - VDJ + + You may specify as many R1/R2 read pairs as you want. + required: false + multiple: true + example: + - WTALibrary_S1_L001_R1_001.fastq.gz + - WTALibrary_S1_L001_R2_001.fastq.gz + info: + config_key: Reads + - name: "--reads_atac" + type: file + description: | + Path to your FASTQ.GZ formatted read files from ATAC-Seq libraries. + You may specify as many R1/R2/I2 files as you want. + required: false + multiple: true + example: + - ATACLibrary_S2_L001_R1_001.fastq.gz + - ATACLibrary_S2_L001_R2_001.fastq.gz + - ATACLibrary_S2_L001_I2_001.fastq.gz + info: + config_key: Reads_ATAC + - name: References + description: | + Assay type will be inferred from the provided reference(s). + Do not provide both reference_archive and targeted_reference at the same time. + + Valid reference input combinations: + - reference_archive: WTA only + - reference_archive & abseq_reference: WTA + AbSeq + - reference_archive & supplemental_reference: WTA + extra transgenes + - reference_archive & abseq_reference & supplemental_reference: WTA + AbSeq + extra transgenes + - reference_archive: WTA + ATAC or ATAC only + - reference_archive & supplemental_reference: WTA + ATAC + extra transgenes + - targeted_reference: Targeted only + - targeted_reference & abseq_reference: Targeted + AbSeq + - abseq_reference: AbSeq only + + The reference_archive can be generated with the bd_rhapsody_make_reference component. + Alternatively, BD also provides standard references which can be downloaded from these locations: + + - Human: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Human_WTA_2023-02.tar.gz + - Mouse: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Mouse_WTA_2023-02.tar.gz + arguments: + - name: "--reference_archive" + type: file + description: | + Path to Rhapsody WTA Reference in the tar.gz format. + + Structure of the reference archive: + + - `BD_Rhapsody_Reference_Files/`: top level folder + - `star_index/`: sub-folder containing STAR index, that is files created with `STAR --runMode genomeGenerate` + - GTF for gene-transcript-annotation e.g. "gencode.v43.primary_assembly.annotation.gtf" + example: "RhapRef_Human_WTA_2023-02.tar.gz" + required: false + info: + config_key: Reference_Archive + - name: "--targeted_reference" + type: file + description: | + Path to the targeted reference file in FASTA format. + example: "BD_Rhapsody_Immune_Response_Panel_Hs.fasta" + multiple: true + info: + config_key: Targeted_Reference + - name: "--abseq_reference" + type: file + description: Path to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used. + example: "AbSeq_reference.fasta" + multiple: true + info: + config_key: AbSeq_Reference + - name: "--supplemental_reference" + type: file + alternatives: [-s] + description: Path to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences to be aligned against in a WTA assay experiment. + example: "supplemental_reference.fasta" + multiple: true + info: + config_key: Supplemental_Reference + - name: Outputs + description: Outputs for all pipeline runs + # based on https://bd-rhapsody-bioinfo-docs.genomics.bd.com/outputs/top_outputs.html + arguments: + - name: "--output_dir" + type: file + direction: output + alternatives: [-o] + description: "The unprocessed output directory containing all the outputs from the pipeline." + required: true + example: output_dir/ + - name: "--output_seurat" + type: file + direction: output + description: "Single-cell analysis tool inputs. Seurat (.rds) input file containing RSEC molecules data table and all cell annotation metadata." + example: output_seurat.rds + required: false + info: + template: "[sample_name]_Seurat.rds" + - name: "--output_mudata" + type: file + direction: output + description: "Single-cell analysis tool inputs. Scanpy / Muon input file containing RSEC molecules data table and all cell annotation metadata." + example: output_mudata.h5mu + required: false + info: + template: "[sample_name].h5mu" + - name: "--metrics_summary" + type: file + direction: output + description: "Metrics Summary. Report containing sequencing, molecules, and cell metrics." + example: metrics_summary.csv + required: false + info: + template: "[sample_name]_Metrics_Summary.csv" + - name: "--pipeline_report" + type: file + direction: output + description: "Pipeline Report. Summary report containing the results from the sequencing analysis pipeline run." + example: pipeline_report.html + required: false + info: + template: "[sample_name]_Pipeline_Report.html" + - name: "--rsec_mols_per_cell" + type: file + direction: output + description: "Molecules per bioproduct per cell bassed on RSEC" + example: RSEC_MolsPerCell_MEX.zip + required: false + info: + template: "[sample_name]_RSEC_MolsPerCell_MEX.zip" + - name: "--dbec_mols_per_cell" + type: file + direction: output + description: "Molecules per bioproduct per cell bassed on DBEC. DBEC data table is only output if the experiment includes targeted mRNA or AbSeq bioproducts." + example: DBEC_MolsPerCell_MEX.zip + required: false + info: + template: "[sample_name]_DBEC_MolsPerCell_MEX.zip" + - name: "--rsec_mols_per_cell_unfiltered" + type: file + direction: output + description: "Unfiltered tables containing all cell labels with ≥10 reads." + example: RSEC_MolsPerCell_Unfiltered_MEX.zip + required: false + info: + template: "[sample_name]_RSEC_MolsPerCell_Unfiltered_MEX.zip" + - name: "--bam" + type: file + direction: output + description: "Alignment file of R2 with associated R1 annotations for Bioproduct." + example: BioProduct.bam + required: false + info: + template: "[sample_name]_Bioproduct.bam" + - name: "--bam_index" + type: file + direction: output + description: "Index file for the alignment file." + example: BioProduct.bam.bai + required: false + info: + template: "[sample_name]_Bioproduct.bam.bai" + - name: "--bioproduct_stats" + type: file + direction: output + description: "Bioproduct Stats. Metrics from RSEC and DBEC Unique Molecular Identifier adjustment algorithms on a per-bioproduct basis." + example: Bioproduct_Stats.csv + required: false + info: + template: "[sample_name]_Bioproduct_Stats.csv" + - name: "--dimred_tsne" + type: file + direction: output + description: "t-SNE dimensionality reduction coordinates per cell index" + example: tSNE_coordinates.csv + required: false + info: + template: "[sample_name]_(assay)_tSNE_coordinates.csv" + - name: "--dimred_umap" + type: file + direction: output + description: "UMAP dimensionality reduction coordinates per cell index" + example: UMAP_coordinates.csv + required: false + info: + template: "[sample_name]_(assay)_UMAP_coordinates.csv" + - name: "--immune_cell_classification" + type: file + direction: output + description: "Immune Cell Classification. Cell type classification based on the expression of immune cell markers." + example: Immune_Cell_Classification.csv + required: false + info: + template: "[sample_name]_(assay)_cell_type_experimental.csv" + - name: Multiplex outputs + description: Outputs when multiplex option is selected + arguments: + - name: "--sample_tag_metrics" + type: file + direction: output + description: "Sample Tag Metrics. Metrics from the sample determination algorithm." + example: Sample_Tag_Metrics.csv + required: false + info: + template: "[sample_name]_Sample_Tag_Metrics.csv" + - name: "--sample_tag_calls" + type: file + direction: output + description: "Sample Tag Calls. Assigned Sample Tag for each putative cell" + example: Sample_Tag_Calls.csv + required: false + info: + template: "[sample_name]_Sample_Tag_Calls.csv" + - name: "--sample_tag_counts" + type: file + direction: output + description: "Sample Tag Counts. Separate data tables and metric summary for cells assigned to each sample tag. Note: For putative cells that could not be assigned a specific Sample Tag, a Multiplet_and_Undetermined.zip file is also output." + example: Sample_Tag1.zip + required: false + multiple: true + info: + template: "[sample_name]_Sample_Tag[number].zip" + - name: "--sample_tag_counts_unassigned" + type: file + direction: output + description: "Sample Tag Counts Unassigned. Data table and metric summary for cells that could not be assigned a specific Sample Tag." + example: Multiplet_and_Undetermined.zip + required: false + info: + template: "[sample_name]_Multiplet_and_Undetermined.zip" + - name: VDJ Outputs + description: Outputs when VDJ option selected + arguments: + - name: "--vdj_metrics" + type: file + direction: output + description: "VDJ Metrics. Overall metrics from the VDJ analysis." + example: VDJ_Metrics.csv + required: false + info: + template: "[sample_name]_VDJ_Metrics.csv" + - name: "--vdj_per_cell" + type: file + direction: output + description: "VDJ Per Cell. Cell specific read and molecule counts, VDJ gene segments, CDR3 sequences, paired chains, and cell type." + example: VDJ_perCell.csv + required: false + info: + template: "[sample_name]_VDJ_perCell.csv" + - name: "--vdj_per_cell_uncorrected" + type: file + direction: output + description: "VDJ Per Cell Uncorrected. Cell specific read and molecule counts, VDJ gene segments, CDR3 sequences, paired chains, and cell type." + example: VDJ_perCell_uncorrected.csv + required: false + info: + template: "[sample_name]_VDJ_perCell_uncorrected.csv" + - name: "--vdj_dominant_contigs" + type: file + direction: output + description: "VDJ Dominant Contigs. Dominant contig for each cell label chain type combination (putative cells only)." + example: VDJ_Dominant_Contigs_AIRR.csv + required: false + info: + template: "[sample_name]_VDJ_Dominant_Contigs_AIRR.csv" + - name: "--vdj_unfiltered_contigs" + type: file + direction: output + description: "VDJ Unfiltered Contigs. All contigs that were assembled and annotated successfully (all cells)." + example: VDJ_Unfiltered_Contigs_AIRR.csv + required: false + info: + template: "[sample_name]_VDJ_Unfiltered_Contigs_AIRR.csv" + - name: "ATAC-Seq outputs" + description: Outputs when ATAC-Seq option selected + arguments: + - name: "--atac_metrics" + type: file + direction: output + description: "ATAC Metrics. Overall metrics from the ATAC-Seq analysis." + example: ATAC_Metrics.csv + required: false + info: + template: "[sample_name]_ATAC_Metrics.csv" + - name: "--atac_metrics_json" + type: file + direction: output + description: "ATAC Metrics JSON. Overall metrics from the ATAC-Seq analysis in JSON format." + example: ATAC_Metrics.json + required: false + info: + template: "[sample_name]_ATAC_Metrics.json" + - name: "--atac_fragments" + type: file + direction: output + description: "ATAC Fragments. Chromosomal location, cell index, and read support for each fragment detected" + example: ATAC_Fragments.bed.gz + required: false + info: + template: "[sample_name]_ATAC_Fragments.bed.gz" + - name: "--atac_fragments_index" + type: file + direction: output + description: "Index of ATAC Fragments." + example: ATAC_Fragments.bed.gz.tbi + required: false + info: + template: "[sample_name]_ATAC_Fragments.bed.gz.tbi" + - name: "--atac_transposase_sites" + type: file + direction: output + description: "ATAC Transposase Sites. Chromosomal location, cell index, and read support for each transposase site detected" + example: ATAC_Transposase_Sites.bed.gz + required: false + info: + template: "[sample_name]_ATAC_Transposase_Sites.bed.gz" + - name: "--atac_transposase_sites_index" + type: file + direction: output + description: "Index of ATAC Transposase Sites." + example: ATAC_Transposase_Sites.bed.gz.tbi + required: false + info: + template: "[sample_name]_ATAC_Transposase_Sites.bed.gz.tbi" + - name: "--atac_peaks" + type: file + direction: output + description: "ATAC Peaks. Peak regions of transposase activity" + example: ATAC_Peaks.bed.gz + required: false + info: + template: "[sample_name]_ATAC_Peaks.bed.gz" + - name: "--atac_peaks_index" + type: file + direction: output + description: "Index of ATAC Peaks." + example: ATAC_Peaks.bed.gz.tbi + required: false + info: + template: "[sample_name]_ATAC_Peaks.bed.gz.tbi" + - name: "--atac_peak_annotation" + type: file + direction: output + description: "ATAC Peak Annotation. Estimated annotation of peak-to-gene connections" + example: peak_annotation.tsv.gz + required: false + info: + template: "[sample_name]_peak_annotation.tsv.gz" + - name: "--atac_cell_by_peak" + type: file + direction: output + description: "ATAC Cell by Peak. Peak regions of transposase activity per cell" + example: ATAC_Cell_by_Peak_MEX.zip + required: false + info: + template: "[sample_name]_ATAC_Cell_by_Peak_MEX.zip" + - name: "--atac_cell_by_peak_unfiltered" + type: file + direction: output + description: "ATAC Cell by Peak Unfiltered. Unfiltered file containing all cell labels with >=1 transposase sites in peaks." + example: ATAC_Cell_by_Peak_Unfiltered_MEX.zip + required: false + info: + template: "[sample_name]_ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + - name: "--atac_bam" + type: file + direction: output + description: "ATAC BAM. Alignment file for R1 and R2 with associated I2 annotations for ATAC-Seq. Only output if the BAM generation flag is set to true." + example: ATAC.bam + required: false + info: + template: "[sample_name]_ATAC.bam" + - name: "--atac_bam_index" + type: file + direction: output + description: "Index of ATAC BAM." + example: ATAC.bam.bai + required: false + info: + template: "[sample_name]_ATAC.bam.bai" + - name: AbSeq Cell Calling outputs + description: Outputs when Cell Calling Abseq is selected + arguments: + - name: "--protein_aggregates_experimental" + type: file + direction: output + description: "Protein Aggregates Experimental" + example: Protein_Aggregates_Experimental.csv + required: false + info: + template: "[sample_name]_Protein_Aggregates_Experimental.csv" + - name: Putative Cell Calling Settings + arguments: + - name: "--cell_calling_data" + type: string + description: | + Specify the dataset to be used for putative cell calling: mRNA, AbSeq, ATAC, mRNA_and_ATAC + + For putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above. + + For putative cell calling using an ATAC dataset, please provide a WTA+ATAC-Seq Reference_Archive file above. + + The default data for putative cell calling, will be determined the following way: + + - If mRNA Reads and ATAC Reads exist: mRNA_and_ATAC + - If only ATAC Reads exist: ATAC + - Otherwise: mRNA + choices: [mRNA, AbSeq, ATAC, mRNA_and_ATAC] + example: mRNA + info: + config_key: Cell_Calling_Data + - name: "--cell_calling_bioproduct_algorithm" + type: string + description: | + Specify the bioproduct algorithm to be used for putative cell calling: Basic or Refined + + By default, the Basic algorithm will be used for putative cell calling. + choices: [Basic, Refined] + example: Basic + info: + config_key: Cell_Calling_Bioproduct_Algorithm + - name: "--cell_calling_atac_algorithm" + type: string + description: | + Specify the ATAC-seq algorithm to be used for putative cell calling: Basic or Refined + + By default, the Basic algorithm will be used for putative cell calling. + choices: [Basic, Refined] + example: Basic + info: + config_key: Cell_Calling_ATAC_Algorithm + - name: "--exact_cell_count" + type: integer + description: | + Set a specific number (>=1) of cells as putative, based on those with the highest error-corrected read count + example: 10000 + min: 1 + info: + config_key: Exact_Cell_Count + - name: "--expected_cell_count" + type: integer + description: | + Guide the basic putative cell calling algorithm by providing an estimate of the number of cells expected. Usually this can be the number of cells loaded into the Rhapsody cartridge. If there are multiple inflection points on the second derivative cumulative curve, this will ensure the one selected is near the expected. + example: 20000 + min: 1 + info: + config_key: Expected_Cell_Count + - name: Intronic Reads Settings + arguments: + - name: --exclude_intronic_reads + type: boolean + description: | + By default, the flag is false, and reads aligned to exons and introns are considered and represented in molecule counts. When the flag is set to true, intronic reads will be excluded. + The value can be true or false. + example: false + info: + config_key: Exclude_Intronic_Reads + - name: Multiplex Settings + arguments: + - name: "--sample_tags_version" + type: string + description: | + Specify the version of the Sample Tags used in the run: + + * If Sample Tag Multiplexing was done, specify the appropriate version: human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only + * If this is an SMK + Nuclei mRNA run or an SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq) run (and not an SMK + ATAC-Seq only run), choose the "nuclei_includes_mrna" option. + * If this is an SMK + ATAC-Seq only run (and not SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq)), choose the "nuclei_atac_only" option. + choices: [human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only] + example: human + info: + config_key: Sample_Tags_Version + - name: "--tag_names" + type: string + description: | + Specify the tag number followed by '-' and the desired sample name to appear in Sample_Tag_Metrics.csv + Do not use the special characters: &, (), [], {}, <>, ?, | + multiple: true + example: [4-mySample, 9-myOtherSample, 6-alsoThisSample] + info: + config_key: Tag_Names + - name: VDJ arguments + arguments: + - name: "--vdj_version" + type: string + description: | + If VDJ was done, specify the appropriate option: human, mouse, humanBCR, humanTCR, mouseBCR, mouseTCR + choices: [human, mouse, humanBCR, humanTCR, mouseBCR, mouseTCR] + example: human + info: + config_key: VDJ_Version + - name: ATAC options + arguments: + - name: "--predefined_atac_peaks" + type: file + description: An optional BED file containing pre-established chromatin accessibility peak regions for generating the ATAC cell-by-peak matrix. + example: predefined_peaks.bed + info: + config_key: Predefined_ATAC_Peaks + - name: Additional options + arguments: + - name: "--run_name" + type: string + description: | + Specify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces. + default: sample + info: + config_key: Run_Name + - name: "--generate_bam" + type: boolean + description: | + Specify whether to create the BAM file output + default: false + info: + config_key: Generate_Bam + - name: "--long_reads" + type: boolean + description: | + Use STARlong (default: undefined - i.e. autodetects based on read lengths) - Specify if the STARlong aligner should be used instead of STAR. Set to true if the reads are longer than 650bp. + info: + config_key: Long_Reads + - name: Advanced options + description: | + NOTE: Only change these if you are really sure about what you are doing + arguments: + - name: "--custom_star_params" + type: string + description: | + Modify STAR alignment parameters - Set this parameter to fully override default STAR mapping parameters used in the pipeline. + For reference this is the default that is used: + + Short Reads: `--outFilterScoreMinOverLread 0 --outFilterMatchNminOverLread 0 --outFilterMultimapScoreRange 0 --clip3pAdapterSeq AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --seedSearchStartLmax 50 --outFilterMatchNmin 25 --limitOutSJcollapsed 2000000` + Long Reads: Same as Short Reads + `--seedPerReadNmax 10000` + + This applies to fastqs provided in the Reads user input + Do NOT set any non-mapping related params like `--genomeDir`, `--outSAMtype`, `--outSAMunmapped`, `--readFilesIn`, `--runThreadN`, etc. + We use STAR version 2.7.10b + example: "--alignIntronMax 6000 --outFilterScoreMinOverLread 0.1 --limitOutSJcollapsed 2000000" + info: + config_key: Custom_STAR_Params + - name: "--custom_bwa_mem2_params" + type: string + description: | + Modify bwa-mem2 alignment parameters - Set this parameter to fully override bwa-mem2 mapping parameters used in the pipeline + The pipeline does not specify any custom mapping params to bwa-mem2 so program default values are used + This applies to fastqs provided in the Reads_ATAC user input + Do NOT set any non-mapping related params like `-C`, `-t`, etc. + We use bwa-mem2 version 2.2.1 + example: "-k 16 -w 200 -r" + info: + config_key: Custom_bwa_mem2_Params + - name: CWL-runner arguments + arguments: + - name: "--parallel" + type: boolean + description: "Run jobs in parallel." + default: true + - name: "--timestamps" + type: boolean_true + description: "Add timestamps to the errors, warnings, and notifications." + - name: Undocumented arguments + arguments: + - name: --abseq_umi + type: integer + multiple: false + info: + config_key: AbSeq_UMI + - name: --target_analysis + type: boolean + multiple: false + info: + config_key: Target_analysis + - name: --vdj_jgene_evalue + type: double + description: | + e-value threshold for J gene. The e-value threshold for J gene call by IgBlast/PyIR, default is set as 0.001 + multiple: false + info: + config_key: VDJ_JGene_Evalue + - name: --vdj_vgene_evalue + type: double + description: | + e-value threshold for V gene. The e-value threshold for V gene call by IgBlast/PyIR, default is set as 0.001 + multiple: false + info: + config_key: VDJ_VGene_Evalue + - name: --write_filtered_reads + type: boolean + multiple: false + info: + config_key: Write_Filtered_Reads +resources: + - type: python_script + path: script.py +test_resources: + - type: python_script + path: test.py + - path: ../test_data + - path: ../helpers + +requirements: + commands: [ "cwl-runner" ] + +engines: + - type: docker + image: bdgenomics/rhapsody:2.2.1 + setup: + - type: apt + packages: [procps, git] + - type: python + packages: [cwlref-runner, cwl-runner] + - type: docker + run: | + mkdir /var/bd_rhapsody_cwl && \ + cd /var/bd_rhapsody_cwl && \ + git clone https://bitbucket.org/CRSwDev/cwl.git . && \ + git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de + - type: docker + run: + - VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1) + - 'echo "bdgenomics/rhapsody: \"$VERSION\"" > /var/software_versions.txt' + test_setup: + - type: python + packages: [biopython, gffutils] +runners: + - type: executable + - type: nextflow diff --git a/src/bd_rhapsody/bd_rhapsody_sequence_analysis/help.txt b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/help.txt new file mode 100644 index 00000000..618faa3e --- /dev/null +++ b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/help.txt @@ -0,0 +1,167 @@ +```bash +cwl-runner src/bd_rhapsody/bd_rhapsody_sequence_analysis/rhapsody_pipeline_2.2.1_nodocker.cwl --help +``` + +usage: src/bd_rhapsody/bd_rhapsody_sequence_analysis/rhapsody_pipeline_2.2.1_nodocker.cwl + [-h] [--AbSeq_Reference ABSEQ_REFERENCE] [--AbSeq_UMI ABSEQ_UMI] + [--Cell_Calling_ATAC_Algorithm CELL_CALLING_ATAC_ALGORITHM] + [--Cell_Calling_Bioproduct_Algorithm CELL_CALLING_BIOPRODUCT_ALGORITHM] + [--Cell_Calling_Data CELL_CALLING_DATA] + [--Custom_STAR_Params CUSTOM_STAR_PARAMS] + [--Custom_bwa_mem2_Params CUSTOM_BWA_MEM2_PARAMS] + [--Exact_Cell_Count EXACT_CELL_COUNT] [--Exclude_Intronic_Reads] + [--Expected_Cell_Count EXPECTED_CELL_COUNT] [--Generate_Bam] + [--Long_Reads] [--Maximum_Threads MAXIMUM_THREADS] + [--Predefined_ATAC_Peaks PREDEFINED_ATAC_PEAKS] [--Reads READS] + [--Reads_ATAC READS_ATAC] [--Reference_Archive REFERENCE_ARCHIVE] + [--Run_Name RUN_NAME] [--Sample_Tags_Version SAMPLE_TAGS_VERSION] + [--Supplemental_Reference SUPPLEMENTAL_REFERENCE] + [--Tag_Names TAG_NAMES] [--Target_analysis] + [--Targeted_Reference TARGETED_REFERENCE] + [--VDJ_JGene_Evalue VDJ_JGENE_EVALUE] + [--VDJ_VGene_Evalue VDJ_VGENE_EVALUE] [--VDJ_Version VDJ_VERSION] + [--Write_Filtered_Reads] + [job_order] + +The BD Rhapsody™ assays are used to create sequencing libraries from single +cell transcriptomes. After sequencing, the analysis pipeline takes the FASTQ +files and a reference file for gene alignment. The pipeline generates +molecular counts per cell, read counts per cell, metrics, and an alignment +file. + +positional arguments: + job_order Job input json file + +options: + -h, --help show this help message and exit + --AbSeq_Reference ABSEQ_REFERENCE + AbSeq Reference + --AbSeq_UMI ABSEQ_UMI + --Cell_Calling_ATAC_Algorithm CELL_CALLING_ATAC_ALGORITHM + Specify the ATAC algorithm to be used for ATAC + putative cell calling. The Basic algorithm is the + default. + --Cell_Calling_Bioproduct_Algorithm CELL_CALLING_BIOPRODUCT_ALGORITHM + Specify the bioproduct algorithm to be used for + mRNA/AbSeq putative cell calling. The Basic algorithm + is the default. + --Cell_Calling_Data CELL_CALLING_DATA + Specify the data to be used for putative cell calling. + The default data for putative cell calling will be + determined the following way: - If mRNA and ATAC Reads + exist, mRNA_and_ATAC is the default. - If only ATAC + Reads exist, ATAC is the default. - Otherwise, mRNA is + the default. + --Custom_STAR_Params CUSTOM_STAR_PARAMS + Allows you to specify custom STAR aligner mapping + parameters. Only the mapping parameters you provide + here will be used with STAR, meaning that you must + provide the complete list of parameters that you want + to take effect. For reference, the parameters used by + default in the pipeline are: 1. Short Reads: + --outFilterScoreMinOverLread 0 + --outFilterMatchNminOverLread 0 + --outFilterMultimapScoreRange 0 --clip3pAdapterSeq + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + --seedSearchStartLmax 50 --outFilterMatchNmin 25 + --limitOutSJcollapsed 2000000 2. Long Reads: Same + options as short reads + --seedPerReadNmax 10000 + Example input: --alignIntronMax 500000 + --outFilterScoreMinOverLread 0 --limitOutSJcollapsed + 2000000 Important: 1. This applies to fastqs provided + in the Reads user input 2. Please do not specify any + non-mapping related params like: --runThreadN, + --genomeDir --outSAMtype, etc. 3. Please only use + params supported by STAR version 2.7.10b + --Custom_bwa_mem2_Params CUSTOM_BWA_MEM2_PARAMS + Allows you to specify custom bwa-mem2 mapping + parameters. Only the mapping parameters you provide + here will be used with bwa-mem2, meaning that you must + provide the complete list of parameters that you want + to take effect. The pipeline uses program default + mapping parameters. Example input: -k 15 -w 200 -r 2 + Important: 1. This applies to fastqs provided in the + Reads_ATAC user input 2. Please do not specify any + non-mapping related params like: -C, -t, etc. 3. + Please only use params supported by bwa-mem2 version + 2.2.1 + --Exact_Cell_Count EXACT_CELL_COUNT + Set a specific number (>=1) of cells as putative, + based on those with the highest error-corrected read + count + --Exclude_Intronic_Reads + By default, reads aligned to exons and introns are + considered and represented in molecule counts. + Including intronic reads may increase sensitivity, + resulting in an increase in molecule counts and the + number of genes per cell for both cellular and nuclei + samples. Intronic reads may indicate unspliced mRNAs + and are also useful, for example, in the study of + nuclei and RNA velocity. When set to true, intronic + reads will be excluded. + --Expected_Cell_Count EXPECTED_CELL_COUNT + Optional. Guide the basic putative cell calling + algorithm by providing an estimate of the number of + cells expected. Usually this can be the number of + cells loaded into the Rhapsody cartridge. If there are + multiple inflection points on the second derivative + cumulative curve, this will ensure the one selected is + near the expected. + --Generate_Bam Default: false. A Bam read alignment file contains + reads from all the input libraries, but creating it + can consume a lot of compute and disk resources. By + setting this field to true, the Bam file will be + created. This option is shared for both Bioproduct and + ATAC libraries. + --Long_Reads By default, we detect if there are any reads longer + than 650bp and then flag QualCLAlign to use STARlong + instead of STAR. This flag can be explicitly set if it + is known in advance that there are reads longer than + 650bp. + --Maximum_Threads MAXIMUM_THREADS + The maximum number of threads to use in the pipeline. + By default, all available cores are used. + --Predefined_ATAC_Peaks PREDEFINED_ATAC_PEAKS + An optional BED file containing pre-established + chromatin accessibility peak regions for generating + the ATAC cell-by-peak matrix. Only applies to ATAC + assays. + --Reads READS FASTQ files from libraries that may include WTA mRNA, + Targeted mRNA, AbSeq, Sample Multiplexing, and related + technologies + --Reads_ATAC READS_ATAC + FASTQ files from libraries generated using the ATAC + assay protocol. Each lane of a library is expected to + have 3 FASTQs - R1, R2 and I1/I2, where the index read + contains the Cell Barcode and UMI sequence. Only + applies to ATAC assays. + --Reference_Archive REFERENCE_ARCHIVE + Reference Files Archive + --Run_Name RUN_NAME This is a name for output files, for example + Experiment1_Metrics_Summary.csv. Default if left empty + is to name run based on a library. Any non-alpha + numeric characters will be changed to a hyphen. + --Sample_Tags_Version SAMPLE_TAGS_VERSION + The sample multiplexing kit version. This option + should only be set for a multiplexed experiment. + --Supplemental_Reference SUPPLEMENTAL_REFERENCE + Supplemental Reference + --Tag_Names TAG_NAMES + Specify the Sample Tag number followed by - (hyphen) + and a sample name to appear in the output files. For + example: 4-Ramos. Should be alpha numeric, with + - + and _ allowed. Any special characters: &, (), [], {}, + <>, ?, | will be corrected to underscores. + --Target_analysis + --Targeted_Reference TARGETED_REFERENCE + Targeted Reference + --VDJ_JGene_Evalue VDJ_JGENE_EVALUE + The e-value threshold for J gene call by IgBlast/PyIR, + default is set as 0.001 + --VDJ_VGene_Evalue VDJ_VGENE_EVALUE + The e-value threshold for V gene call by IgBlast/PyIR, + default is set as 0.001 + --VDJ_Version VDJ_VERSION + The VDJ species and chain types. This option should + only be set for VDJ experiment. + --Write_Filtered_Reads diff --git a/src/bd_rhapsody/bd_rhapsody_sequence_analysis/pipeline_inputs_template_2.2.1.yaml b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/pipeline_inputs_template_2.2.1.yaml new file mode 100644 index 00000000..19728a57 --- /dev/null +++ b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/pipeline_inputs_template_2.2.1.yaml @@ -0,0 +1,203 @@ +#!/usr/bin/env cwl-runner + +cwl:tool: rhapsody + +# This is a template YML file used to specify the inputs for a BD Rhapsody Sequence Analysis pipeline run. +# See the BD Rhapsody Sequence Analysis Pipeline User Guide for more details. Enter the following information: + + +## Reads (optional) - Path to your FASTQ.GZ formatted read files from libraries that may include: +# - WTA mRNA +# - Targeted mRNA +# - AbSeq +# - Sample Multiplexing +# - VDJ +# You may specify as many R1/R2 read pairs as you want. +Reads: + + - class: File + location: "test/WTALibrary_S1_L001_R1_001.fastq.gz" + + - class: File + location: "test/WTALibrary_S1_L001_R2_001.fastq.gz" + +## Reads_ATAC (optional) - Path to your FASTQ.GZ formatted read files from ATAC-Seq libraries. +## You may specify as many R1/R2/I2 files as you want. +Reads_ATAC: + + - class: File + location: "test/ATACLibrary_S2_L001_R1_001.fastq.gz" + + - class: File + location: "test/ATACLibrary_S2_L001_R2_001.fastq.gz" + + - class: File + location: "test/ATACLibrary_S2_L001_I2_001.fastq.gz" + + +## Assay type will be inferred from the provided reference(s) +## Do not provide both Reference_Archive and Targeted_Reference at the same time +## +## Valid reference input combinations: +## WTA Reference_Archive (WTA only) +## WTA Reference_Archive + AbSeq_Reference (WTA + AbSeq) +## WTA Reference_Archive + Supplemental_Reference (WTA + extra transgenes) +## WTA Reference_Archive + AbSeq_Reference + Supplemental_Reference (WTA + AbSeq + extra transgenes) +## WTA+ATAC-Seq Reference_Archive (WTA + ATAC, ATAC only) +## WTA+ATAC-Seq Reference_Archive + Supplemental_Reference (WTA + ATAC + extra transgenes) +## Targeted_Reference (Targeted only) +## Targeted_Reference + AbSeq_Reference (Targeted + AbSeq) +## AbSeq_Reference (AbSeq only) + +## See the BD Rhapsody Sequence Analysis Pipeline User Guide for instructions on how to: +## - Obtain a pre-built Rhapsody Reference file +## - Create a custom Rhapsody Reference file + +## WTA Reference_Archive (required for WTA mRNA assay) - Path to Rhapsody WTA Reference in the tar.gz format. +## +## --Structure of reference archive-- +## BD_Rhapsody_Reference_Files/ # top level folder +## star_index/ # sub-folder containing STAR index +## [files created with STAR --runMode genomeGenerate] +## [GTF for gene-transcript-annotation e.g. "gencode.v43.primary_assembly.annotation.gtf"] +## +## WTA+ATAC-Seq Reference_Archive (required for ATAC-Seq or Multiomic ATAC-Seq (WTA+ATAC-Seq) assays) - Path to Rhapsody WTA+ATAC-Seq Reference in the tar.gz format. +## +## --Structure of reference archive-- +## BD_Rhapsody_Reference_Files/ # top level folder +## star_index/ # sub-folder containing STAR index +## [files created with STAR --runMode genomeGenerate] +## [GTF for gene-transcript-annotation e.g. "gencode.v43.primary_assembly.annotation.gtf"] +## +## mitochondrial_contigs.txt # mitochondrial contigs in the reference genome - one contig name per line. e.g. chrMT or chrM, etc. +## +## bwa-mem2_index/ # sub-folder containing bwa-mem2 index +## [files created with bwa-mem2 index] +## +Reference_Archive: + class: File + location: "test/RhapRef_Human_WTA_2023-02.tar.gz" +# location: "test/RhapRef_Human_WTA-ATAC_2023-08.tar.gz" + +## Targeted_Reference (required for Targeted mRNA assay) - Path to the targeted reference file in FASTA format. +#Targeted_Reference: +# - class: File +# location: "test/BD_Rhapsody_Immune_Response_Panel_Hs.fasta" + +## AbSeq_Reference (optional) - Path to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used. +## For putative cell calling using an AbSeq dataset, please provide an AbSeq reference fasta file as the AbSeq_Reference. +#AbSeq_Reference: +# - class: File +# location: "test/AbSeq_reference.fasta" + +## Supplemental_Reference (optional) - Path to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences to be aligned against in a WTA assay experiment +#Supplemental_Reference: +# - class: File +# location: "test/supplemental_reference.fasta" + +#################################### +## Putative Cell Calling Settings ## +#################################### + +## Putative cell calling dataset (optional) - Specify the dataset to be used for putative cell calling: mRNA, AbSeq, ATAC, mRNA_and_ATAC +## For putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above. +## For putative cell calling using an ATAC dataset, please provide a WTA+ATAC-Seq Reference_Archive file above. +## The default data for putative cell calling, will be determined the following way: +## If mRNA Reads and ATAC Reads exist: +## Cell_Calling_Data: mRNA_and_ATAC +## If only ATAC Reads exist: +## Cell_Calling_Data: ATAC +## Otherwise: +## Cell_Calling_Data: mRNA +#Cell_Calling_Data: mRNA + +## Putative cell calling bioproduct algorithm (optional) - Specify the bioproduct algorithm to be used for putative cell calling: Basic or Refined +## By default, the Basic algorithm will be used for putative cell calling. +#Cell_Calling_Bioproduct_Algorithm: Basic + +## Putative cell calling ATAC algorithm (optional) - Specify the ATAC-seq algorithm to be used for putative cell calling: Basic or Refined +## By default, the Basic algorithm will be used for putative cell calling. +#Cell_Calling_ATAC_Algorithm: Basic + +## Exact cell count (optional) - Set a specific number (>=1) of cells as putative, based on those with the highest error-corrected read count +#Exact_Cell_Count: 10000 + +## Expected Cell Count (optional) - Guide the basic putative cell calling algorithm by providing an estimate of the number of cells expected. Usually this can be the number of cells loaded into the Rhapsody cartridge. If there are multiple inflection points on the second derivative cumulative curve, this will ensure the one selected is near the expected. +#Expected_Cell_Count: 20000 + + +#################################### +## Intronic Reads Settings ## +#################################### + +## Exclude_Intronic_Reads (optional) +## By default, the flag is false, and reads aligned to exons and introns are considered and represented in molecule counts. When the flag is set to true, intronic reads will be excluded. +## The value can be true or false. +#Exclude_Intronic_Reads: true + +####################### +## Multiplex options ## +####################### + +## Sample Tags Version (optional) - If Sample Tag Multiplexing was done, specify the appropriate version: human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only +## If this is an SMK + Nuclei mRNA run or an SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq) run (and not an SMK + ATAC-Seq only run), choose the "nuclei_includes_mrna" option. +## If this is an SMK + ATAC-Seq only run (and not SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq)), choose the "nuclei_atac_only" option. +#Sample_Tags_Version: human + +## Tag_Names (optional) - Specify the tag number followed by '-' and the desired sample name to appear in Sample_Tag_Metrics.csv +# Do not use the special characters: &, (), [], {}, <>, ?, | +#Tag_Names: [4-mySample, 9-myOtherSample, 6-alsoThisSample] + +################ +## VDJ option ## +################ + +## VDJ Version (optional) - If VDJ was done, specify the appropriate option: human, mouse, humanBCR, humanTCR, mouseBCR, mouseTCR +#VDJ_Version: human + +################## +## ATAC options ## +################## + +## Predefined ATAC Peaks - An optional BED file containing pre-established chromatin accessibility peak regions for generating the ATAC cell-by-peak matrix. +#Predefined_ATAC_Peaks: +# class: File +# location: "path/predefined_peaks.bed" + +######################## +## Additional Options ## +######################## + +## Run Name (optional)- Specify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces. +#Run_Name: my-experiment + +## Generate Bam (optional, default: false) - Specify whether to create the BAM file output +#Generate_Bam: true + +## Maximum_Threads (integer, optional, default: [use all cores of CPU]) - Set the maximum number of threads to use in the read processing steps of the pipeline: QualCLAlign, AlignmentAnalysis, VDJ assembly +#Maximum_Threads: 16 + +## Use STARlong (optional, default: "auto" - i.e. autodetects based on read lengths) - Specify if the STARlong aligner should be used instead of STAR. Set to true if the reads are longer than 650bp. +## The value can be true or false. +#Long_Reads: true + +######################## +## Advanced Options ## +######################## +## NOTE: Only change these if you are really sure about what you are doing + +## Modify STAR alignment parameters - Set this parameter to fully override default STAR mapping parameters used in the pipeline. +## For reference this is the default that is used: +## Short Reads: --outFilterScoreMinOverLread 0 --outFilterMatchNminOverLread 0 --outFilterMultimapScoreRange 0 --clip3pAdapterSeq AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --seedSearchStartLmax 50 --outFilterMatchNmin 25 --limitOutSJcollapsed 2000000 +## Long Reads: Same as Short Reads + --seedPerReadNmax 10000 +## This applies to fastqs provided in the Reads user input +## Do NOT set any non-mapping related params like --genomeDir, --outSAMtype, --outSAMunmapped, --readFilesIn, --runThreadN, etc. +## We use STAR version 2.7.10b +#Custom_STAR_Params: --alignIntronMax 6000 --outFilterScoreMinOverLread 0.1 --limitOutSJcollapsed 2000000 + +## Modify bwa-mem2 alignment parameters - Set this parameter to fully override bwa-mem2 mapping parameters used in the pipeline +## The pipeline does not specify any custom mapping params to bwa-mem2 so program default values are used +## This applies to fastqs provided in the Reads_ATAC user input +## Do NOT set any non-mapping related params like -C, -t, etc. +## We use bwa-mem2 version 2.2.1 +#Custom_bwa_mem2_Params: -k 16 -w 200 -r diff --git a/src/bd_rhapsody/bd_rhapsody_sequence_analysis/script.py b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/script.py new file mode 100644 index 00000000..cbddf6bf --- /dev/null +++ b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/script.py @@ -0,0 +1,243 @@ +import os +import re +import subprocess +import tempfile +from typing import Any +import yaml +import shutil +import glob + +## VIASH START +par = { + 'reads': [ + 'resources_test/bdrhap_5kjrt/raw/12ABC_S1_L432_R1_001_subset.fastq.gz', + 'resources_test/bdrhap_5kjrt/raw/12ABC_S1_L432_R2_001_subset.fastq.gz' + ], + 'reads_atac': None, + 'reference_archive': "resources_test/reference_gencodev41_chr1/reference_bd_rhapsody.tar.gz", + 'targeted_reference': [], + 'abseq_reference': [], + 'supplemental_reference': [], + 'output': 'output_dir', + 'cell_calling_data': None, + 'cell_calling_bioproduct_algorithm': None, + 'cell_calling_atac_algorithm': None, + 'exact_cell_count': None, + 'expected_cell_count': None, + 'exclude_intronic_reads': None, + 'sample_tags_version': None, + 'tag_names': [], + 'vdj_version': None, + 'predefined_atac_peaks': None, + 'run_name': "sample", + 'generate_bam': None, + 'alignment_star_params': None, + 'alignment_bwa_mem2_params': None, + 'parallel': True, + 'timestamps': False, + 'dryrun': False +} +meta = { + 'config': "target/nextflow/bd_rhaspody/bd_rhaspody_sequence_analysis/.config.vsh.yaml", + 'resources_dir': os.path.abspath('src/bd_rhaspody/bd_rhaspody_sequence_analysis'), + 'temp_dir': os.getenv("VIASH_TEMP"), + 'memory_mb': None, + 'cpus': None +} +## VIASH END + +def clean_arg(argument): + argument["clean_name"] = argument["name"].lstrip("-") + return argument + +def read_config(path: str) -> dict[str, Any]: + with open(path, 'r') as f: + config = yaml.safe_load(f) + + config["arguments"] = [ + clean_arg(arg) + for grp in config["argument_groups"] + for arg in grp["arguments"] + ] + + return config + +def strip_margin(text: str) -> str: + return re.sub('(\n?)[ \t]*\|', '\\1', text) + +def process_params(par: dict[str, Any], config, temp_dir: str) -> str: + # check input parameters + assert par["reads"] or par["reads_atac"], "Pass at least one set of inputs to --reads or --reads_atac." + + # output to temp dir if output_dir was not passed + if not par["output_dir"]: + par["output_dir"] = os.path.join(temp_dir, "output") + + # checking sample prefix + if par["run_name"] and re.match("[^A-Za-z0-9]", par["run_name"]): + print("--run_name should only consist of letters, numbers or hyphens. Replacing all '[^A-Za-z0-9]' with '-'.", flush=True) + par["run_name"] = re.sub("[^A-Za-z0-9\\-]", "-", par["run_name"]) + + # make paths absolute + for argument in config["arguments"]: + arg_clean_name = argument["clean_name"] + if not par[arg_clean_name] or not argument["type"] == "file": + continue + par_value = par[arg_clean_name] + if isinstance(par_value, list): + par_value_absolute = list(map(os.path.abspath, par_value)) + else: + par_value_absolute = os.path.abspath(par_value) + par[arg_clean_name] = par_value_absolute + + return par + +def generate_config(par: dict[str, Any], config) -> str: + content_list = [strip_margin(f"""\ + |#!/usr/bin/env cwl-runner + | + |cwl:tool: rhapsody + |""")] + + for argument in config["arguments"]: + arg_clean_name = argument["clean_name"] + arg_par_value = par[arg_clean_name] + arg_info = argument.get("info") or {} # Note: .info might be None + config_key = arg_info.get("config_key") + if arg_par_value and config_key: + + if argument["type"] == "file": + content = strip_margin(f"""\ + |{config_key}: + |""") + if isinstance(arg_par_value, list): + for file in arg_par_value: + content += strip_margin(f"""\ + | - class: File + | location: "{file}" + |""") + else: + content += strip_margin(f"""\ + | class: File + | location: "{arg_par_value}" + |""") + content_list.append(content) + else: + content_list.append(strip_margin(f"""\ + |{config_key}: {arg_par_value} + |""")) + + ## Write config to file + return ''.join(content_list) + +def generate_config_file(par: dict[str, Any], config: dict[str, Any], temp_dir: str) -> str: + config_file = os.path.join(temp_dir, "config.yml") + config_content = generate_config(par, config) + with open(config_file, "w") as f: + f.write(config_content) + return config_file + +def generate_cwl_file(meta: dict[str, Any], dir: str) -> str: + # create cwl file (if need be) + # orig_cwl_file=os.path.join(meta["resources_dir"], "rhapsody_pipeline_2.2.1_nodocker.cwl") + orig_cwl_file="/var/bd_rhapsody_cwl/v2.2.1/rhapsody_pipeline_2.2.1.cwl" + + if not meta["memory_mb"] and not meta["cpus"]: + return os.path.abspath(orig_cwl_file) + + # Inject computational requirements into pipeline + cwl_file = os.path.join(dir, "pipeline.cwl") + + # Read in the file + with open(orig_cwl_file, 'r') as file : + cwl_data = file.read() + + # Inject computational requirements into pipeline + if meta["memory_mb"]: + memory = int(meta["memory_mb"]) - 2000 # keep 2gb for OS + cwl_data = re.sub('"ramMin": [^\n]*[^,](,?)\n', f'"ramMin": {memory}\\1\n', cwl_data) + if meta["cpus"]: + cwl_data = re.sub('"coresMin": [^\n]*[^,](,?)\n', f'"coresMin": {meta["cpus"]}\\1\n', cwl_data) + + # Write the file out again + with open(cwl_file, 'w') as file: + file.write(cwl_data) + + return os.path.abspath(cwl_file) + +def copy_outputs(par: dict[str, Any], config: dict[str, Any]): + for arg in config["arguments"]: + par_value = par[arg["clean_name"]] + if par_value and arg["type"] == "file" and arg["direction"] == "output": + # example template: '[sample_name]_(assay)_cell_type_experimental.csv' + template = (arg.get("info") or {}).get("template") # Note: .info might be None + if template: + template_glob = template\ + .replace("[sample_name]", par["run_name"])\ + .replace("(assay)", "*")\ + .replace("[number]", "*") + files = glob.glob(os.path.join(par["output_dir"], template_glob)) + if not files and arg["required"]: + raise ValueError(f"Expected output file '{template_glob}' not found.") + elif len(files) > 1 and not arg["multiple"]: + raise ValueError(f"Expected single output file '{template_glob}', but found multiple.") + + if not arg["multiple"]: + shutil.copy(files[0], par_value) + else: + # replace '*' in par_value with index + for i, file in enumerate(files): + shutil.copy(file, par_value.replace("*", str(i))) + + +def main(par: dict[str, Any], meta: dict[str, Any], temp_dir: str): + config = read_config(meta["config"]) + + # Preprocess params + par = process_params(par, config, temp_dir) + + ## Process parameters + cmd = [ + "cwl-runner", + "--no-container", + "--preserve-entire-environment", + "--outdir", par["output_dir"], + ] + + if par["parallel"]: + cmd.append("--parallel") + + if par["timestamps"]: + cmd.append("--timestamps") + + # Create cwl file (if need be) + cwl_file = generate_cwl_file(meta, temp_dir) + cmd.append(cwl_file) + + # Create params file + config_file = generate_config_file(par, config, temp_dir) + cmd.append(config_file) + + # keep environment variables but set TMPDIR to temp_dir + env = dict(os.environ) + env["TMPDIR"] = temp_dir + + # Create output dir if not exists + if not os.path.exists(par["output_dir"]): + os.makedirs(par["output_dir"]) + + # Run command + print("> " + ' '.join(cmd), flush=True) + _ = subprocess.run( + cmd, + cwd=os.path.dirname(config_file), + env=env, + check=True + ) + + # Copy outputs + copy_outputs(par, config) + +if __name__ == "__main__": + with tempfile.TemporaryDirectory(prefix="cwl-bd_rhapsody-", dir=meta["temp_dir"]) as temp_dir: + main(par, meta, temp_dir) diff --git a/src/bd_rhapsody/bd_rhapsody_sequence_analysis/test.py b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/test.py new file mode 100644 index 00000000..aed8e80b --- /dev/null +++ b/src/bd_rhapsody/bd_rhapsody_sequence_analysis/test.py @@ -0,0 +1,494 @@ +import subprocess +import gzip +from pathlib import Path +from typing import Tuple +import numpy as np +import random +import mudata as md + +## VIASH START +meta = { + "name": "bd_rhapsody_sequence_analysis", + "executable": "target/docker/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis", + "resources_dir": "src/bd_rhapsody", + "cpus": 8, + "memory_mb": 4096, +} +## VIASH END + +import sys +sys.path.append(meta["resources_dir"]) + +from helpers.rhapsody_cell_label import index_to_sequence + +meta["executable"] = Path(meta["executable"]) +meta["resources_dir"] = Path(meta["resources_dir"]) + +######################################################################################### + +# Generate index +print("> Generate index", flush=True) +# cwl_file = meta["resources_dir"] / "bd_rhapsody_make_reference.cwl" +cwl_file = "/var/bd_rhapsody_cwl/v2.2.1/Extra_Utilities/make_rhap_reference_2.2.1.cwl" +reference_small_gtf = meta["resources_dir"] / "test_data" / "reference_small.gtf" +reference_small_fa = meta["resources_dir"] / "test_data" / "reference_small.fa" +bdabseq_panel_fa = meta["resources_dir"] / "test_data" / "BDAbSeq_ImmuneDiscoveryPanel.fasta" +sampletagsequences_fa = meta["resources_dir"] / "test_data" / "SampleTagSequences_HomoSapiens_ver1.fasta" + +config_file = Path("reference_config.yml") +reference_file = Path("Rhap_reference.tar.gz") + +subprocess.run([ + "cwl-runner", + "--no-container", + "--preserve-entire-environment", + "--outdir", + ".", + str(cwl_file), + "--Genome_fasta", + str(reference_small_fa), + "--Gtf", + str(reference_small_gtf), + "--Extra_STAR_params", + "--genomeSAindexNbases 4" +]) + +######################################################################################### +# Load reference in memory + +from Bio import SeqIO +import gffutils + +# Load FASTA sequence +with open(str(reference_small_fa), "r") as handle: + reference_fasta_dict = SeqIO.to_dict(SeqIO.parse(handle, "fasta")) +with open(str(bdabseq_panel_fa), "r") as handle: + bdabseq_panel_fasta_dict = SeqIO.to_dict(SeqIO.parse(handle, "fasta")) +with open(str(sampletagsequences_fa), "r") as handle: + sampletagsequences_fasta_dict = SeqIO.to_dict(SeqIO.parse(handle, "fasta")) + +# create in memory db +reference_gtf_db = gffutils.create_db( + str(reference_small_gtf), + dbfn=":memory:", + force=True, + keep_order=True, + merge_strategy="merge", + sort_attribute_values=True, + disable_infer_transcripts=True, + disable_infer_genes=True +) + +############################################# +# TODO: move helper functions to separate helper file + + +def generate_bd_read_metadata( + instrument_id: str = "A00226", + run_id: str = "970", + flowcell_id: str = "H5FGVMXY", + lane: int = 1, + tile: int = 1101, + x: int = 1000, + y: int = 1000, + illumina_flag: str = "1:N:0", + sample_id: str = "CAGAGAGG", +) -> str: + """ + Generate a FASTQ metadata line for a BD Rhapsody FASTQ file. + + Args: + instrument_id: The instrument ID. + run_id: The run ID. + flowcell_id: The flowcell ID. + lane: The lane number. + tile: The tile number. Between 1101 and 1112 in the used example data. + x: The x-coordinate. Between 1000 and 32967 in the used example data. + y: The y-coordinate. Between 1000 and 37059 in the used example data. + illumina_flag: The Illumina flag. Either 1:N:0 or 2:N:0 in the used example data. + sample_id: The sample ID. + """ + # format: @A00226:970:H5FGVDMXY:1:1101:2645:1000 2:N:0:CAGAGAGG + return f"@{instrument_id}:{run_id}:{flowcell_id}:{lane}:{tile}:{x}:{y} {illumina_flag}:{sample_id}" + + +def generate_bd_wta_transcript( + transcript_length: int = 42, +) -> str: + """ + Generate a WTA transcript from a given GTF and FASTA file. + """ + + # Randomly select a gene + gene = random.choice(list(reference_gtf_db.features_of_type("gene"))) + + # Find all exons within the gene + exons = list(reference_gtf_db.children(gene, featuretype="exon", order_by="start")) + + # Calculate total exon length + total_exon_length = sum(exon.end - exon.start + 1 for exon in exons) + + # If total exon length is less than desired transcript length, use it as is + max_transcript_length = min(total_exon_length, transcript_length) + + # Build the WTA transcript sequence + sequence = "" + for exon in exons: + exon_seq = str(reference_fasta_dict[exon.seqid].seq[exon.start - 1 : exon.end]) + sequence += exon_seq + + # Break if desired length is reached + if len(sequence) >= max_transcript_length: + sequence = sequence[:max_transcript_length] + break + + # add padding if need be + if len(sequence) < max_transcript_length: + sequence += "N" * (max_transcript_length - len(sequence)) + + return sequence + + +def generate_bd_wta_read( + cell_index: int = 0, + bead_version: str = "EnhV2", + umi_length: int = 14, + transcript_length: int = 42, +) -> Tuple[str, str]: + """ + Generate a BD Rhapsody WTA read pair for a given cell index. + + Args: + cell_index: The cell index to generate reads for. + bead_version: The bead version to use for generating the cell label. + umi_length: The length of the UMI to generate. + transcript_length: The length of the transcript to generate + + Returns: + A tuple of two strings, the first string being the R1 read and the second string being the R2 read. + + More info: + + See structure of reads: + - https://bd-rhapsody-bioinfo-docs.genomics.bd.com/steps/top_steps.html + - https://bd-rhapsody-bioinfo-docs.genomics.bd.com/steps/steps_cell_label.html + - https://scomix.bd.com/hc/en-us/articles/360057714812-All-FAQ + R1 is Cell Label + UMI + PolyT -> 60 bp + actually, CLS1 + "GTGA" + CLS2 + "GACA" + CLS3 + UMI + R2 is the actual read -> 42 bp + + Example R1 + CLS1 Link CLS2 Link CLS3 UMI + AAAATCCTGT GTGA AACCAAAGT GACA GATAGAGGAG CGCATGTTTATAAC + """ + + # generate metadata + per_row = np.floor((32967 - 1000) / 9) + per_col = np.floor((37059 - 1000) / 9) + + assert cell_index >= 0 and cell_index < per_row * per_col, f"cell_index must be between 0 and {per_row} * {per_col}" + x = 1000 + (cell_index % per_row) * 9 + y = 1000 + (cell_index // per_row) * 9 + instrument_id = "A00226" + run_id = "970" + flowcell_id = "H5FGVMXY" + meta_r1 = generate_bd_read_metadata(instrument_id=instrument_id, run_id=run_id, flowcell_id=flowcell_id, x=x, y=y, illumina_flag="1:N:0") + meta_r2 = generate_bd_read_metadata(instrument_id=instrument_id, run_id=run_id, flowcell_id=flowcell_id, x=x, y=y, illumina_flag="2:N:0") + + # generate r1 (cls1 + link + cls2 + link + cls3 + umi) + assert cell_index >= 0 and cell_index < 384 * 384 * 384 + cell_label = index_to_sequence(cell_index + 1, bead_version=bead_version) + # sample random umi + umi = "".join(random.choices("ACGT", k=umi_length)) + quality_r1 = "I" * (len(cell_label) + len(umi)) + r1 = f"{meta_r1}\n{cell_label}{umi}\n+\n{quality_r1}\n" + + # generate r2 by extracting sequence from fasta and gtf + wta_transcript = generate_bd_wta_transcript(transcript_length=transcript_length) + quality_r2 = "I" * transcript_length + r2 = f"{meta_r2}\n{wta_transcript}\n+\n{quality_r2}\n" + + return r1, r2 + +def generate_bd_wta_fastq_files( + num_cells: int = 100, + num_reads_per_cell: int = 1000, +) -> Tuple[str, str]: + """ + Generate BD Rhapsody WTA FASTQ files for a given number of cells and transcripts per cell. + + Args: + num_cells: The number of cells to generate + num_reads_per_cell: The number of reads to generate per cell + + Returns: + A tuple of two strings, the first string being the R1 reads and the second string being the R2 reads. + """ + r1_reads = "" + r2_reads = "" + for cell_index in range(num_cells): + for _ in range(num_reads_per_cell): + r1, r2 = generate_bd_wta_read(cell_index) + r1_reads += r1 + r2_reads += r2 + + return r1_reads, r2_reads + +def generate_bd_abc_read( + cell_index: int = 0, + bead_version: str = "EnhV2", + umi_length: int = 14, + transcript_length: int = 72, +) -> Tuple[str, str]: + """ + Generate a BD Rhapsody ABC read pair for a given cell index. + + Args: + cell_index: The cell index to generate reads for. + bead_version: The bead version to use for generating the cell label. + umi_length: The length of the UMI to generate. + transcript_length: The length of the transcript to generate + + Returns: + A tuple of two strings, the first string being the R1 read and the second string being the R2 read. + """ + # generate metadata + per_row = np.floor((32967 - 1000) / 9) + per_col = np.floor((37059 - 1000) / 9) + + assert cell_index >= 0 and cell_index < per_row * per_col, f"cell_index must be between 0 and {per_row} * {per_col}" + x = 1000 + (cell_index % per_row) * 9 + y = 1000 + (cell_index // per_row) * 9 + instrument_id = "A01604" + run_id = "19" + flowcell_id = "HMKLYDRXY" + meta_r1 = generate_bd_read_metadata(instrument_id=instrument_id, run_id=run_id, flowcell_id=flowcell_id, x=x, y=y, illumina_flag="1:N:0") + meta_r2 = generate_bd_read_metadata(instrument_id=instrument_id, run_id=run_id, flowcell_id=flowcell_id, x=x, y=y, illumina_flag="2:N:0") + + # generate r1 (cls1 + link + cls2 + link + cls3 + umi) + assert cell_index >= 0 and cell_index < 384 * 384 * 384 + cell_label = index_to_sequence(cell_index + 1, bead_version=bead_version) + # sample random umi + umi = "".join(random.choices("ACGT", k=umi_length)) + quality_r1 = "I" * (len(cell_label) + len(umi)) + r1 = f"{meta_r1}\n{cell_label}{umi}\n+\n{quality_r1}\n" + + # generate r2 by sampling sequence from bdabseq_panel_fa + abseq_seq = str(random.choice(list(bdabseq_panel_fasta_dict.values())).seq) + abc_suffix = "AAAAAAAAAAAAAAAAAAAAAAA" + abc_data = abseq_seq[:transcript_length - len(abc_suffix) - 1] + abc_prefix = "N" + "".join(random.choices("ACGT", k=transcript_length - len(abc_data) - len(abc_suffix) - 1)) + + abc_transcript = f"{abc_prefix}{abc_data}{abc_suffix}" + + quality_r2 = "#" + "I" * (len(abc_transcript) - 1) + r2 = f"{meta_r2}\n{abc_transcript}\n+\n{quality_r2}\n" + + return r1, r2 + +def generate_bd_abc_fastq_files( + num_cells: int = 100, + num_reads_per_cell: int = 1000, +) -> Tuple[str, str]: + """ + Generate BD Rhapsody ABC FASTQ files for a given number of cells and transcripts per cell. + + Args: + num_cells: The number of cells to generate + num_reads_per_cell: The number of reads to generate per cell + + Returns: + A tuple of two strings, the first string being the R1 reads and the second string being the R2 reads. + """ + r1_reads = "" + r2_reads = "" + for cell_index in range(num_cells): + for _ in range(num_reads_per_cell): + r1, r2 = generate_bd_abc_read(cell_index) + r1_reads += r1 + r2_reads += r2 + + return r1_reads, r2_reads + +def generate_bd_smk_read( + cell_index: int = 0, + bead_version: str = "EnhV2", + umi_length: int = 14, + transcript_length: int = 72, + num_sample_tags: int = 3, +): + """ + Generate a BD Rhapsody SMK read pair for a given cell index. + + Args: + cell_index: The cell index to generate reads for. + bead_version: The bead version to use for generating the cell label. + umi_length: The length of the UMI to generate. + transcript_length: The length of the transcript to generate + num_sample_tags: The number of sample tags to use + + Returns: + A tuple of two strings, the first string being the R1 read and the second string being the R2 read. + """ + # generate metadata + per_row = np.floor((32967 - 1000) / 9) + per_col = np.floor((37059 - 1000) / 9) + + assert cell_index >= 0 and cell_index < per_row * per_col, f"cell_index must be between 0 and {per_row} * {per_col}" + x = 1000 + (cell_index % per_row) * 9 + y = 1000 + (cell_index // per_row) * 9 + instrument_id = "A00226" + run_id = "970" + flowcell_id = "H5FGVDMXY" + + meta_r1 = generate_bd_read_metadata(instrument_id=instrument_id, run_id=run_id, flowcell_id=flowcell_id, x=x, y=y, illumina_flag="1:N:0") + meta_r2 = generate_bd_read_metadata(instrument_id=instrument_id, run_id=run_id, flowcell_id=flowcell_id, x=x, y=y, illumina_flag="2:N:0") + + # generate r1 (cls1 + link + cls2 + link + cls3 + umi) + assert cell_index >= 0 and cell_index < 384 * 384 * 384 + cell_label = index_to_sequence(cell_index + 1, bead_version=bead_version) + # sample random umi + umi = "".join(random.choices("ACGT", k=umi_length)) + quality_r1 = "I" * (len(cell_label) + len(umi)) + r1 = f"{meta_r1}\n{cell_label}{umi}\n+\n{quality_r1}\n" + + # generate r2 by selecting the cell_index %% num_sample_tags sample tags + sampletag_index = cell_index % num_sample_tags + sampletag_seq = str(list(sampletagsequences_fasta_dict.values())[sampletag_index].seq) + smk_data = sampletag_seq[:transcript_length] + smk_suffix = "A" * (transcript_length - len(smk_data)) + quality_r2 = "I" * len(smk_data) + "#" * len(smk_suffix) + r2 = f"{meta_r2}\n{smk_data}{smk_suffix}\n+\n{quality_r2}\n" + + return r1, r2 + +def generate_bd_smk_fastq_files( + num_cells: int = 100, + num_reads_per_cell: int = 1000, + num_sample_tags: int = 3, +) -> Tuple[str, str]: + """ + Generate BD Rhapsody SMK FASTQ files for a given number of cells and transcripts per cell. + + Args: + num_cells: The number of cells to generate + num_reads_per_cell: The number of reads to generate per cell + num_sample_tags: The number of sample tags to use + + Returns: + A tuple of two strings, the first string being the R1 reads and the second string being the R2 reads. + """ + r1_reads = "" + r2_reads = "" + for cell_index in range(num_cells): + for _ in range(num_reads_per_cell): + r1, r2 = generate_bd_smk_read(cell_index, num_sample_tags=num_sample_tags) + r1_reads += r1 + r2_reads += r2 + + return r1_reads, r2_reads + +######################################################################################### + +# Prepare WTA, ABC, and SMK test data +print("> Prepare WTA test data", flush=True) +wta_reads_r1_str, wta_reads_r2_str = generate_bd_wta_fastq_files(num_cells=100, num_reads_per_cell=1000) +with gzip.open("WTAreads_R1.fq.gz", "wt") as f: + f.write(wta_reads_r1_str) +with gzip.open("WTAreads_R2.fq.gz", "wt") as f: + f.write(wta_reads_r2_str) + +print("> Prepare ABC test data", flush=True) +abc_reads_r1_str, abc_reads_r2_str = generate_bd_abc_fastq_files(num_cells=100, num_reads_per_cell=1000) +with gzip.open("ABCreads_R1.fq.gz", "wt") as f: + f.write(abc_reads_r1_str) +with gzip.open("ABCreads_R2.fq.gz", "wt") as f: + f.write(abc_reads_r2_str) + +print("> Prepare SMK test data", flush=True) +smk_reads_r1_str, smk_reads_r2_str = generate_bd_smk_fastq_files(num_cells=100, num_reads_per_cell=1000, num_sample_tags=3) +with gzip.open("SMKreads_R1.fq.gz", "wt") as f: + f.write(smk_reads_r1_str) +with gzip.open("SMKreads_R2.fq.gz", "wt") as f: + f.write(smk_reads_r2_str) + +######################################################################################### + +# Run executable +print(f">> Run {meta['name']}", flush=True) +output_dir = Path("output") +subprocess.run([ + meta['executable'], + "--reads=WTAreads_R1.fq.gz;WTAreads_R2.fq.gz", + f"--reference_archive={reference_file}", + "--reads=ABCreads_R1.fq.gz;ABCreads_R2.fq.gz", + f"--abseq_reference={bdabseq_panel_fa}", + "--reads=SMKreads_R1.fq.gz;SMKreads_R2.fq.gz", + "--tag_names=1-Sample1;2-Sample2;3-Sample3", + "--sample_tags_version=human", + "--output_dir=output", + "--exact_cell_count=100", + f"---cpus={meta['cpus'] or 1}", + f"---memory={meta['memory_mb'] or 2048}mb", + # "--output_seurat=seurat.rds", + "--output_mudata=mudata.h5mu", + "--metrics_summary=metrics_summary.csv", + "--pipeline_report=pipeline_report.html", +]) + + +# Check if output exists +print(">> Check if output exists", flush=True) +assert (output_dir / "sample_Bioproduct_Stats.csv").exists() +assert (output_dir / "sample_Metrics_Summary.csv").exists() +assert (output_dir / "sample_Pipeline_Report.html").exists() +assert (output_dir / "sample_RSEC_MolsPerCell_MEX.zip").exists() +assert (output_dir / "sample_RSEC_MolsPerCell_Unfiltered_MEX.zip").exists() +# seurat object is not generated when abc data is added +# assert (output_dir / "sample_Seurat.rds").exists() +assert (output_dir / "sample.h5mu").exists() + +# check individual outputs +# assert Path("seurat.rds").exists() +assert Path("mudata.h5mu").exists() +assert Path("metrics_summary.csv").exists() +assert Path("pipeline_report.html").exists() + +print(">> Check contents of output", flush=True) +data = md.read_h5mu("mudata.h5mu") + +assert data.n_obs == 100, "Number of cells is incorrect" +assert "rna" in data.mod, "RNA data is missing" +assert "prot" in data.mod, "Protein data is missing" + +# check rna data +data_rna = data.mod["rna"] +assert data_rna.n_vars == 1, "Number of genes is incorrect" +assert data_rna.X.sum(axis=1).min() > 950, "Number of reads per cell is incorrect" +# assert data_rna.var.Raw_Reads.sum() == 100000, "Number of reads is incorrect" +assert data_rna.var.Raw_Reads.sum() >= 99990 and data_rna.var.Raw_Reads.sum() <= 100010, \ + f"Expected 100000 RNA reads, got {data_rna.var.Raw_Reads.sum()}" + +# check prot data +data_prot = data.mod["prot"] +assert data_prot.n_vars == len(bdabseq_panel_fasta_dict), "Number of proteins is incorrect" +assert data_prot.X.sum(axis=1).min() > 950, "Number of reads per cell is incorrect" +assert data_prot.var.Raw_Reads.sum() >= 99990 and data_prot.var.Raw_Reads.sum() <= 100010, \ + f"Expected 100000 Prot reads, got {data_prot.var.Raw_Reads.sum()}" + + +# check smk data +expected_sample_tags = (["SampleTag01_hs", "SampleTag02_hs", "SampleTag03_hs"] * 34)[:100] +expected_sample_names = (["Sample1", "Sample2", "Sample3"] * 34)[:100] +sample_tags = data_rna.obs["Sample_Tag"] +assert sample_tags.nunique() == 3, "Number of sample tags is incorrect" +assert sample_tags.tolist() == expected_sample_tags, "Sample tags are incorrect" +sample_names = data_rna.obs["Sample_Name"] +assert sample_names.nunique() == 3, "Number of sample names is incorrect" +assert sample_names.tolist() == expected_sample_names, "Sample names are incorrect" + +# TODO: add VDJ, ATAC, and targeted RNA to test + +######################################################################################### + +print("> Test successful", flush=True) diff --git a/src/bd_rhapsody/helpers/rhapsody_cell_label.py b/src/bd_rhapsody/helpers/rhapsody_cell_label.py new file mode 100644 index 00000000..601ce7be --- /dev/null +++ b/src/bd_rhapsody/helpers/rhapsody_cell_label.py @@ -0,0 +1,405 @@ +#!/usr/bin/env python + +# copied from https://bd-rhapsody-public.s3.amazonaws.com/CellLabel/rhapsody_cell_label.py.txt +# documented at https://bd-rhapsody-bioinfo-docs.genomics.bd.com/steps/steps_cell_label.html + +""" +Rhapsody cell label structure +Information on the cell label is captured by the combination of bases in three cell label sections (CLS1, CLS2, CLS3). +Two common linker sequences (L1, L2) separate the three CLS. + +--CLS1---|-L1-|--CLS2---|-L2-|--CL3---|--UMI---|-CaptureSequence- + + +Each cell label section has a whitelist of 96 or 384 possible 9 base sequences. +All the capture oligos from a single bead will have the same cell label. + +---------------- + +V1 beads: + +[A96_cell_key1] + [v1_linker1] + [A96_cell_key2] + [v1_linker2] + [A96_cell_key3] + [8 random base UMI] + [18 base polyT capture] + + +---------------- + +Enhanced beads: +Enhanced beads contain two different capture oligo types, polyT and 5prime. On any one bead, the two different capture oligo types have the same cell label sequences. +Compared to the V1 bead, enhanced beads have shorter linker sequences, longer polyT, and 0-3 diversity insert bases at the beginning of the sequence. +The cell label sections use the same 3 sequence whitelists as V1 beads. + +polyT capture oligo: +[Enh_insert 0-3 bases] + [A96_cell_key1] + [Enh_linker1] + [A96_cell_key2] + [Enh_linker2] + [A96_cell_key3] + [8 random base UMI] + [25 base polyT capture] + +5prime capture oligo: +[Enh_5p_primer] + [A96_cell_key1] + [Enh_5p_linker1] + [A96_cell_key2] + [Enh_5p_linker2] + [A96_cell_key3] + [8 random base UMI] + [Tso_capture_seq] + + +---------------- + +Enhanced V2/V3 beads: +Enhanced V2/V3 beads have the same structure as Enhanced beads, but the cell label sections have been updated with increased diversity + + +polyT capture oligo: +[Enh_insert 0-3 bases] + [B384_cell_key1] + [Enh_linker1] + [B384_cell_key2] + [Enh_linker2] + [B384_cell_key3] + [8 random base UMI] + [25 base polyT capture] + +5prime capture oligo: +[Enh_5p_primer] + [B384_cell_key1] + [Enh_5p_linker1] + [B384_cell_key2] + [Enh_5p_linker2] + [B384_cell_key3] + [8 random base UMI] + [Tso_capture_seq] + + +The only difference between Enh V2 and Enh V3 beads is a different Tso_capture_seq. + +---------------- + +The Rhapsody Sequence Analysis Pipeline will convert each cell label into a single integer representing a unique cell label sequence - which is used in the output files as the 'Cell_index'. +This cell index integer is deterministic and derived from the 3 part cell label as follows: + +- Get the 1-based index for each cell label section from the python sets of sequences below +- Apply this equation: + (CLS1index - 1) * 384 * 384 + (CLS2index - 1) * 384 + CLS3index + +(See label_sections_to_index() function below) + + +Example: Enhanced bead sequence: +ACACATTGCAGTGAAGATAGTTCGACACTCAAGACA + +Each part identified: +A CACATTGCA GTGA AGATAGTTC GACA CTCAAGACA +DiversityInsert A96_cell_key1-33 Linker1 A96_cell_key2-78 Linker2 A96_cell_key3-21 + +33-78-21 +(33 - 1) * 384 * 384 + (78 - 1) * 384 + 21 +=4748181 + + +The original sequences of cell label can be determined from the cell index integer by reversing this conversion. +See index_to_label_sections() and index_to_sequence() functions below. + +""" + +v1_linker1 = 'ACTGGCCTGCGA' +v1_linker2 = 'GGTAGCGGTGACA' + +Enh_linker1 = 'GTGA' +Enh_linker2 = 'GACA' + +Enh_5p_primer = "ACAGGAAACTCATGGTGCGT" + +Enh_5p_linker1 = "AATG" +Enh_5p_linker2 = "CCAC" + +Enh_inserts = ["", "A", "GT", "TCA"] + +Tso_capture_seq_Enh_EnhV2 = "TATGCGTAGTAGGTATG" +Tso_capture_seq_EnhV3 = "GTGGAGTCGTGATTATA" + +A96_cell_key1 = ("GTCGCTATA","CTTGTACTA","CTTCACATA","ACACGCCGG","CGGTCCAGG","AATCGAATG","CCTAGTATA","ATTGGCTAA","AAGACATGC","AAGGCGATC", + "GTGTCCTTA","GGATTAGGA","ATGGATCCA","ACATAAGCG","AACTGTATT","ACCTTGCGG","CAGGTGTAG","AGGAGATTA","GCGATTACA","ACCGGATAG", + "CCACTTGGA","AGAGAAGTT","TAAGTTCGA","ACGGATATT","TGGCTCAGA","GAATCTGTA","ACCAAGGAC","AGTATCTGT","CACACACTA","ATTAAGTGC", + "AAGTAACCC","AAATCCTGT","CACATTGCA","GCACTGTCA","ATACTTAGG","GCAATCCGA","ACGCAATCA","GAGTATTAG","GACGGATTA","CAGCTGACA", + "CAACATATT","AACTTCTCC","CTATGAAAT","ATTATTACC","TACCGAGCA","TCTCTTCAA","TAAGCGTTA","GCCTTACAA","AGCACACAG","ACAGTTCCG", + "AGTAAAGCC","CAGTTTCAC","CGTTACTAA","TTGTTCCAA","AGAAGCACT","CAGCAAGAT","CAAACCGCC","CTAACTCGC","AATATTGGG","AGAACTTCC", + "CAAAGGCAC","AAGCTCAAC","TCCAGTCGA","AGCCATCAC","AACGAGAAG","CTACAGAAC","AGAGCTATG","GAGGATGGA","TGTACCTTA","ACACACAAA", + "TCAGGAGGA","GAGGTGCTA","ACCCTGACC","ACAAGGATC","ATCCCGGAG","TATGTGGCA","GCTGCCAAT","ATCAGAGCT","TCGAAGTGA","ATAGACGAG", + "AGCCCAATC","CAGAATCGT","ATCTCCACA","ACGAAAGGT","TAGCTTGTA","ACACGAGAT","AACCGCCTC","ATTTAGATG","CAAGCAAGC","CAAAGTGTG", + "GGCAAGCAA","GAGCCAATA","ATGTAATGG","CCTGAGCAA","GAGTACATT","TGCGATCTA" + ) + +A96_cell_key2 = ("TACAGGATA","CACCAGGTA","TGTGAAGAA","GATTCATCA","CACCCAAAG","CACAAAGGC","GTGTGTCGA","CTAGGTCCT","ACAGTGGTA","TCGTTAGCA", + "AGCGACACC","AAGCTACTT","TGTTCTCCA","ACGCGAAGC","CAGAAATCG","ACCAAAATG","AGTGTTGTC","TAGGGATAC","AGGGCTGGT","TCATCCTAA", + "AATCCTGAA","ATCCTAGGA","ACGACCACC","TTCCATTGA","TAGTCTTGA","ACTGTTAGA","ATTCATCGT","ACTTCGAGC","TTGCGTACA","CAGTGCCCG", + "GACACTTAA","AGGAGGCGC","GCCTGTTCA","GTACATCTA","AATCAGTTT","ACGATGAAT","TGACAGACA","ATTAGGCAT","GGAGTCTAA","TAGAACACA", + "AAATAAATA","CCGACAAGA","CACCTACCC","AAGAGTAGA","TCATTGAGA","GACCTTAGA","CAAGACCTA","GGAATGATA","AAACGTACC","ACTATCCTC", + "CCGTATCTA","ACACATGTC","TTGGTATGA","GTGCAGTAA","AGGATTCAA","AGAATGGAG","CTCTCTCAA","GCTAACTCA","ATCAACCGA","ATGAGTTAC", + "ACTTGATGA","ACTTTAACT","TTGGAGGTA","GCCAATGTA","ATCCAACCG","GATGAACTG","CCATGCACA","TAGTGACTA","AAACTGCGC","ATTACCAAG", + "CACTCGAGA","AACTCATTG","CTTGCTTCA","ACCTGAGTC","AGGTTCGCT","AAGGACTAT","CGTTCGGTA","AGATAGTTC","CAATTGATC","GCATGGCTA", + "ACCAGGTGT","AGCTGCCGT","TATAGCCCT","AGAGGACCA","ACAATATGG","CAGCACTTC","CACTTATGT","AGTGAAAGG","AACCCTCGG","AGGCAGCTA", + "AACCAAAGT","GAGTGCGAA","CGCTAAGCA","AATTATAAC","TACTAGTCA","CAACAACGG" + ) + +A96_cell_key3 = ("AAGCCTTCT","ATCATTCTG","CACAAGTAT","ACACCTTAG","GAACGACAA","AGTCTGTAC","AAATTACAG","GGCTACAGA","AATGTATCG","CAAGTAGAA", + "GATCTCTTA","AACAACGCG","GGTGAGTTA","CAGGGAGGG","TCCGTCTTA","TGCATAGTA","ACTTACGAT","TGTATGCGA","GCTCCTTGA","GGCACAACA", + "CTCAAGACA","ACGCTGTTG","ATATTGTAA","AAGTTTACG","CAGCCTGGC","CTATTAGCC","CAAACGTGG","AAAGTCATT","GTCTTGGCA","GATCAGCGA", + "ACATTCGGC","AGTAATTAG","TGAAGCCAA","TCTACGACA","CATAACGTT","ATGGGACTC","GATAGAGGA","CTACATGCG","CAACGATCT","GTTAGCCTA", + "AGTTGCATC","AAGGGAACT","ACTACATAT","CTAAGCTTC","ACGAACCAG","TACTTCGGA","AACATCCAT","AGCCTGGTT","CAAGTTTCC","CAGGCATTT", + "ACGTGGGAG","TCTCACGGA","GCAACATTA","ATGGTCCGT","CTATCATGA","CAATACAAG","AAAGAGGCC","GTAGAAGCA","GCTATGGAA","ACTCCAGGG", + "ACAAGTGCA","GATGGTCCA","TCCTCAATA","AATAAACAA","CTGTACGGA","CTAGATAGA","AGCTATGTG","AAATGGAGG","AGCCGCAAG","ACAGTAAAC", + "AACGTGTGA","ACTGAATTC","AAGGGTCAG","TGTCTATCA","TCAGATTCA","CACGATCCG","AACAGAAAC","CATGAATGA","CGTACTACG","TTCAGCTCA", + "AAGGCCGCA","GGTTGGACA","CGTCTAGGT","AATTCGGCG","CAACCTCCA","CAATAGGGT","ACAGGCTCC","ACAACTAGT","AGTTGTTCT","AATTACCGG", + "ACAAACTTT","TCTCGGTTA","ACTAGACCG","ACTCATACG","ATCGAGTCT","CATAGGTCA" + ) + +B384_cell_key1 = ("TGTGTTCGC","TGTGGCGCC","TGTCTAGCG","TGGTTGTCC","TGGTTCCTC","TGGTGTGCT","TGGCGACCG","TGCTGTGGC","TGCTGGCAC","TGCTCTTCC", + "TGCCTCACC","TGCCATTAT","TGATGTCTC","TGATGGCCT","TGATGCTTG","TGAAGGACC","TCTGTCTCC","TCTGATTAT","TCTGAGGTT","TCTCGTTCT", + "TCTCATCCG","TCCTGGATT","TCAGCATTC","TCACGCCTT","TATGTGCAC","TATGCGGCC","TATGACGAG","TATCTCGTG","TATATGACC","TAGGCTGTG", + "TACTGCGTT","TACGTGTCC","TAATCACAT","GTTGTGTTG","GTTGTGGCT","GTTGTCTGT","GTTGTCGAG","GTTGTCCTC","GTTGTATCC","GTTGGTTCT", + "GTTGGCGTT","GTTGGAGCG","GTTGCTGCC","GTTGCGCAT","GTTGCAGGT","GTTGCACTG","GTTGATGAT","GTTGATACG","GTTGAAGTC","GTTCTGTGC", + "GTTCTCTCG","GTTCTATAT","GTTCGTATG","GTTCGGCCT","GTTCGCGGC","GTTCGATTC","GTTCCGGTT","GTTCCGACG","GTTCACGCT","GTTATCACC", + "GTTAGTCCG","GTTAGGTGT","GTTAGAGAC","GTTAGACTT","GTTACCTCT","GTTAATTCC","GTTAAGCGC","GTGTTGCTT","GTGTTCGGT","GTGTTCCAG", + "GTGTTCATC","GTGTCACAC","GTGTCAAGT","GTGTACTGC","GTGGTTAGT","GTGGTACCG","GTGGCGATC","GTGCTTCTG","GTGCGTTCC","GTGCGGTAT", + "GTGCGCCTT","GTGCGAACT","GTGCAGCCG","GTGCAATTG","GTGCAAGGC","GTCTTGCGC","GTCTGGCCG","GTCTGAGGC","GTCTCAGAT","GTCTCAACC", + "GTCTATCGT","GTCGGTGTG","GTCGGAATC","GTCGCTCCG","GTCCTCGCC","GTCCTACCT","GTCCGCTTG","GTCCATTCT","GTCCAATAC","GTCATGTAT", + + "GTCAGTGGT","GTCAGATAG","GTATTAACT","GTATCAGTC","GTATAGCCT","GTATACTTG","GTATAAGGT","GTAGCATCG","GTACCGTCC","GTACACCTC", + "GTAAGTGCC","GTAACAGAG","GGTTGTGTC","GGTTGGCTG","GGTTGACGC","GGTTCGTCG","GGTTCAGTT","GGTTATATT","GGTTAATAC","GGTGTACGT", + "GGTGCCGCT","GGTGCATGC","GGTCGTTGC","GGTCGAGGT","GGTAGGCAC","GGTAGCTTG","GGTACATAG","GGTAATCTG","GGCTTGGCC","GGCTTCACG", + "GGCTTATGT","GGCTTACTC","GGCTGTCTT","GGCTCTGTG","GGCTCCGGT","GGCTCACCT","GGCGTTGAG","GGCGTGTAC","GGCGTGCTG","GGCGTATCG", + "GGCGCTCGT","GGCGCTACC","GGCGAGCCT","GGCGAGATC","GGCGACTTG","GGCCTCTTC","GGCCTACAG","GGCCAGCGC","GGCCAACTT","GGCATTCCT", + "GGCATCCGC","GGCATAACC","GGCAACGAT","GGATGTCCG","GGATGAGAG","GGATCTGGC","GGATCCATG","GGATAGGTT","GGAGTCGTG","GGAGAAGGC", + "GGACTCCTT","GGACTAGTC","GGACCGTTG","GGAATTAGT","GGAATCTCT","GGAATCGAC","GGAAGCCTC","GCTTGTAGC","GCTTGACCG","GCTTCGGAC", + "GCTTCACAT","GCTTAGTCT","GCTGGATAT","GCTGGAACC","GCTGCGATG","GCTGATCAG","GCTGAGCGT","GCTCTTGTC","GCTCTCCTG","GCTCGGTCC", + "GCTCCAATT","GCTATTCGC","GCTATGAGT","GCTAGTGTT","GCTAGGATC","GCTAGCACT","GCTACGTAT","GCTAACCTT","GCGTTCCGC","GCGTGTGCC", + "GCGTGCATT","GCGTCGGTT","GCGTATGTG","GCGTATACT","GCGGTTCAC","GCGGTCTTG","GCGGCGTCG","GCGGCACCT","GCGCTGGAC","GCGCTCTCC", + + "GCGCGGCAG","GCGCGATAC","GCGCCGACC","GCGAGCGAG","GCGAGAGGT","GCGAATTAC","GCCTTGCAT","GCCTGCGCT","GCCTAACTG","GCCGTCCGT", + "GCCGCTGTC","GCCATGCCG","GCCAGCTAT","GCCAACCAG","GCATGGTTG","GCATCGACG","GCAGGCTAG","GCAGGACGC","GCAGCCATC","GCAGATACC", + "GCAGACGTT","GCACTATGT","GCACACGAG","GATTGTCAT","GATTGGTAG","GATTGCACC","GATTCTACT","GATTCGCTT","GATTAGGCC","GATTACGGT", + "GATGTTGGC","GATGTTATG","GATGGCCAG","GATCGTTCG","GATCGGAGC","GATCGCCTC","GATCCTCTG","GATCCAGCG","GATACACGC","GAGTTACCT", + "GAGTCGTAT","GAGTCGCCG","GAGGTGTAG","GAGGCATTG","GAGCGGACG","GAGCCTGAG","GAGATCTGT","GAGATAATT","GAGACGGCT","GACTTCGTG", + "GACTGTTCT","GACTCTTAG","GACCGCATT","GAATTGAGC","GAATATTGC","GAAGGCTCT","GAAGAGACT","GAACTGCCG","GAACGCGTG","CTTGTGTAT", + "CTTGTGCGC","CTTGTCATG","CTTGGTCTT","CTTGGTACC","CTTGGATGT","CTTGCTCAC","CTTGCAATC","CTTGAGGCC","CTTGACGGT","CTTCTGATC", + "CTTCTCGTT","CTTCTAGGC","CTTCGTTAG","CTTATGTCC","CTTATGCTT","CTTATATAG","CTTAGGTTG","CTTAGGAGC","CTTACTTAT","CTGTTCTCG", + "CTGTGCCTC","CTGTCGCAT","CTGTCGAGC","CTGTAGCTG","CTGTACGTT","CTGCTTGCC","CTGCGTAGT","CTGCACACC","CTGATGGAT","CTGAGTCAT", + "CTGACGCCG","CTGAACGAG","CTCTTGTAG","CTCTTAGTT","CTCTTACCG","CTCTGCACC","CTCTCGTCC","CTCGTATTG","CTCGACTAT","CTCCTGACG", + + "CTCACTAGC","CTATACGGC","CGTTCGCTC","CGTTCACCG","CGTATAGTT","CGGTGTTCC","CGGTGTCAG","CGGTCCTGC","CGGCGACTC","CGGCACGGT", + "CGGATAGCC","CGGAGAGAT","CGCTAATAG","CGCGTTGGC","CGCGCAGAG","CGCACTGCC","CCTTGTCTC","CCTTGGCGT","CCTTCTGAG","CCTTCTCCT", + "CCTTCGACC","CCTTACTTG","CCTGTTCGT","CCTGTATGC","CCTCGGCCG","CCGTTAATT","CCATGTGCG","CCAGTGGTT","CCAGGCATT","CCAGGATCC", + "CCAGCGTTG","CATTCCGAT","CATTATACC","CATGTTGAG","ATTGCGTGT","ATTGCGGAC","ATTGCGCCG","ATTGACTTG","ATTCGGCTG","ATTCGCGAG", + "ATTCCAAGT","ATTATCTTC","ATTACTGTT","ATTACACTC","ATGTTCTAT","ATGTTACGC","ATGTGTATC","ATGTGGCAG","ATGTCTGTG","ATGGTGCAT", + "ATGCTTACT","ATGCTGTCC","ATGCTCGGC","ATGAGGTTC","ATGAGAGTG","ATCTTGGCT","ATCTGTGCG","ATCGGTTCC","ATCATGCTC","ATCATCACT", + "ATATCTTAT","ATAGGCGCC","AGTTGGTAT","AGTTGAGCC","AGTGCGACC","AGGTGCTAC","AGGCTTGCG","AGGCCTTCC","AGGCACCTT","AGGAATATG", + "AGCGGCCAG","AGCCTGGTC","AGCCTGACT","AGCAATCCG","AGAGATGTT","AGAGAATTC","ACTCGCTTG","ACTCGACCT","ACGTACACC","ACGGATGGT", + "ACCAGTCTG","ACATTCGGC","ACATGAGGT","ACACTAATT" + ) + +B384_cell_key2 = ("TTGTGTTGT","TTGTGGTAG","TTGTGCGGA","TTGTCTGTT","TTGTCTAAG","TTGTCATAT","TTGTCACGA","TTGTATGAA","TTGTACAGT","TTGGTTAAT", + "TTGGTGCAA","TTGGTCGAG","TTGGTATTA","TTGGCACAG","TTGGATACA","TTGGAAGTG","TTGCGGTTA","TTGCCATTG","TTGCACGCG","TTGCAAGGT", + "TTGATGTAT","TTGATAATT","TTGAGACGT","TTGACTACT","TTGACCGAA","TTCTGGTCT","TTCTGCACA","TTCTCCTTA","TTCTCCGCT","TTCTAGGTA", + "TTCTAATCG","TTCGTCGTA","TTCGTAGAT","TTCGGCTTG","TTCGGAATA","TTCGCCAGA","TTCGATTGT","TTCGATCAG","TTCCTCGGT","TTCCGGCAG", + "TTCCGCATT","TTCCAATTA","TTCATTGAA","TTCATGCTG","TTCAGGAGT","TTCACTATA","TTCAACTCT","TTCAACGTG","TTATGCGTT","TTATGATTG", + "TTATCCTGT","TTATCCGAG","TTATATTAT","TTAGGCGCG","TTACTGGAA","TTACTAGTT","TTACGTGGT","TTACGATAT","TTACCTAGA","TTACATGAG", + "TTACAGCGT","TTACACGGA","TTACACACT","TTAATCAGT","TTAATAGGA","TTAAGTGTG","TTAACCTTG","TTAACACAA","TGTTCACTT","TGTTCAAGA", + "TGTTAAGTG","TGTGTTATG","TGTGTCCAA","TGTGGAGCG","TGTCAGTTA","TGTCAGAAG","TGGTTAGTT","TGGTTACAA","TGGCGTTAT","TGGCGCCAA", + "TGGAGTCTT","TGCGTATTG","TGATAGAGA","TGAGGTATT","TGAGAATCT","TCTTGGTAA","TCTTCATAG","TCTGTCCTT","TCTGGAATT","TCTACCGCG", + "TCGTTCGAA","TCGTCAGTG","TCGACGAGA","TCATGGCTT","TCACACTTA","TATTCCGAA","TATTATGGT","TATGCTATT","TATCAAGGA","TAGTTCAAT", + + "TAGCTGCTT","TAGAGGAAG","TACCTGTTA","TACACCTGT","GTTGTGCGT","GTTGGCTAT","GTTGCCAAG","GTTGACCTT","GTTCTGCTA","GTTCTGAAT", + "GTTCTATCA","GTTCGCGTG","GTTCCTTAT","GTTAGCAGT","GTTACTGTG","GTTACTCAA","GTTAAGAGA","GTTAACTTA","GTGTCGGCA","GTGTCCATT", + "GTGCTTGAG","GTGCTCGTT","GTGCTCACA","GTGCCTGGA","GTCTTGTCG","GTCTTGATT","GTCTTCCGT","GTCTTAAGA","GTCTCATCT","GTCTACGAG", + "GTCGTTGCT","GTCGTGTTA","GTCGGTAAT","GTCGGATGT","GTCGAGCTG","GTCCGGACT","GTCCAACAT","GTCAGACGA","GTCAGAATT","GTCACTCTT", + "GTCAAGGAA","GTATGTCTT","GTATGTACA","GTATCGGTT","GTATATGTA","GTATACAAT","GTAGTTAAG","GTAGTCGAT","GTAGCCTTA","GTAGATACT", + "GTACGATTA","GTACAGTCT","GTAATTCGT","GCTTGGCAG","GCTTGCTTG","GCTTGAGGA","GCTTCATTA","GCTTATGCG","GCTGTGTAG","GCTGTCATG", + "GCTGGTTGT","GCTGGACTG","GCTGCCTAA","GCTGATATT","GCTCTTAGT","GCTCTATTG","GCTCGCCGT","GCTCCGCTG","GCTATTCTG","GCTATACGA", + "GCTACTAAG","GCTACATGT","GCTAACTCT","GCGTTGTAA","GCGTTCTCT","GCGTGCGTA","GCGTCTTGA","GCGTCCGAT","GCGTAAGAG","GCGCTTACG", + "GCGCGGATT","GCGCCATAT","GCGCATGAA","GCGATCAAT","GCGAGCCTT","GCGAGATTG","GCGAGAACA","GCCTTGGTA","GCCTTCTAG","GCCTTCACA", + "GCCTGAGTG","GCCTCACGT","GCCGGCGAA","GCCGCACAA","GCCATGCTT","GCCATATAT","GCCAATTCG","GCATTCGTT","GCATGATGT","GCAGTTGGA", + + "GCAGTGTCT","GCACTTGTG","GCAATCTGT","GCAACACTT","GATTGTATT","GATTGCGAG","GATTCCAGT","GATTCATAT","GATTATCAG","GATTAGGTT", + "GATGTTGCG","GATGGATCT","GATGCTGAT","GATGCCTTG","GATCTCCTT","GATCGCTTA","GATATTGAA","GATATTACT","GAGTGTTAT","GAGCTCAGT", + "GAGCGTGCT","GAGCGTCGA","GAGCGGTTG","GAGCGACTT","GAGCCGAAT","GAGATAGAT","GAGACCTAT","GACGGTCGT","GACGCAGGT","GACGATATG", + "GACCTATCT","GAATTAGGA","GAATCAGCT","GAAGTTCAT","GAAGTGGTT","GAAGTATTG","GAAGGCATT","GAACGCTGT","CTTGTCCAG","CTTGGATTG", + "CTTGCTGAA","CTTGCCGTG","CTTGATTCT","CTTCTGTCG","CTTCGGCGT","CTTATGAGT","CTTACCGAT","CTGTTAGGT","CTGTCGTCT","CTGTATAAT", + "CTGGCTCAT","CTGGATGCG","CTGCGTGTG","CTGCGCGGT","CTGCCGATT","CTGCATTGT","CTGATTAAG","CTGAGATAT","CTGACCTGT","CTCGTATCT", + "CTCGGCAAG","CTCGCAATT","CTCCTGCTT","CTCCTAAGT","CTCCGGATG","CTCCGAGCG","CTCACAGGT","CTATTCTAT","CTATTAGTG","CTATGAATT", + "CTACATATT","CGTGGCATT","CGTCTTAAT","CGTCTGGTT","CGTCACTGT","CGTAGGTCT","CGGTTCGAG","CGGTTCATT","CGGTGCTCT","CGGTAATTG", + "CGGCCTGAT","CGGATATAG","CGGAATATT","CGCTCCAAT","CGCGTTCGT","CGCAGGTTG","CGAGGATGT","CGAGCTGTT","CGACGGCTT","CCTTGTGTG", + "CCTGTCTCA","CCTGACTAT","CCTACCTTG","CCGTAGATT","CCGGCTGGT","CATCGGACG","CATCGATAA","CATCCTTCT","CAGTTCTGT","CAGTGCCAG", + + "CAGGCACTG","CAGCCTCTT","CACTTATAT","CACTGGTCG","CACTGCATG","CACGCGTTG","CACGATGTT","CACCATCTG","CACAGGCGT","ATTGTACAA", + "ATTGGTATG","ATTGCTAAT","ATTGCATAG","ATTGCAGTT","ATTCTGCAG","ATTCTACGT","ATTCGGATT","ATTCCGTTG","ATTCATCAA","ATTCAAGAG", + "ATTAGCCTT","ATTAATATT","ATGTTAGAG","ATGTTAACT","ATGTAGTCG","ATGGTGTAG","ATGGATTAT","ATCTTGAAG","ATCTGATAT","ATCTCAGAA", + "ATCGCTCAA","ATCGCGTCG","ATCCATGGT","ATCATGAGA","ATCATAGTT","ATCAGCGAG","ATCACCATT","ATAGTAATT","ATAGCTGTG","ATACTCTCG", + "ATACCTCAT","AGTTGCGCG","AGTTGAATT","AGTTATGAT","AGTGTCCGT","AGTGGCTTG","AGTGCTTCT","AGTATCATT","AGTACACAA","AGGTATGCG", + "AGGTATAGT","AGGCTACTT","AGGCCAGGT","AGGAGCGAT","AGCTTATAG","AGCTCTAGA","AGCGTGTAT","AGCGTCACA","AGCCTTCAT","AGCCTGTCG", + "AGCCTCGAG","AGCACTGAA","AGATGTACG","AGAGTTAAT","AGACCTCTG","ACTTCTATA","ACTGTCGAG","ACTGTATGT","ACTCTGTAA","ACTCGCGAA", + "ACTAGATCT","ACTAACGTT","ACGTTACTG","ACGTGGAAT","ACGGACTCT","ACGCCTAAT","ACGCCGTTA","ACGACGTGT","ACCTCGCAT","ACCATCATA", + "ACATATATT","ACAGGCACA","ACACCTGAG","ACACATTCT" + ) + +B384_cell_key3 = ("TTGTGGCTG","TTGTGGAGT","TTGTGCGAC","TTGTCTTCA","TTGTAAGAT","TTGGTTCTG","TTGGTGCGT","TTGGTCTAC","TTGGTAACT","TTGGCGTGC", + "TTGGATTAG","TTGGAGACG","TTGGAATCA","TTGCGGCGA","TTGCGCTCG","TTGCCTTAC","TTGCCGGAT","TTGCATGCT","TTGCACGTC","TTGCACCAT", + "TTGAACCTG","TTCTCGCGT","TTCTCAACT","TTCTACTCA","TTCGTCCAT","TTCGGATAC","TTCGGACGT","TTCGCAATC","TTCCGGTGC","TTCCGACTG", + "TTCATTATG","TTCATGGAT","TTCAGCGCA","TTCACCTCG","TTCAAGCAG","TTCAACTAC","TTATGCCAG","TTATGCATC","TTATCGTAC","TTATACCTA", + "TTATAATAG","TTATAAGTC","TTAGTTAGC","TTAGCTCAT","TTAGCACTA","TTAGATATG","TTACTACGA","TTACCGTCA","TTACAGAGC","TTAATTGCA", + "TTAACAGAT","TGTTGGCTA","TGTTGATGA","TGTTAAGCT","TGTGGCCGA","TGTGCTAGC","TGTGCGTCA","TGTCGCAGT","TGTCGAGCA","TGTACAACG", + "TGGTTCCGA","TGGTTCACT","TGGTCAAGT","TGGCTTGTA","TGGCTGTCG","TGGCGTATG","TGGCGCGCT","TGGATGTAC","TGGACTTGC","TGGAATACT", + "TGCTAGCGA","TGCGTTGCT","TGCGGTCTG","TGCGCTTAG","TGCGCGACG","TGCCTGCAT","TGCCTAGAC","TGCACGAGT","TGAGTGTGC","TGAGGCTCG", + "TCTTCCGTC","TCTTATAGT","TCTTACCAT","TCTGTTGTC","TCTGTTACT","TCTGGCTAG","TCTCAGATC","TCTAGTTGA","TCTAGTACG","TCGTACTAC", + "TCGGTGTAG","TCGGCTGCT","TCGCTACTG","TCGATCACG","TCGAGGCAT","TCCGGCGTC","TCCGGAGCT","TCCGCTCGT","TCCGAGTAC","TCCATTCAT", + + "TCCATGGTC","TCCAAGTCG","TCATTACGT","TCATGCACT","TCAGGTTGC","TCAGACCGT","TCACTCAGT","TCAAGCTCA","TATTGCGCA","TATTCGGCT", + "TATTCCAGC","TATTCATCA","TATGTTCAG","TATGGTATG","TATGCAAGT","TATCTGGTC","TATCTGACT","TATCCAGAT","TATCAGTCG","TATCACGCT", + "TAGGCGCGA","TAGGCACAT","TAGGATCGT","TAGCATTGC","TAGAGTTAC","TAGACTGAT","TACTTGTCG","TACGTCCGA","TACCGTACT","TACCGCGAT", + "TACCAGGAC","TACAGAAGT","TAAGTGCAT","TAAGCTACT","GTTGACCGA","GTTCTCGAC","GTTCCTGCT","GTTATGATG","GTGCTTGCA","GTGCCGCGT", + "GTATTGCTG","GTATTCCGA","GTATTAAGC","GTATGACGT","GTAGTTGTC","GTAGTACAT","GTAGCTCGA","GGTTGCTCA","GGTTGAGTA","GGTTAACGT", + "GGTGTGGCA","GGTCTTCAG","GGTCGTCTA","GGTCGGCGT","GGTCCGACT","GGTCATGTC","GGTCACATG","GGTAGTGCT","GGTAGCGTC","GGTACCAGT", + "GGTAAGGAT","GGCTTGTGC","GGCTTGACT","GGCTTACGA","GGCTGTAGT","GGCTGGCAG","GGCTCCATC","GGCGTGGAT","GGCGTAATC","GGCGCAAGT", + "GGCGAGTAG","GGCGACCGT","GGCCTGTCA","GGCCATTGC","GGCACTCTG","GGATGTCAT","GGAGTAACT","GGAGAACGA","GGACTGGCT","GGACGTTCA", + "GGAACGTGC","GCTGTCCAT","GCTGGTTCA","GCTGCAACT","GCTCGTTAC","GCTATAGAT","GCTAGTCGT","GCTACCATG","GCGTTCTGA","GCGTGTTAG", + "GCGGTATCG","GCGGAGCAT","GCGCGGTGC","GCGCCTAGT","GCGCCGGCT","GCCTTCATG","GCCATACTG","GCATGTTGA","GCATGCTAC","GCAGTATAC", + + "GCAGGTACT","GCAGCGCGT","GCACCTCAT","GCAATTCGA","GATTGCCGT","GATGAACAT","GATCTTCGA","GATCTGCAT","GAGTGGCAT","GAGTCGGAC", + "GAGTATGAT","GAGGCGAGT","GAGGCAACG","GAGCGCACT","GAATAGGCT","ATTGTCACT","ATTGTATCA","ATTGGTCAG","ATTGGCGAT","ATTGATCGT", + "ATTCGTAGT","ATTCATACG","ATTCAGGAC","ATTACTTCA","ATTAATTAG","ATTAAGCAT","ATGTCTCTA","ATGTAGCGT","ATGGCATAC","ATGGAGATC", + "ATGGACTCG","ATGGAACGA","ATGCTTCAT","ATGCTCGCT","ATGCGACGT","ATGCCGTAG","ATGAGTTCG","ATGACTATC","ATGACCGAC","ATCTTATGC", + "ATCTTACTA","ATCTATCAG","ATCGTGTAC","ATCGTCTGA","ATCGGCATG","ATCGCGAGC","ATCGCAACG","ATCGATGCT","ATCGAATAG","ATCCTTCTG", + "ATCCTGCGT","ATCCGCACT","ATCCATTAC","ATCCAAGCA","ATCAGATCA","ATCACACAT","ATCAACGTC","ATCAACCGA","ATATTGAGT","ATATTCGTC", + "ATATTACAG","ATATCTTGA","ATATCGCAT","ATATCAATC","ATAGTCCTG","ATAGGTCTA","ATAGCTGAC","ATAGCGGTA","AGTTCGCTG","AGTTACAGC", + "AGTTAACTA","AGTGCAATC","AGTCTGGTA","AGTCTGAGC","AGTCTACAT","AGTCGAACT","AGTCCATCG","AGTCATTCA","AGTATCCAG","AGTAGACTG", + "AGTAATCGA","AGTAAGTGC","AGGTTGGCT","AGGTTCTAG","AGGTGTTCA","AGGTGCCAT","AGGTCTGAT","AGGTCGTAC","AGGTCAGCA","AGGCTTATC", + "AGGCTATGA","AGGCCGACG","AGGCCAAGC","AGGCAGGTC","AGGCAAGAT","AGGAGCAGT","AGGACCGCT","AGGAATTAC","AGCTTGGAC","AGCTTAAGT", + + "AGCTACACG","AGCGTTACG","AGCGGTGCA","AGCGGAGTC","AGCGGACGA","AGCGCGCTA","AGCGATAGC","AGCGACTCA","AGCCTCTAC","AGCCGTCGT", + "AGCATGATC","AGCACTTCG","AGCACGGCA","AGATTCTGA","AGATTAGAT","AGATGATAG","AGATATGTA","AGATACCGT","AGAGTGCGT","AGAGCCGAT", + "AGACTCACT","ACTTGCCTA","ACTTGAGCA","ACTTCTAGC","ACTTCGACT","ACTTAGTAC","ACTGTTGAT","ACTGTAACG","ACTGGTATC","ACTGACGTC", + "ACTGAAGCT","ACTCTGATG","ACTCCTGAC","ACTCCGCTA","ACTCAACTG","ACTATTGCA","ACTAGGCAG","ACTACGCGT","ACTAATACT","ACGTTCGTA", + "ACGTGTGCT","ACGTGTATG","ACGTGGAGC","ACGTCTTCG","ACGTCAGTC","ACGGTCTCA","ACGGTCCGT","ACGGTACAG","ACGGCGCTG","ACGCTGCGA", + "ACGCGTGTA","ACGCGCCAG","ACGATGTCG","ACGATGGAT","ACGATCTAC","ACGAGCTGA","ACGAGCATC","ACGAATCGT","ACGAACGCA","ACCTTGTAG", + "ACCTGTTGC","ACCTGTCAT","ACCTCGATC","ACCTAGGTA","ACCTACTGA","ACCTAATCG","ACCGTAGCA","ACCGGTAGT","ACCGGCTAC","ACCGCTTCA", + "ACATTGTGC","ACATTCTCG","ACATGGCTG","ACATGACGA","ACATATGAT","ACATATACG","ACAGCGTAC","ACACTTGCT","ACACTATCA","ACACGCATG", + "ACACCAGTA","ACACCAACT","ACACATAGT","ACACACCTA" + ) + + +def label_sections_to_index(label): + """ + Return the cell_index integer based on input 3 part cell label string + + """ + + cl1, cl2, cl3 = [int(n) for n in label.split('-')] + return (cl1 - 1) * 384 * 384 + (cl2 - 1) * 384 + (cl3 - 1) + 1 + + +# print(label_sections_to_index('1-1-1')) +# print(label_sections_to_index('33-78-21')) +# print(label_sections_to_index('43-12-77')) +# print(label_sections_to_index('96-96-96')) +# print(label_sections_to_index('135-43-344')) +# print(label_sections_to_index('384-384-384')) +# print('-') + +#---------------------------------- + + +def index_to_label_sections(index): + + zerobased = int(index) - 1 + + cl1 = (int((zerobased) / 384 / 384) % 384) + 1 + cl2 = (int((zerobased) / 384) % 384) + 1 + cl3 = (zerobased % 384) + 1 + + return f'{cl1}-{cl2}-{cl3}' + + +# print(index_to_label_sections(1)) +# print(index_to_label_sections(4748181)) +# print(index_to_label_sections(6197453)) +# print(index_to_label_sections(14044896)) +# print(index_to_label_sections(19775576)) +# print(index_to_label_sections(56623104)) +# print('-') +#---------------------------------- + + +def index_to_sequence(index, bead_version): + + zerobased = int(index) - 1 + + cl1 = (int((zerobased) / 384 / 384) % 384) + 1 + cl2 = (int((zerobased) / 384) % 384) + 1 + cl3 = (zerobased % 384) + 1 + + if bead_version == 'v1': + cls1_sequence = A96_cell_key1[cl1-1] + cls2_sequence = A96_cell_key2[cl2-1] + cls3_sequence = A96_cell_key3[cl3-1] + + return f'{cls1_sequence}{v1_linker1}{cls2_sequence}{v1_linker2}{cls3_sequence}' + + elif bead_version == 'Enh': + + diversityInsert = '' + + if 1 <= cl1 <= 24: + diversityInsert = '' + elif 25 <= cl1 <= 48: + diversityInsert = 'A' + elif 49 <= cl1 <= 72: + diversityInsert = 'GT' + else: # 73 <= cl1 <= 96: + diversityInsert = 'TCA' + + cls1_sequence = A96_cell_key1[cl1-1] + cls2_sequence = A96_cell_key2[cl2-1] + cls3_sequence = A96_cell_key3[cl3-1] + + return f'{diversityInsert}{cls1_sequence}{Enh_linker1}{cls2_sequence}{Enh_linker2}{cls3_sequence}' + + elif bead_version == 'EnhV2': + + diversityInsert = '' + subIndex = ((cl1-1) % 96) + 1 + + if 1 <= subIndex <= 24: + diversityInsert = '' + elif 25 <= subIndex <= 48: + diversityInsert = 'A' + elif 49 <= subIndex <= 72: + diversityInsert = 'GT' + else: # 73 <= subIndex <= 96: + diversityInsert = 'TCA' + + cls1_sequence = B384_cell_key1[cl1-1] + cls2_sequence = B384_cell_key2[cl2-1] + cls3_sequence = B384_cell_key3[cl3-1] + + return f'{diversityInsert}{cls1_sequence}{Enh_linker1}{cls2_sequence}{Enh_linker2}{cls3_sequence}' + + +# print(index_to_sequence(4748181, 'Enh')) +# print(index_to_sequence(52923177, 'EnhV2')) + +#---------------------------------- + + +def create_cell_index_fasta_V1(): + with open('Rhapsody_cellBarcodeV1_IndexToSequence.fasta', 'w') as f: + for cl1 in range(1, 96+1): + for cl2 in range(1, 96+1): + for cl3 in range(1, 96+1): + index = label_sections_to_index(f'{cl1}-{cl2}-{cl3}') + sequence = index_to_sequence(index, 'v1') + f.write(f'>{index}\n') + f.write(f'{sequence}\n') + +#create_cell_index_fasta_V1() + + +def create_cell_index_fasta_Enh(): + with open('Rhapsody_cellBarcodeEnh_IndexToSequence.fasta', 'w') as f: + for cl1 in range(1, 96+1): + for cl2 in range(1, 96+1): + for cl3 in range(1, 96+1): + index = label_sections_to_index(f'{cl1}-{cl2}-{cl3}') + sequence = index_to_sequence(index, 'Enh') + f.write(f'>{index}\n') + f.write(f'{sequence}\n') + +#create_cell_index_fasta_Enh() + +def create_cell_index_fasta_EnhV2(): + with open('Rhapsody_cellBarcodeEnhV2_IndexToSequence.fasta', 'w') as f: + for cl1 in range(1, 384+1): + for cl2 in range(1, 384+1): + for cl3 in range(1, 384+1): + index = label_sections_to_index(f'{cl1}-{cl2}-{cl3}') + sequence = index_to_sequence(index, 'EnhV2') + f.write(f'>{index}\n') + f.write(f'{sequence}\n') + +#create_cell_index_fasta_EnhV2() diff --git a/src/bd_rhapsody/test_data/BDAbSeq_ImmuneDiscoveryPanel.fasta b/src/bd_rhapsody/test_data/BDAbSeq_ImmuneDiscoveryPanel.fasta new file mode 100644 index 00000000..930add4a --- /dev/null +++ b/src/bd_rhapsody/test_data/BDAbSeq_ImmuneDiscoveryPanel.fasta @@ -0,0 +1,60 @@ +>CD11c:B-LY6|ITGAX|AHS0056|pAbO Catalog_940024 +ATGCGTTGCGAGAGATATGCGTAGGTTGCTGATTGG +>CD14:MPHIP9|CD14|AHS0037|pAbO Catalog_940005 +TGGCCCGTGGTAGCGCAATGTGAGATCGTAATAAGT +>CXCR5|CXCR5|AHS0039|pAbO Catalog_940042 +AGGAAGGTCGATTGTATAACGCGGCATTGTAACGGC +>CD19:SJ25C1|CD19|AHS0030|pAbO Catalog_940004 +TAGTAATGTGTTCGTAGCCGGTAATAATCTTCGTGG +>CD25:2A3|IL2RA|AHS0026|pAbO Catalog_940009 +AGTTGTATGGGTTAGCCGAGAGTAGTGCGTATGATT +>CD27:M-T271|CD27|AHS0025|pAbO Catalog_940018 +TGTCCGGTTTAGCGAATTGGGTTGAGTCACGTAGGT +>CD278|ICOS|AHS0012|pAbO Catalog_940043 +ATAGTCCGCCGTAATCGTTGTGTCGCTGAAAGGGTT +>CD279:EH12-1|PDCD1|AHS0014|pAbO Catalog_940015 +ATGGTAGTATCACGACGTAGTAGGGTAATTGGCAGT +>CD3:UCHT1|CD3E|AHS0231|pAbO Catalog_940307 +AGCTAGGTGTTATCGGCAAGTTGTACGGTGAAGTCG +>GITR|TNFRSF18|AHS0104|pAbO Catalog_940096 +TCTGTGTGTCGGGTTGAATCGTAGTGAGTTAGCGTG +>Tim3|HAVCR2|AHS0016|pAbO Catalog_940066 +TAGGTAGTAGTCCCGTATATCCGATCCGTGTTGTTT +>CD4:SK3|CD4|AHS0032|pAbO Catalog_940001 +TCGGTGTTATGAGTAGGTCGTCGTGCGGTTTGATGT +>CD45RA:HI100|PTPRC|AHS0009|pAbO Catalog_940011 +AAGCGATTGCGAAGGGTTAGTCAGTACGTTATGTTG +>CD56:NCAM16.2|NCAM1|AHS0019|pAbO Catalog_940007 +AGAGGTTGAGTCGTAATAATAATCGGAAGGCGTTGG +>CD62L:DREG-56|SELL|AHS0049|pAbO Catalog_940041 +ATGGTAAATATGGGCGAATGCGGGTTGTGCTAAAGT +>CCR7|CCR7|AHS0273|pAbO Catalog_940394 +AATGTGTGATCGGCAAAGGGTTCTCGGGTTAATATG +>CXCR6|CXCR6|AHS0148|pAbO Catalog_940234 +GTGGTTGGTTATTCGGACGGTTCTATTGTGAGCGCT +>CD127|IL7R|AHS0028|pAbO Catalog_940012 +AGTTATTAGGCTCGTAGGTATGTTTAGGTTATCGCG +>CD134:ACT35|TNFRSF4|AHS0013|pAbO Catalog_940060 +GGTGTTGGTAAGACGGACGGAGTAGATATTCGAGGT +>CD28:L293|CD28|AHS0138|pAbO Catalog_940226 +TTGTTGAGGATACGATGAAGCGGTTTAAGGGTGTGG +>CD272|BTLA|AHS0052|pAbO Catalog_940105 +GTAGGTTGATAGTCGGCGATAGTGCGGTTGAAAGCT +>CD8:SK1|CD8A|AHS0228|pAbO Catalog_940305 +AGGACATAGAGTAGGACGAGGTAGGCTTAAATTGCT +>HLA-DR|CD74|AHS0035|pAbO Catalog_940010 +TGTTGGTTATTCGTTAGTGCATCCGTTTGGGCGTGG +>CD16:3G8|FCGR3A|AHS0053|pAbO Catalog_940006 +TAAATCTAATCGCGGTAACATAACGGTGGGTAAGGT +>CD183|CXCR3|AHS0031|pAbO Catalog_940030 +AAAGTGTTGGCGTTATGTGTTCGTTAGCGGTGTGGG +>CD196|CCR6|AHS0034|pAbO Catalog_940033 +ACGTGTTATGGTGTTGTTCGAATTGTGGTAGTCAGT +>CD137|TNFRSF9|AHS0003|pAbO Catalog_940055 +TGACAAGCAACGAGCGATACGAAAGGCGAAATTAGT +>CD161:HP-3G10|KLRB1|AHS0205|pAbO Catalog_940283 +TTTAGGACGATTAGTTGTGCGGCATAGGAGGTGTTC +>IgM|IGHM|AHS0198|pAbO Catalog_940276 +TTTGGAGGGTAGCTAGTTGCAGTTCGTGGTCGTTTC +>IgD|IGHD|AHS0058|pAbO Catalog_940026 +TGAGGGATGTATAGCGAGAATTGCGACCGTAGACTT diff --git a/src/bd_rhapsody/test_data/SampleTagSequences_HomoSapiens_ver1.fasta b/src/bd_rhapsody/test_data/SampleTagSequences_HomoSapiens_ver1.fasta new file mode 100644 index 00000000..3d5a42fa --- /dev/null +++ b/src/bd_rhapsody/test_data/SampleTagSequences_HomoSapiens_ver1.fasta @@ -0,0 +1,24 @@ +>SampleTag01_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGATTCAAGGGCAGCCGCGTCACGATTGGATACGACTGTTGGACCGG +>SampleTag02_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGTGGATGGGATAAGTGCGTGATGGACCGAAGGGACCTCGTGGCCGG +>SampleTag03_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCGGCTCGTGCTGCGTCGTCTCAAGTCCAGAAACTCCGTGTATCCT +>SampleTag04_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGATTGGGAGGCTTTCGTACCGCTGCCGCCACCAGGTGATACCCGCT +>SampleTag05_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCTCCCTGGTGTTCAATACCCGATGTGGTGGGCAGAATGTGGCTGG +>SampleTag06_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGTTACCCGCAGGAAGACGTATACCCCTCGTGCCAGGCGACCAATGC +>SampleTag07_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGTGTCTACGTCGGACCGCAAGAAGTGAGTCAGAGGCTGCACGCTGT +>SampleTag08_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCCCCACCAGGTTGCTTTGTCGGACGAGCCCGCACAGCGCTAGGAT +>SampleTag09_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGGTGATCCGCGCAGGCACACATACCGACTCAGATGGGTTGTCCAGG +>SampleTag10_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGGCAGCCGGCGTCGTACGAGGCACAGCGGAGACTAGATGAGGCCCC +>SampleTag11_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCGCGTCCAATTTCCGAAGCCCCGCCCTAGGAGTTCCCCTGCGTGC +>SampleTag12_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGGCCCATTCATTGCACCCGCCAGTGATCGACCCTAGTGGAGCTAAG diff --git a/src/bd_rhapsody/bd_rhapsody_make_reference/test_data/reference_small.fa b/src/bd_rhapsody/test_data/reference_small.fa similarity index 100% rename from src/bd_rhapsody/bd_rhapsody_make_reference/test_data/reference_small.fa rename to src/bd_rhapsody/test_data/reference_small.fa diff --git a/src/bd_rhapsody/bd_rhapsody_make_reference/test_data/reference_small.gtf b/src/bd_rhapsody/test_data/reference_small.gtf similarity index 100% rename from src/bd_rhapsody/bd_rhapsody_make_reference/test_data/reference_small.gtf rename to src/bd_rhapsody/test_data/reference_small.gtf diff --git a/src/bd_rhapsody/test_data/script.sh b/src/bd_rhapsody/test_data/script.sh new file mode 100644 index 00000000..f8db0313 --- /dev/null +++ b/src/bd_rhapsody/test_data/script.sh @@ -0,0 +1,141 @@ +#!/bin/bash + +TMP_DIR=/tmp/bd_rhapsody_make_reference +OUT_DIR=src/bd_rhapsody/test_data + +# check if seqkit is installed +if ! command -v seqkit &> /dev/null; then + echo "seqkit could not be found" + exit 1 +fi + +# create temporary directory and clean up on exit +mkdir -p $TMP_DIR +function clean_up { + rm -rf "$TMP_DIR" +} +trap clean_up EXIT + +# fetch reference +ORIG_FA=$TMP_DIR/reference.fa.gz +if [ ! -f $ORIG_FA ]; then + wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/GRCh38.primary_assembly.genome.fa.gz \ + -O $ORIG_FA +fi + +ORIG_GTF=$TMP_DIR/reference.gtf.gz +if [ ! -f $ORIG_GTF ]; then + wget https://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_41/gencode.v41.annotation.gtf.gz \ + -O $ORIG_GTF +fi + +# create small reference +START=30000 +END=31500 +CHR=chr1 + +# subset to small region +seqkit grep -r -p "^$CHR\$" "$ORIG_FA" | \ + seqkit subseq -r "$START:$END" > $OUT_DIR/reference_small.fa + +zcat "$ORIG_GTF" | \ + awk -v FS='\t' -v OFS='\t' " + \$1 == \"$CHR\" && \$4 >= $START && \$5 <= $END { + \$4 = \$4 - $START + 1; + \$5 = \$5 - $START + 1; + print; + }" > $OUT_DIR/reference_small.gtf + +# download bdabseq immunediscoverypanel fasta +# note: was contained in http://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-Demo-Data-Inputs/12WTA-ABC-SMK-EB-5kJRT.tar +cat > $OUT_DIR/BDAbSeq_ImmuneDiscoveryPanel.fasta <CD11c:B-LY6|ITGAX|AHS0056|pAbO Catalog_940024 +ATGCGTTGCGAGAGATATGCGTAGGTTGCTGATTGG +>CD14:MPHIP9|CD14|AHS0037|pAbO Catalog_940005 +TGGCCCGTGGTAGCGCAATGTGAGATCGTAATAAGT +>CXCR5|CXCR5|AHS0039|pAbO Catalog_940042 +AGGAAGGTCGATTGTATAACGCGGCATTGTAACGGC +>CD19:SJ25C1|CD19|AHS0030|pAbO Catalog_940004 +TAGTAATGTGTTCGTAGCCGGTAATAATCTTCGTGG +>CD25:2A3|IL2RA|AHS0026|pAbO Catalog_940009 +AGTTGTATGGGTTAGCCGAGAGTAGTGCGTATGATT +>CD27:M-T271|CD27|AHS0025|pAbO Catalog_940018 +TGTCCGGTTTAGCGAATTGGGTTGAGTCACGTAGGT +>CD278|ICOS|AHS0012|pAbO Catalog_940043 +ATAGTCCGCCGTAATCGTTGTGTCGCTGAAAGGGTT +>CD279:EH12-1|PDCD1|AHS0014|pAbO Catalog_940015 +ATGGTAGTATCACGACGTAGTAGGGTAATTGGCAGT +>CD3:UCHT1|CD3E|AHS0231|pAbO Catalog_940307 +AGCTAGGTGTTATCGGCAAGTTGTACGGTGAAGTCG +>GITR|TNFRSF18|AHS0104|pAbO Catalog_940096 +TCTGTGTGTCGGGTTGAATCGTAGTGAGTTAGCGTG +>Tim3|HAVCR2|AHS0016|pAbO Catalog_940066 +TAGGTAGTAGTCCCGTATATCCGATCCGTGTTGTTT +>CD4:SK3|CD4|AHS0032|pAbO Catalog_940001 +TCGGTGTTATGAGTAGGTCGTCGTGCGGTTTGATGT +>CD45RA:HI100|PTPRC|AHS0009|pAbO Catalog_940011 +AAGCGATTGCGAAGGGTTAGTCAGTACGTTATGTTG +>CD56:NCAM16.2|NCAM1|AHS0019|pAbO Catalog_940007 +AGAGGTTGAGTCGTAATAATAATCGGAAGGCGTTGG +>CD62L:DREG-56|SELL|AHS0049|pAbO Catalog_940041 +ATGGTAAATATGGGCGAATGCGGGTTGTGCTAAAGT +>CCR7|CCR7|AHS0273|pAbO Catalog_940394 +AATGTGTGATCGGCAAAGGGTTCTCGGGTTAATATG +>CXCR6|CXCR6|AHS0148|pAbO Catalog_940234 +GTGGTTGGTTATTCGGACGGTTCTATTGTGAGCGCT +>CD127|IL7R|AHS0028|pAbO Catalog_940012 +AGTTATTAGGCTCGTAGGTATGTTTAGGTTATCGCG +>CD134:ACT35|TNFRSF4|AHS0013|pAbO Catalog_940060 +GGTGTTGGTAAGACGGACGGAGTAGATATTCGAGGT +>CD28:L293|CD28|AHS0138|pAbO Catalog_940226 +TTGTTGAGGATACGATGAAGCGGTTTAAGGGTGTGG +>CD272|BTLA|AHS0052|pAbO Catalog_940105 +GTAGGTTGATAGTCGGCGATAGTGCGGTTGAAAGCT +>CD8:SK1|CD8A|AHS0228|pAbO Catalog_940305 +AGGACATAGAGTAGGACGAGGTAGGCTTAAATTGCT +>HLA-DR|CD74|AHS0035|pAbO Catalog_940010 +TGTTGGTTATTCGTTAGTGCATCCGTTTGGGCGTGG +>CD16:3G8|FCGR3A|AHS0053|pAbO Catalog_940006 +TAAATCTAATCGCGGTAACATAACGGTGGGTAAGGT +>CD183|CXCR3|AHS0031|pAbO Catalog_940030 +AAAGTGTTGGCGTTATGTGTTCGTTAGCGGTGTGGG +>CD196|CCR6|AHS0034|pAbO Catalog_940033 +ACGTGTTATGGTGTTGTTCGAATTGTGGTAGTCAGT +>CD137|TNFRSF9|AHS0003|pAbO Catalog_940055 +TGACAAGCAACGAGCGATACGAAAGGCGAAATTAGT +>CD161:HP-3G10|KLRB1|AHS0205|pAbO Catalog_940283 +TTTAGGACGATTAGTTGTGCGGCATAGGAGGTGTTC +>IgM|IGHM|AHS0198|pAbO Catalog_940276 +TTTGGAGGGTAGCTAGTTGCAGTTCGTGGTCGTTTC +>IgD|IGHD|AHS0058|pAbO Catalog_940026 +TGAGGGATGTATAGCGAGAATTGCGACCGTAGACTT +EOF + +# this was obtained by running the command: +# docker run bdgenomics/rhapsody:2.2.1 cat /rhapsody/control_files/SampleTagSequences_HomoSapiens_ver1.fasta +cat > $OUT_DIR/SampleTagSequences_HomoSapiens_ver1.fasta <SampleTag01_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGATTCAAGGGCAGCCGCGTCACGATTGGATACGACTGTTGGACCGG +>SampleTag02_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGTGGATGGGATAAGTGCGTGATGGACCGAAGGGACCTCGTGGCCGG +>SampleTag03_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCGGCTCGTGCTGCGTCGTCTCAAGTCCAGAAACTCCGTGTATCCT +>SampleTag04_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGATTGGGAGGCTTTCGTACCGCTGCCGCCACCAGGTGATACCCGCT +>SampleTag05_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCTCCCTGGTGTTCAATACCCGATGTGGTGGGCAGAATGTGGCTGG +>SampleTag06_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGTTACCCGCAGGAAGACGTATACCCCTCGTGCCAGGCGACCAATGC +>SampleTag07_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGTGTCTACGTCGGACCGCAAGAAGTGAGTCAGAGGCTGCACGCTGT +>SampleTag08_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCCCCACCAGGTTGCTTTGTCGGACGAGCCCGCACAGCGCTAGGAT +>SampleTag09_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGGTGATCCGCGCAGGCACACATACCGACTCAGATGGGTTGTCCAGG +>SampleTag10_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGGCAGCCGGCGTCGTACGAGGCACAGCGGAGACTAGATGAGGCCCC +>SampleTag11_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGCGCGTCCAATTTCCGAAGCCCCGCCCTAGGAGTTCCCCTGCGTGC +>SampleTag12_hs|stAbO +GTTGTCAAGATGCTACCGTTCAGAGGCCCATTCATTGCACCCGCCAGTGATCGACCCTAGTGGAGCTAAG +EOF diff --git a/target/executable/agat/agat_convert_bed2gff/.config.vsh.yaml b/target/executable/agat/agat_convert_bed2gff/.config.vsh.yaml index 25befac6..aac05d20 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 fa2df928..66be31b0 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-09-17T06:47:34Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:57Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 618bfac0..93c70e0f 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 387c23e5..31ee1d3e 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-09-17T06:47:33Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:56Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 356b6fce..a1f14b2a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 adcf93d9..527d9b2e 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-09-17T06:47:34Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:57Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 49aa6e24..f5f337a8 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 43f970eb..6046c7a1 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-09-17T06:47:34Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:57Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 3f8dd2a6..735f0758 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 4431a8a9..283f1e25 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-09-17T06:47:33Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:56Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 53194616..9ced924b 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 ce66a5e3..b23fe2b7 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-09-17T06:47:33Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:56Z" LABEL org.opencontainers.image.source="https://github.com/NBISweden/AGAT" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/arriba/.config.vsh.yaml b/target/executable/arriba/.config.vsh.yaml index e92ab503..b8e79ae1 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/arriba/arriba b/target/executable/arriba/arriba index 98b427af..32260676 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-09-17T06:47:36Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:59Z" LABEL org.opencontainers.image.source="https://github.com/suhrig/arriba" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 07faeecb..456cc05a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 72064de2..39a8457f 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-09-17T06:47:28Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:50Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 b853b542..48cabff6 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 cda63286..24f53c74 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-09-17T06:47:28Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:51Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 88fafb5c..90d29e8e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 ca5cc4b6..0d9c80ba 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-09-17T06:47:29Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:51Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 5cc8ba49..6700dc6e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 206195ff..19a2c784 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-09-17T06:47:27Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:50Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 353a0c9b..cd7aae02 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 5cb1505b..3575de41 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-09-17T06:47:28Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:51Z" LABEL org.opencontainers.image.source="https://github.com/samtools/bcftools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 1c468e1a..026c071e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/bcl_convert/bcl_convert b/target/executable/bcl_convert/bcl_convert index 4de0c625..f6bb105c 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-09-17T06:47:35Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:58Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 c8e9f61c..a639f61f 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 @@ -146,8 +146,6 @@ resources: - type: "python_script" path: "script.py" is_executable: true -- type: "file" - path: "make_rhap_reference_2.2.1_nodocker.cwl" description: "The Reference Files Generator creates an archive containing Genome Index\n\ and Transcriptome annotation files needed for the BD Rhapsody Sequencing\nAnalysis\ \ Pipeline. The app takes as input one or more FASTA and GTF files\nand produces\ @@ -249,6 +247,7 @@ engines: - type: "apt" packages: - "procps" + - "git" interactive: false - type: "python" user: false @@ -258,7 +257,12 @@ engines: upgrade: true - type: "docker" run: - - "echo \"bdgenomics/rhapsody: 2.2.1\" > /var/software_versions.txt\n" + - "mkdir /var/bd_rhapsody_cwl && \\\n cd /var/bd_rhapsody_cwl && \\\n git clone\ + \ https://bitbucket.org/CRSwDev/cwl.git . && \\\n git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de\n" + - type: "docker" + run: + - "VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1)" + - "echo \"bdgenomics/rhapsody: \\\"$VERSION\\\"\" > /var/software_versions.txt" entrypoint: [] cmd: null - type: "native" @@ -270,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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 50687d2a..ae866332 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 @@ -539,19 +539,24 @@ function ViashDockerfile { FROM bdgenomics/rhapsody:2.2.1 ENTRYPOINT [] RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y procps && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y procps git && \ rm -rf /var/lib/apt/lists/* RUN pip install --upgrade pip && \ pip install --upgrade --no-cache-dir "cwlref-runner" "cwl-runner" -RUN echo "bdgenomics/rhapsody: 2.2.1" > /var/software_versions.txt +RUN mkdir /var/bd_rhapsody_cwl && \ + cd /var/bd_rhapsody_cwl && \ + git clone https://bitbucket.org/CRSwDev/cwl.git . && \ + git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de +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-09-17T06:47:38Z" +LABEL org.opencontainers.image.created="2024-09-17T09:53:02Z" LABEL org.opencontainers.image.source="https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1/Extra_Utilities/" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER @@ -1360,21 +1365,21 @@ def generate_config(par: dict[str, Any], meta, config) -> str: for config_key, arg_type, par_value in config_key_value_pairs: if arg_type == "file": - str = strip_margin(f"""\\ + content = strip_margin(f"""\\ |{config_key}: |""") if isinstance(par_value, list): for file in par_value: - str += strip_margin(f"""\\ + content += strip_margin(f"""\\ | - class: File | location: "{file}" |""") else: - str += strip_margin(f"""\\ + content += strip_margin(f"""\\ | class: File | location: "{par_value}" |""") - content_list.append(str) + content_list.append(content) else: content_list.append(strip_margin(f"""\\ |{config_key}: {par_value} @@ -1385,9 +1390,9 @@ def generate_config(par: dict[str, Any], meta, config) -> str: def get_cwl_file(meta: dict[str, Any]) -> str: # create cwl file (if need be) - cwl_file=os.path.join(meta["resources_dir"], "make_rhap_reference_2.2.1_nodocker.cwl") + cwl_file="/var/bd_rhapsody_cwl/v2.2.1/Extra_Utilities/make_rhap_reference_2.2.1.cwl" - return cwl_file + return os.path.abspath(cwl_file) def main(par: dict[str, Any], meta: dict[str, Any]): config = read_config(meta["config"]) diff --git a/target/executable/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl b/target/executable/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl deleted file mode 100644 index fead2c02..00000000 --- a/target/executable/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl +++ /dev/null @@ -1,115 +0,0 @@ -requirements: - InlineJavascriptRequirement: {} -class: CommandLineTool -label: Reference Files Generator for BD Rhapsodyâ„¢ Sequencing Analysis Pipeline -cwlVersion: v1.2 -doc: >- - The Reference Files Generator creates an archive containing Genome Index and Transcriptome annotation files needed for the BD Rhapsodyâ„¢ Sequencing Analysis Pipeline. The app takes as input one or more FASTA and GTF files and produces a compressed archive in the form of a tar.gz file. The archive contains:\n - STAR index\n - Filtered GTF file - - -baseCommand: run_reference_generator.sh -inputs: - Genome_fasta: - type: File[] - label: Reference Genome - doc: |- - Reference genome file in FASTA format. The BD Rhapsodyâ„¢ Sequencing Analysis Pipeline uses GRCh38 for Human and GRCm39 for Mouse. - inputBinding: - prefix: --reference-genome - shellQuote: false - Gtf: - type: File[] - label: Transcript Annotations - doc: |- - Transcript annotation files in GTF format. The BD Rhapsodyâ„¢ Sequencing Analysis Pipeline uses Gencode v42 for Human and M31 for Mouse. - inputBinding: - prefix: --gtf - shellQuote: false - Extra_sequences: - type: File[]? - label: Extra Sequences - doc: |- - Additional sequences in FASTA format to use when building the STAR index. (E.g. phiX genome) - inputBinding: - prefix: --extra-sequences - shellQuote: false - Mitochondrial_Contigs: - type: string[]? - default: ["chrM", "chrMT", "M", "MT"] - label: Mitochondrial Contig Names - doc: |- - Names of the Mitochondrial contigs in the provided Reference Genome. Fragments originating from contigs other than these are identified as 'nuclear fragments' in the ATACseq analysis pipeline. - inputBinding: - prefix: --mitochondrial-contigs - shellQuote: false - Filtering_off: - type: boolean? - label: Turn off filtering - doc: |- - By default the input Transcript Annotation files are filtered based on the gene_type/gene_biotype attribute. Only features having the following attribute values are are kept: - - protein_coding - - lncRNA (lincRNA and antisense for Gencode < v31/M22/Ensembl97) - - IG_LV_gene - - IG_V_gene - - IG_V_pseudogene - - IG_D_gene - - IG_J_gene - - IG_J_pseudogene - - IG_C_gene - - IG_C_pseudogene - - TR_V_gene - - TR_V_pseudogene - - TR_D_gene - - TR_J_gene - - TR_J_pseudogene - - TR_C_gene - If you have already pre-filtered the input Annotation files and/or wish to turn-off the filtering, please set this option to True. - inputBinding: - prefix: --filtering-off - shellQuote: false - WTA_Only: - type: boolean? - label: WTA only index - doc: Build a WTA only index, otherwise builds a WTA + ATAC index. - inputBinding: - prefix: --wta-only-index - shellQuote: false - Archive_prefix: - type: string? - label: Archive Prefix - doc: |- - A prefix for naming the compressed archive file containing the Reference genome index and annotation files. The default value is constructed based on the input Reference files. - inputBinding: - prefix: --archive-prefix - shellQuote: false - Extra_STAR_params: - type: string? - label: Extra STAR Params - doc: |- - Additional parameters to pass to STAR when building the genome index. Specify exactly like how you would on the command line. - Example: - --limitGenomeGenerateRAM 48000 --genomeSAindexNbases 11 - inputBinding: - prefix: --extra-star-params - shellQuote: true - - Maximum_threads: - type: int? - label: Maximum Number of Threads - doc: |- - The maximum number of threads to use in the pipeline. By default, all available cores are used. - inputBinding: - prefix: --maximum-threads - shellQuote: false - -outputs: - - Archive: - type: File - doc: |- - A Compressed archive containing the Reference Genome Index and annotation GTF files. This archive is meant to be used as an input in the BD Rhapsodyâ„¢ Sequencing Analysis Pipeline. - id: Reference_Archive - label: Reference Files Archive - outputBinding: - glob: '*.tar.gz' - 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 new file mode 100644 index 00000000..46d843ab --- /dev/null +++ b/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml @@ -0,0 +1,1142 @@ +name: "bd_rhapsody_sequence_analysis" +namespace: "bd_rhapsody" +version: "main" +authors: +- name: "Robrecht Cannoodt" + roles: + - "author" + - "maintainer" + info: + links: + email: "robrecht@data-intuitive.com" + github: "rcannood" + orcid: "0000-0003-3641-729X" + linkedin: "robrechtcannoodt" + organizations: + - name: "Data Intuitive" + href: "https://www.data-intuitive.com" + role: "Data Science Engineer" + - name: "Open Problems" + href: "https://openproblems.bio" + role: "Core Member" +- name: "Weiwei Schultz" + roles: + - "contributor" + info: + organizations: + - name: "Janssen R&D US" + role: "Associate Director Data Sciences" +argument_groups: +- name: "Inputs" + arguments: + - type: "file" + name: "--reads" + description: "Reads (optional) - Path to your FASTQ.GZ formatted read files from\ + \ libraries that may include:\n\n- WTA mRNA\n- Targeted mRNA\n- AbSeq\n- Sample\ + \ Multiplexing\n- VDJ\n\nYou may specify as many R1/R2 read pairs as you want.\n" + info: + config_key: "Reads" + example: + - "WTALibrary_S1_L001_R1_001.fastq.gz" + - "WTALibrary_S1_L001_R2_001.fastq.gz" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--reads_atac" + description: "Path to your FASTQ.GZ formatted read files from ATAC-Seq libraries.\n\ + You may specify as many R1/R2/I2 files as you want.\n" + info: + config_key: "Reads_ATAC" + example: + - "ATACLibrary_S2_L001_R1_001.fastq.gz" + - "ATACLibrary_S2_L001_R2_001.fastq.gz" + - "ATACLibrary_S2_L001_I2_001.fastq.gz" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" +- name: "References" + description: "Assay type will be inferred from the provided reference(s).\nDo not\ + \ provide both reference_archive and targeted_reference at the same time.\n\n\ + Valid reference input combinations:\n - reference_archive: WTA only\n - reference_archive\ + \ & abseq_reference: WTA + AbSeq\n - reference_archive & supplemental_reference:\ + \ WTA + extra transgenes\n - reference_archive & abseq_reference & supplemental_reference:\ + \ WTA + AbSeq + extra transgenes\n - reference_archive: WTA + ATAC or ATAC only\n\ + \ - reference_archive & supplemental_reference: WTA + ATAC + extra transgenes\n\ + \ - targeted_reference: Targeted only\n - targeted_reference & abseq_reference:\ + \ Targeted + AbSeq\n - abseq_reference: AbSeq only\n\nThe reference_archive can\ + \ be generated with the bd_rhapsody_make_reference component.\nAlternatively,\ + \ BD also provides standard references which can be downloaded from these locations:\n\ + \n - Human: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Human_WTA_2023-02.tar.gz\n\ + \ - Mouse: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Mouse_WTA_2023-02.tar.gz\n" + arguments: + - type: "file" + name: "--reference_archive" + description: "Path to Rhapsody WTA Reference in the tar.gz format.\n\nStructure\ + \ of the reference archive:\n\n- `BD_Rhapsody_Reference_Files/`: top level folder\n\ + \ - `star_index/`: sub-folder containing STAR index, that is files created\ + \ with `STAR --runMode genomeGenerate`\n - GTF for gene-transcript-annotation\ + \ e.g. \"gencode.v43.primary_assembly.annotation.gtf\"\n" + info: + config_key: "Reference_Archive" + example: + - "RhapRef_Human_WTA_2023-02.tar.gz" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--targeted_reference" + description: "Path to the targeted reference file in FASTA format.\n" + info: + config_key: "Targeted_Reference" + example: + - "BD_Rhapsody_Immune_Response_Panel_Hs.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--abseq_reference" + description: "Path to the AbSeq reference file in FASTA format. Only needed if\ + \ BD AbSeq Ab-Oligos are used." + info: + config_key: "AbSeq_Reference" + example: + - "AbSeq_reference.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--supplemental_reference" + alternatives: + - "-s" + description: "Path to the supplemental reference file in FASTA format. Only needed\ + \ if there are additional transgene sequences to be aligned against in a WTA\ + \ assay experiment." + info: + config_key: "Supplemental_Reference" + example: + - "supplemental_reference.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" +- name: "Outputs" + description: "Outputs for all pipeline runs" + arguments: + - type: "file" + name: "--output_dir" + alternatives: + - "-o" + description: "The unprocessed output directory containing all the outputs from\ + \ the pipeline." + info: null + example: + - "output_dir" + must_exist: true + create_parent: true + required: true + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--output_seurat" + description: "Single-cell analysis tool inputs. Seurat (.rds) input file containing\ + \ RSEC molecules data table and all cell annotation metadata." + info: + template: "[sample_name]_Seurat.rds" + example: + - "output_seurat.rds" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--output_mudata" + description: "Single-cell analysis tool inputs. Scanpy / Muon input file containing\ + \ RSEC molecules data table and all cell annotation metadata." + info: + template: "[sample_name].h5mu" + example: + - "output_mudata.h5mu" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--metrics_summary" + description: "Metrics Summary. Report containing sequencing, molecules, and cell\ + \ metrics." + info: + template: "[sample_name]_Metrics_Summary.csv" + example: + - "metrics_summary.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--pipeline_report" + description: "Pipeline Report. Summary report containing the results from the\ + \ sequencing analysis pipeline run." + info: + template: "[sample_name]_Pipeline_Report.html" + example: + - "pipeline_report.html" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--rsec_mols_per_cell" + description: "Molecules per bioproduct per cell bassed on RSEC" + info: + template: "[sample_name]_RSEC_MolsPerCell_MEX.zip" + example: + - "RSEC_MolsPerCell_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--dbec_mols_per_cell" + description: "Molecules per bioproduct per cell bassed on DBEC. DBEC data table\ + \ is only output if the experiment includes targeted mRNA or AbSeq bioproducts." + info: + template: "[sample_name]_DBEC_MolsPerCell_MEX.zip" + example: + - "DBEC_MolsPerCell_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--rsec_mols_per_cell_unfiltered" + description: "Unfiltered tables containing all cell labels with ≥10 reads." + info: + template: "[sample_name]_RSEC_MolsPerCell_Unfiltered_MEX.zip" + example: + - "RSEC_MolsPerCell_Unfiltered_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--bam" + description: "Alignment file of R2 with associated R1 annotations for Bioproduct." + info: + template: "[sample_name]_Bioproduct.bam" + example: + - "BioProduct.bam" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--bam_index" + description: "Index file for the alignment file." + info: + template: "[sample_name]_Bioproduct.bam.bai" + example: + - "BioProduct.bam.bai" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--bioproduct_stats" + description: "Bioproduct Stats. Metrics from RSEC and DBEC Unique Molecular Identifier\ + \ adjustment algorithms on a per-bioproduct basis." + info: + template: "[sample_name]_Bioproduct_Stats.csv" + example: + - "Bioproduct_Stats.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--dimred_tsne" + description: "t-SNE dimensionality reduction coordinates per cell index" + info: + template: "[sample_name]_(assay)_tSNE_coordinates.csv" + example: + - "tSNE_coordinates.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--dimred_umap" + description: "UMAP dimensionality reduction coordinates per cell index" + info: + template: "[sample_name]_(assay)_UMAP_coordinates.csv" + example: + - "UMAP_coordinates.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--immune_cell_classification" + description: "Immune Cell Classification. Cell type classification based on the\ + \ expression of immune cell markers." + info: + template: "[sample_name]_(assay)_cell_type_experimental.csv" + example: + - "Immune_Cell_Classification.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Multiplex outputs" + description: "Outputs when multiplex option is selected" + arguments: + - type: "file" + name: "--sample_tag_metrics" + description: "Sample Tag Metrics. Metrics from the sample determination algorithm." + info: + template: "[sample_name]_Sample_Tag_Metrics.csv" + example: + - "Sample_Tag_Metrics.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--sample_tag_calls" + description: "Sample Tag Calls. Assigned Sample Tag for each putative cell" + info: + template: "[sample_name]_Sample_Tag_Calls.csv" + example: + - "Sample_Tag_Calls.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--sample_tag_counts" + description: "Sample Tag Counts. Separate data tables and metric summary for cells\ + \ assigned to each sample tag. Note: For putative cells that could not be assigned\ + \ a specific Sample Tag, a Multiplet_and_Undetermined.zip file is also output." + info: + template: "[sample_name]_Sample_Tag[number].zip" + example: + - "Sample_Tag1.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--sample_tag_counts_unassigned" + description: "Sample Tag Counts Unassigned. Data table and metric summary for\ + \ cells that could not be assigned a specific Sample Tag." + info: + template: "[sample_name]_Multiplet_and_Undetermined.zip" + example: + - "Multiplet_and_Undetermined.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "VDJ Outputs" + description: "Outputs when VDJ option selected" + arguments: + - type: "file" + name: "--vdj_metrics" + description: "VDJ Metrics. Overall metrics from the VDJ analysis." + info: + template: "[sample_name]_VDJ_Metrics.csv" + example: + - "VDJ_Metrics.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_per_cell" + description: "VDJ Per Cell. Cell specific read and molecule counts, VDJ gene segments,\ + \ CDR3 sequences, paired chains, and cell type." + info: + template: "[sample_name]_VDJ_perCell.csv" + example: + - "VDJ_perCell.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_per_cell_uncorrected" + description: "VDJ Per Cell Uncorrected. Cell specific read and molecule counts,\ + \ VDJ gene segments, CDR3 sequences, paired chains, and cell type." + info: + template: "[sample_name]_VDJ_perCell_uncorrected.csv" + example: + - "VDJ_perCell_uncorrected.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_dominant_contigs" + description: "VDJ Dominant Contigs. Dominant contig for each cell label chain\ + \ type combination (putative cells only)." + info: + template: "[sample_name]_VDJ_Dominant_Contigs_AIRR.csv" + example: + - "VDJ_Dominant_Contigs_AIRR.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_unfiltered_contigs" + description: "VDJ Unfiltered Contigs. All contigs that were assembled and annotated\ + \ successfully (all cells)." + info: + template: "[sample_name]_VDJ_Unfiltered_Contigs_AIRR.csv" + example: + - "VDJ_Unfiltered_Contigs_AIRR.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "ATAC-Seq outputs" + description: "Outputs when ATAC-Seq option selected" + arguments: + - type: "file" + name: "--atac_metrics" + description: "ATAC Metrics. Overall metrics from the ATAC-Seq analysis." + info: + template: "[sample_name]_ATAC_Metrics.csv" + example: + - "ATAC_Metrics.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_metrics_json" + description: "ATAC Metrics JSON. Overall metrics from the ATAC-Seq analysis in\ + \ JSON format." + info: + template: "[sample_name]_ATAC_Metrics.json" + example: + - "ATAC_Metrics.json" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_fragments" + description: "ATAC Fragments. Chromosomal location, cell index, and read support\ + \ for each fragment detected" + info: + template: "[sample_name]_ATAC_Fragments.bed.gz" + example: + - "ATAC_Fragments.bed.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_fragments_index" + description: "Index of ATAC Fragments." + info: + template: "[sample_name]_ATAC_Fragments.bed.gz.tbi" + example: + - "ATAC_Fragments.bed.gz.tbi" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_transposase_sites" + description: "ATAC Transposase Sites. Chromosomal location, cell index, and read\ + \ support for each transposase site detected" + info: + template: "[sample_name]_ATAC_Transposase_Sites.bed.gz" + example: + - "ATAC_Transposase_Sites.bed.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_transposase_sites_index" + description: "Index of ATAC Transposase Sites." + info: + template: "[sample_name]_ATAC_Transposase_Sites.bed.gz.tbi" + example: + - "ATAC_Transposase_Sites.bed.gz.tbi" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_peaks" + description: "ATAC Peaks. Peak regions of transposase activity" + info: + template: "[sample_name]_ATAC_Peaks.bed.gz" + example: + - "ATAC_Peaks.bed.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_peaks_index" + description: "Index of ATAC Peaks." + info: + template: "[sample_name]_ATAC_Peaks.bed.gz.tbi" + example: + - "ATAC_Peaks.bed.gz.tbi" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_peak_annotation" + description: "ATAC Peak Annotation. Estimated annotation of peak-to-gene connections" + info: + template: "[sample_name]_peak_annotation.tsv.gz" + example: + - "peak_annotation.tsv.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_cell_by_peak" + description: "ATAC Cell by Peak. Peak regions of transposase activity per cell" + info: + template: "[sample_name]_ATAC_Cell_by_Peak_MEX.zip" + example: + - "ATAC_Cell_by_Peak_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_cell_by_peak_unfiltered" + description: "ATAC Cell by Peak Unfiltered. Unfiltered file containing all cell\ + \ labels with >=1 transposase sites in peaks." + info: + template: "[sample_name]_ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + example: + - "ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_bam" + description: "ATAC BAM. Alignment file for R1 and R2 with associated I2 annotations\ + \ for ATAC-Seq. Only output if the BAM generation flag is set to true." + info: + template: "[sample_name]_ATAC.bam" + example: + - "ATAC.bam" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_bam_index" + description: "Index of ATAC BAM." + info: + template: "[sample_name]_ATAC.bam.bai" + example: + - "ATAC.bam.bai" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "AbSeq Cell Calling outputs" + description: "Outputs when Cell Calling Abseq is selected" + arguments: + - type: "file" + name: "--protein_aggregates_experimental" + description: "Protein Aggregates Experimental" + info: + template: "[sample_name]_Protein_Aggregates_Experimental.csv" + example: + - "Protein_Aggregates_Experimental.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Putative Cell Calling Settings" + arguments: + - type: "string" + name: "--cell_calling_data" + description: "Specify the dataset to be used for putative cell calling: mRNA,\ + \ AbSeq, ATAC, mRNA_and_ATAC\n\nFor putative cell calling using an AbSeq dataset,\ + \ please provide an AbSeq_Reference fasta file above.\n\nFor putative cell calling\ + \ using an ATAC dataset, please provide a WTA+ATAC-Seq Reference_Archive file\ + \ above.\n\nThe default data for putative cell calling, will be determined the\ + \ following way:\n\n- If mRNA Reads and ATAC Reads exist: mRNA_and_ATAC\n- If\ + \ only ATAC Reads exist: ATAC\n- Otherwise: mRNA\n" + info: + config_key: "Cell_Calling_Data" + example: + - "mRNA" + required: false + choices: + - "mRNA" + - "AbSeq" + - "ATAC" + - "mRNA_and_ATAC" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--cell_calling_bioproduct_algorithm" + description: "Specify the bioproduct algorithm to be used for putative cell calling:\ + \ Basic or Refined\n\nBy default, the Basic algorithm will be used for putative\ + \ cell calling.\n" + info: + config_key: "Cell_Calling_Bioproduct_Algorithm" + example: + - "Basic" + required: false + choices: + - "Basic" + - "Refined" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--cell_calling_atac_algorithm" + description: "Specify the ATAC-seq algorithm to be used for putative cell calling:\ + \ Basic or Refined\n\nBy default, the Basic algorithm will be used for putative\ + \ cell calling.\n" + info: + config_key: "Cell_Calling_ATAC_Algorithm" + example: + - "Basic" + required: false + choices: + - "Basic" + - "Refined" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "integer" + name: "--exact_cell_count" + description: "Set a specific number (>=1) of cells as putative, based on those\ + \ with the highest error-corrected read count\n" + info: + config_key: "Exact_Cell_Count" + example: + - 10000 + required: false + min: 1 + direction: "input" + multiple: false + multiple_sep: ";" + - type: "integer" + name: "--expected_cell_count" + description: "Guide the basic putative cell calling algorithm by providing an\ + \ estimate of the number of cells expected. Usually this can be the number\ + \ of cells loaded into the Rhapsody cartridge. If there are multiple inflection\ + \ points on the second derivative cumulative curve, this will ensure the one\ + \ selected is near the expected. \n" + info: + config_key: "Expected_Cell_Count" + example: + - 20000 + required: false + min: 1 + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Intronic Reads Settings" + arguments: + - type: "boolean" + name: "--exclude_intronic_reads" + description: "By default, the flag is false, and reads aligned to exons and introns\ + \ are considered and represented in molecule counts. When the flag is set to\ + \ true, intronic reads will be excluded.\nThe value can be true or false.\n" + info: + config_key: "Exclude_Intronic_Reads" + example: + - false + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Multiplex Settings" + arguments: + - type: "string" + name: "--sample_tags_version" + description: "Specify the version of the Sample Tags used in the run:\n\n* If\ + \ Sample Tag Multiplexing was done, specify the appropriate version: human,\ + \ mouse, flex, nuclei_includes_mrna, nuclei_atac_only\n* If this is an SMK +\ + \ Nuclei mRNA run or an SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq) run (and not\ + \ an SMK + ATAC-Seq only run), choose the \"nuclei_includes_mrna\" option.\n\ + * If this is an SMK + ATAC-Seq only run (and not SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq)),\ + \ choose the \"nuclei_atac_only\" option.\n" + info: + config_key: "Sample_Tags_Version" + example: + - "human" + required: false + choices: + - "human" + - "mouse" + - "flex" + - "nuclei_includes_mrna" + - "nuclei_atac_only" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--tag_names" + description: "Specify the tag number followed by '-' and the desired sample name\ + \ to appear in Sample_Tag_Metrics.csv\nDo not use the special characters: &,\ + \ (), [], {}, <>, ?, |\n" + info: + config_key: "Tag_Names" + example: + - "4-mySample" + - "9-myOtherSample" + - "6-alsoThisSample" + required: false + direction: "input" + multiple: true + multiple_sep: ";" +- name: "VDJ arguments" + arguments: + - type: "string" + name: "--vdj_version" + description: "If VDJ was done, specify the appropriate option: human, mouse, humanBCR,\ + \ humanTCR, mouseBCR, mouseTCR\n" + info: + config_key: "VDJ_Version" + example: + - "human" + required: false + choices: + - "human" + - "mouse" + - "humanBCR" + - "humanTCR" + - "mouseBCR" + - "mouseTCR" + direction: "input" + multiple: false + multiple_sep: ";" +- name: "ATAC options" + arguments: + - type: "file" + name: "--predefined_atac_peaks" + description: "An optional BED file containing pre-established chromatin accessibility\ + \ peak regions for generating the ATAC cell-by-peak matrix." + info: + config_key: "Predefined_ATAC_Peaks" + example: + - "predefined_peaks.bed" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Additional options" + arguments: + - type: "string" + name: "--run_name" + description: "Specify a run name to use as the output file base name. Use only\ + \ letters, numbers, or hyphens. Do not use special characters or spaces.\n" + info: + config_key: "Run_Name" + default: + - "sample" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--generate_bam" + description: "Specify whether to create the BAM file output\n" + info: + config_key: "Generate_Bam" + default: + - false + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--long_reads" + description: "Use STARlong (default: undefined - i.e. autodetects based on read\ + \ lengths) - Specify if the STARlong aligner should be used instead of STAR.\ + \ Set to true if the reads are longer than 650bp.\n" + info: + config_key: "Long_Reads" + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Advanced options" + description: "NOTE: Only change these if you are really sure about what you are\ + \ doing\n" + arguments: + - type: "string" + name: "--custom_star_params" + description: "Modify STAR alignment parameters - Set this parameter to fully override\ + \ default STAR mapping parameters used in the pipeline.\nFor reference this\ + \ is the default that is used:\n\n Short Reads: `--outFilterScoreMinOverLread\ + \ 0 --outFilterMatchNminOverLread 0 --outFilterMultimapScoreRange 0 --clip3pAdapterSeq\ + \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --seedSearchStartLmax 50 --outFilterMatchNmin\ + \ 25 --limitOutSJcollapsed 2000000`\n Long Reads: Same as Short Reads + `--seedPerReadNmax\ + \ 10000`\n\nThis applies to fastqs provided in the Reads user input \nDo NOT\ + \ set any non-mapping related params like `--genomeDir`, `--outSAMtype`, `--outSAMunmapped`,\ + \ `--readFilesIn`, `--runThreadN`, etc.\nWe use STAR version 2.7.10b\n" + info: + config_key: "Custom_STAR_Params" + example: + - "--alignIntronMax 6000 --outFilterScoreMinOverLread 0.1 --limitOutSJcollapsed\ + \ 2000000" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--custom_bwa_mem2_params" + description: "Modify bwa-mem2 alignment parameters - Set this parameter to fully\ + \ override bwa-mem2 mapping parameters used in the pipeline\nThe pipeline does\ + \ not specify any custom mapping params to bwa-mem2 so program default values\ + \ are used\nThis applies to fastqs provided in the Reads_ATAC user input \n\ + Do NOT set any non-mapping related params like `-C`, `-t`, etc.\nWe use bwa-mem2\ + \ version 2.2.1\n" + info: + config_key: "Custom_bwa_mem2_Params" + example: + - "-k 16 -w 200 -r" + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "CWL-runner arguments" + arguments: + - type: "boolean" + name: "--parallel" + description: "Run jobs in parallel." + info: null + default: + - true + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean_true" + name: "--timestamps" + description: "Add timestamps to the errors, warnings, and notifications." + info: null + direction: "input" +- name: "Undocumented arguments" + arguments: + - type: "integer" + name: "--abseq_umi" + info: + config_key: "AbSeq_UMI" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--target_analysis" + info: + config_key: "Target_analysis" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "double" + name: "--vdj_jgene_evalue" + description: "e-value threshold for J gene. The e-value threshold for J gene call\ + \ by IgBlast/PyIR, default is set as 0.001\n" + info: + config_key: "VDJ_JGene_Evalue" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "double" + name: "--vdj_vgene_evalue" + description: "e-value threshold for V gene. The e-value threshold for V gene call\ + \ by IgBlast/PyIR, default is set as 0.001\n" + info: + config_key: "VDJ_VGene_Evalue" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--write_filtered_reads" + info: + config_key: "Write_Filtered_Reads" + required: false + direction: "input" + multiple: false + multiple_sep: ";" +resources: +- type: "python_script" + path: "script.py" + is_executable: true +description: "BD Rhapsody Sequence Analysis CWL pipeline v2.2.\n\nThis pipeline performs\ + \ analysis of single-cell multiomic sequence read (FASTQ) data. The supported\n\ + sequencing libraries are those generated by the BD Rhapsody™ assay kits, including:\ + \ Whole Transcriptome\nmRNA (WTA), Targeted mRNA, AbSeq Antibody-Oligonucleotides\ + \ (ABC), Single-Cell Multiplexing (SMK),\nTCR/BCR (VDJ), and ATAC-Seq.\n" +test_resources: +- type: "python_script" + path: "test.py" + is_executable: true +- type: "file" + path: "test_data" +- type: "file" + path: "helpers" +info: null +status: "enabled" +requirements: + commands: + - "ps" +keywords: +- "rna-seq" +- "single-cell" +- "multiomic" +- "atac-seq" +- "targeted" +- "abseq" +- "tcr" +- "bcr" +license: "Unknown" +links: + repository: "https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1" + documentation: "https://bd-rhapsody-bioinfo-docs.genomics.bd.com" +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: "bdgenomics/rhapsody:2.2.1" + target_registry: "images.viash-hub.com" + target_tag: "main" + namespace_separator: "/" + setup: + - type: "apt" + packages: + - "procps" + - "git" + interactive: false + - type: "python" + user: false + packages: + - "cwlref-runner" + - "cwl-runner" + upgrade: true + - type: "docker" + run: + - "mkdir /var/bd_rhapsody_cwl && \\\n cd /var/bd_rhapsody_cwl && \\\n git clone\ + \ https://bitbucket.org/CRSwDev/cwl.git . && \\\n git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de\n" + - type: "docker" + run: + - "VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1)" + - "echo \"bdgenomics/rhapsody: \\\"$VERSION\\\"\" > /var/software_versions.txt" + test_setup: + - type: "python" + user: false + packages: + - "biopython" + - "gffutils" + upgrade: true + entrypoint: [] + cmd: null +- type: "native" + id: "native" +build_info: + config: "src/bd_rhapsody/bd_rhapsody_sequence_analysis/config.vsh.yaml" + runner: "executable" + engine: "docker|native" + 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: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" +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/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis b/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis new file mode 100755 index 00000000..9b1c8861 --- /dev/null +++ b/target/executable/bd_rhapsody/bd_rhapsody_sequence_analysis/bd_rhapsody_sequence_analysis @@ -0,0 +1,3469 @@ +#!/usr/bin/env bash + +# bd_rhapsody_sequence_analysis 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: +# * Robrecht Cannoodt (author, maintainer) +# * Weiwei Schultz (contributor) + +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="bd_rhapsody_sequence_analysis" +VIASH_META_FUNCTIONALITY_NAME="bd_rhapsody_sequence_analysis" +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 "bd_rhapsody_sequence_analysis main" + echo "" + echo "BD Rhapsody Sequence Analysis CWL pipeline v2.2." + echo "" + echo "This pipeline performs analysis of single-cell multiomic sequence read (FASTQ)" + echo "data. The supported" + echo "sequencing libraries are those generated by the BD Rhapsody™ assay kits," + echo "including: Whole Transcriptome" + echo "mRNA (WTA), Targeted mRNA, AbSeq Antibody-Oligonucleotides (ABC), Single-Cell" + echo "Multiplexing (SMK)," + echo "TCR/BCR (VDJ), and ATAC-Seq." + echo "" + echo "Inputs:" + echo " --reads" + echo " type: file, multiple values allowed, file must exist" + echo " example:" + echo "WTALibrary_S1_L001_R1_001.fastq.gz;WTALibrary_S1_L001_R2_001.fastq.gz" + echo " Reads (optional) - Path to your FASTQ.GZ formatted read files from" + echo " libraries that may include:" + echo " - WTA mRNA" + echo " - Targeted mRNA" + echo " - AbSeq" + echo " - Sample Multiplexing" + echo " - VDJ" + echo " You may specify as many R1/R2 read pairs as you want." + echo "" + echo " --reads_atac" + echo " type: file, multiple values allowed, file must exist" + echo " example:" + echo "ATACLibrary_S2_L001_R1_001.fastq.gz;ATACLibrary_S2_L001_R2_001.fastq.gz;ATACLibrary_S2_L001_I2_001.fastq.gz" + echo " Path to your FASTQ.GZ formatted read files from ATAC-Seq libraries." + echo " You may specify as many R1/R2/I2 files as you want." + echo "" + echo "References:" + echo " Assay type will be inferred from the provided reference(s)." + echo " Do not provide both reference_archive and targeted_reference at the same" + echo " time." + echo " Valid reference input combinations:" + echo " - reference_archive: WTA only" + echo " - reference_archive & abseq_reference: WTA + AbSeq" + echo " - reference_archive & supplemental_reference: WTA + extra transgenes" + echo " - reference_archive & abseq_reference & supplemental_reference: WTA +" + echo " AbSeq + extra transgenes" + echo " - reference_archive: WTA + ATAC or ATAC only" + echo " - reference_archive & supplemental_reference: WTA + ATAC + extra" + echo " transgenes" + echo " - targeted_reference: Targeted only" + echo " - targeted_reference & abseq_reference: Targeted + AbSeq" + echo " - abseq_reference: AbSeq only" + echo " The reference_archive can be generated with the bd_rhapsody_make_reference" + echo " component." + echo " Alternatively, BD also provides standard references which can be downloaded" + echo " from these locations:" + echo " - Human:" + echo " " + echo "https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Human_WTA_2023-02.tar.gz" + echo " - Mouse:" + echo " " + echo "https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Mouse_WTA_2023-02.tar.gz" + echo "" + echo " --reference_archive" + echo " type: file, file must exist" + echo " example: RhapRef_Human_WTA_2023-02.tar.gz" + echo " Path to Rhapsody WTA Reference in the tar.gz format." + echo " Structure of the reference archive:" + echo " - \`BD_Rhapsody_Reference_Files/\`: top level folder" + echo " - \`star_index/\`: sub-folder containing STAR index, that is files" + echo " created with \`STAR --runMode genomeGenerate\`" + echo " - GTF for gene-transcript-annotation e.g." + echo " \"gencode.v43.primary_assembly.annotation.gtf\"" + echo "" + echo " --targeted_reference" + echo " type: file, multiple values allowed, file must exist" + echo " example: BD_Rhapsody_Immune_Response_Panel_Hs.fasta" + echo " Path to the targeted reference file in FASTA format." + echo "" + echo " --abseq_reference" + echo " type: file, multiple values allowed, file must exist" + echo " example: AbSeq_reference.fasta" + echo " Path to the AbSeq reference file in FASTA format. Only needed if BD" + echo " AbSeq Ab-Oligos are used." + echo "" + echo " -s, --supplemental_reference" + echo " type: file, multiple values allowed, file must exist" + echo " example: supplemental_reference.fasta" + echo " Path to the supplemental reference file in FASTA format. Only needed if" + echo " there are additional transgene sequences to be aligned against in a WTA" + echo " assay experiment." + echo "" + echo "Outputs:" + echo " Outputs for all pipeline runs" + echo "" + echo " -o, --output_dir" + echo " type: file, required parameter, output, file must exist" + echo " example: output_dir" + echo " The unprocessed output directory containing all the outputs from the" + echo " pipeline." + echo "" + echo " --output_seurat" + echo " type: file, output, file must exist" + echo " example: output_seurat.rds" + echo " Single-cell analysis tool inputs. Seurat (.rds) input file containing" + echo " RSEC molecules data table and all cell annotation metadata." + echo "" + echo " --output_mudata" + echo " type: file, output, file must exist" + echo " example: output_mudata.h5mu" + echo " Single-cell analysis tool inputs. Scanpy / Muon input file containing" + echo " RSEC molecules data table and all cell annotation metadata." + echo "" + echo " --metrics_summary" + echo " type: file, output, file must exist" + echo " example: metrics_summary.csv" + echo " Metrics Summary. Report containing sequencing, molecules, and cell" + echo " metrics." + echo "" + echo " --pipeline_report" + echo " type: file, output, file must exist" + echo " example: pipeline_report.html" + echo " Pipeline Report. Summary report containing the results from the" + echo " sequencing analysis pipeline run." + echo "" + echo " --rsec_mols_per_cell" + echo " type: file, output, file must exist" + echo " example: RSEC_MolsPerCell_MEX.zip" + echo " Molecules per bioproduct per cell bassed on RSEC" + echo "" + echo " --dbec_mols_per_cell" + echo " type: file, output, file must exist" + echo " example: DBEC_MolsPerCell_MEX.zip" + echo " Molecules per bioproduct per cell bassed on DBEC. DBEC data table is" + echo " only output if the experiment includes targeted mRNA or AbSeq" + echo " bioproducts." + echo "" + echo " --rsec_mols_per_cell_unfiltered" + echo " type: file, output, file must exist" + echo " example: RSEC_MolsPerCell_Unfiltered_MEX.zip" + echo " Unfiltered tables containing all cell labels with ≥10 reads." + echo "" + echo " --bam" + echo " type: file, output, file must exist" + echo " example: BioProduct.bam" + echo " Alignment file of R2 with associated R1 annotations for Bioproduct." + echo "" + echo " --bam_index" + echo " type: file, output, file must exist" + echo " example: BioProduct.bam.bai" + echo " Index file for the alignment file." + echo "" + echo " --bioproduct_stats" + echo " type: file, output, file must exist" + echo " example: Bioproduct_Stats.csv" + echo " Bioproduct Stats. Metrics from RSEC and DBEC Unique Molecular Identifier" + echo " adjustment algorithms on a per-bioproduct basis." + echo "" + echo " --dimred_tsne" + echo " type: file, output, file must exist" + echo " example: tSNE_coordinates.csv" + echo " t-SNE dimensionality reduction coordinates per cell index" + echo "" + echo " --dimred_umap" + echo " type: file, output, file must exist" + echo " example: UMAP_coordinates.csv" + echo " UMAP dimensionality reduction coordinates per cell index" + echo "" + echo " --immune_cell_classification" + echo " type: file, output, file must exist" + echo " example: Immune_Cell_Classification.csv" + echo " Immune Cell Classification. Cell type classification based on the" + echo " expression of immune cell markers." + echo "" + echo "Multiplex outputs:" + echo " Outputs when multiplex option is selected" + echo "" + echo " --sample_tag_metrics" + echo " type: file, output, file must exist" + echo " example: Sample_Tag_Metrics.csv" + echo " Sample Tag Metrics. Metrics from the sample determination algorithm." + echo "" + echo " --sample_tag_calls" + echo " type: file, output, file must exist" + echo " example: Sample_Tag_Calls.csv" + echo " Sample Tag Calls. Assigned Sample Tag for each putative cell" + echo "" + echo " --sample_tag_counts" + echo " type: file, multiple values allowed, output, file must exist" + echo " example: Sample_Tag1.zip" + echo " Sample Tag Counts. Separate data tables and metric summary for cells" + echo " assigned to each sample tag. Note: For putative cells that could not be" + echo " assigned a specific Sample Tag, a Multiplet_and_Undetermined.zip file is" + echo " also output." + echo "" + echo " --sample_tag_counts_unassigned" + echo " type: file, output, file must exist" + echo " example: Multiplet_and_Undetermined.zip" + echo " Sample Tag Counts Unassigned. Data table and metric summary for cells" + echo " that could not be assigned a specific Sample Tag." + echo "" + echo "VDJ Outputs:" + echo " Outputs when VDJ option selected" + echo "" + echo " --vdj_metrics" + echo " type: file, output, file must exist" + echo " example: VDJ_Metrics.csv" + echo " VDJ Metrics. Overall metrics from the VDJ analysis." + echo "" + echo " --vdj_per_cell" + echo " type: file, output, file must exist" + echo " example: VDJ_perCell.csv" + echo " VDJ Per Cell. Cell specific read and molecule counts, VDJ gene segments," + echo " CDR3 sequences, paired chains, and cell type." + echo "" + echo " --vdj_per_cell_uncorrected" + echo " type: file, output, file must exist" + echo " example: VDJ_perCell_uncorrected.csv" + echo " VDJ Per Cell Uncorrected. Cell specific read and molecule counts, VDJ" + echo " gene segments, CDR3 sequences, paired chains, and cell type." + echo "" + echo " --vdj_dominant_contigs" + echo " type: file, output, file must exist" + echo " example: VDJ_Dominant_Contigs_AIRR.csv" + echo " VDJ Dominant Contigs. Dominant contig for each cell label chain type" + echo " combination (putative cells only)." + echo "" + echo " --vdj_unfiltered_contigs" + echo " type: file, output, file must exist" + echo " example: VDJ_Unfiltered_Contigs_AIRR.csv" + echo " VDJ Unfiltered Contigs. All contigs that were assembled and annotated" + echo " successfully (all cells)." + echo "" + echo "ATAC-Seq outputs:" + echo " Outputs when ATAC-Seq option selected" + echo "" + echo " --atac_metrics" + echo " type: file, output, file must exist" + echo " example: ATAC_Metrics.csv" + echo " ATAC Metrics. Overall metrics from the ATAC-Seq analysis." + echo "" + echo " --atac_metrics_json" + echo " type: file, output, file must exist" + echo " example: ATAC_Metrics.json" + echo " ATAC Metrics JSON. Overall metrics from the ATAC-Seq analysis in JSON" + echo " format." + echo "" + echo " --atac_fragments" + echo " type: file, output, file must exist" + echo " example: ATAC_Fragments.bed.gz" + echo " ATAC Fragments. Chromosomal location, cell index, and read support for" + echo " each fragment detected" + echo "" + echo " --atac_fragments_index" + echo " type: file, output, file must exist" + echo " example: ATAC_Fragments.bed.gz.tbi" + echo " Index of ATAC Fragments." + echo "" + echo " --atac_transposase_sites" + echo " type: file, output, file must exist" + echo " example: ATAC_Transposase_Sites.bed.gz" + echo " ATAC Transposase Sites. Chromosomal location, cell index, and read" + echo " support for each transposase site detected" + echo "" + echo " --atac_transposase_sites_index" + echo " type: file, output, file must exist" + echo " example: ATAC_Transposase_Sites.bed.gz.tbi" + echo " Index of ATAC Transposase Sites." + echo "" + echo " --atac_peaks" + echo " type: file, output, file must exist" + echo " example: ATAC_Peaks.bed.gz" + echo " ATAC Peaks. Peak regions of transposase activity" + echo "" + echo " --atac_peaks_index" + echo " type: file, output, file must exist" + echo " example: ATAC_Peaks.bed.gz.tbi" + echo " Index of ATAC Peaks." + echo "" + echo " --atac_peak_annotation" + echo " type: file, output, file must exist" + echo " example: peak_annotation.tsv.gz" + echo " ATAC Peak Annotation. Estimated annotation of peak-to-gene connections" + echo "" + echo " --atac_cell_by_peak" + echo " type: file, output, file must exist" + echo " example: ATAC_Cell_by_Peak_MEX.zip" + echo " ATAC Cell by Peak. Peak regions of transposase activity per cell" + echo "" + echo " --atac_cell_by_peak_unfiltered" + echo " type: file, output, file must exist" + echo " example: ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + echo " ATAC Cell by Peak Unfiltered. Unfiltered file containing all cell labels" + echo " with >=1 transposase sites in peaks." + echo "" + echo " --atac_bam" + echo " type: file, output, file must exist" + echo " example: ATAC.bam" + echo " ATAC BAM. Alignment file for R1 and R2 with associated I2 annotations" + echo " for ATAC-Seq. Only output if the BAM generation flag is set to true." + echo "" + echo " --atac_bam_index" + echo " type: file, output, file must exist" + echo " example: ATAC.bam.bai" + echo " Index of ATAC BAM." + echo "" + echo "AbSeq Cell Calling outputs:" + echo " Outputs when Cell Calling Abseq is selected" + echo "" + echo " --protein_aggregates_experimental" + echo " type: file, output, file must exist" + echo " example: Protein_Aggregates_Experimental.csv" + echo " Protein Aggregates Experimental" + echo "" + echo "Putative Cell Calling Settings:" + echo " --cell_calling_data" + echo " type: string" + echo " example: mRNA" + echo " choices: [ mRNA, AbSeq, ATAC, mRNA_and_ATAC ]" + echo " Specify the dataset to be used for putative cell calling: mRNA, AbSeq," + echo " ATAC, mRNA_and_ATAC" + echo " For putative cell calling using an AbSeq dataset, please provide an" + echo " AbSeq_Reference fasta file above." + echo " For putative cell calling using an ATAC dataset, please provide a" + echo " WTA+ATAC-Seq Reference_Archive file above." + echo " The default data for putative cell calling, will be determined the" + echo " following way:" + echo " - If mRNA Reads and ATAC Reads exist: mRNA_and_ATAC" + echo " - If only ATAC Reads exist: ATAC" + echo " - Otherwise: mRNA" + echo "" + echo " --cell_calling_bioproduct_algorithm" + echo " type: string" + echo " example: Basic" + echo " choices: [ Basic, Refined ]" + echo " Specify the bioproduct algorithm to be used for putative cell calling:" + echo " Basic or Refined" + echo " By default, the Basic algorithm will be used for putative cell calling." + echo "" + echo " --cell_calling_atac_algorithm" + echo " type: string" + echo " example: Basic" + echo " choices: [ Basic, Refined ]" + echo " Specify the ATAC-seq algorithm to be used for putative cell calling:" + echo " Basic or Refined" + echo " By default, the Basic algorithm will be used for putative cell calling." + echo "" + echo " --exact_cell_count" + echo " type: integer" + echo " example: 10000" + echo " min: 1" + echo " Set a specific number (>=1) of cells as putative, based on those with" + echo " the highest error-corrected read count" + echo "" + echo " --expected_cell_count" + echo " type: integer" + echo " example: 20000" + echo " min: 1" + echo " Guide the basic putative cell calling algorithm by providing an estimate" + echo " of the number of cells expected. Usually this can be the number of" + echo " cells loaded into the Rhapsody cartridge. If there are multiple" + echo " inflection points on the second derivative cumulative curve, this will" + echo " ensure the one selected is near the expected." + echo "" + echo "Intronic Reads Settings:" + echo " --exclude_intronic_reads" + echo " type: boolean" + echo " example: false" + echo " By default, the flag is false, and reads aligned to exons and introns" + echo " are considered and represented in molecule counts. When the flag is set" + echo " to true, intronic reads will be excluded." + echo " The value can be true or false." + echo "" + echo "Multiplex Settings:" + echo " --sample_tags_version" + echo " type: string" + echo " example: human" + echo " choices: [ human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only ]" + echo " Specify the version of the Sample Tags used in the run:" + echo " * If Sample Tag Multiplexing was done, specify the appropriate version:" + echo " human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only" + echo " * If this is an SMK + Nuclei mRNA run or an SMK + Multiomic ATAC-Seq" + echo " (WTA+ATAC-Seq) run (and not an SMK + ATAC-Seq only run), choose the" + echo " \"nuclei_includes_mrna\" option." + echo " * If this is an SMK + ATAC-Seq only run (and not SMK + Multiomic" + echo " ATAC-Seq (WTA+ATAC-Seq)), choose the \"nuclei_atac_only\" option." + echo "" + echo " --tag_names" + echo " type: string, multiple values allowed" + echo " example: 4-mySample;9-myOtherSample;6-alsoThisSample" + echo " Specify the tag number followed by '-' and the desired sample name to" + echo " appear in Sample_Tag_Metrics.csv" + echo " Do not use the special characters: &, (), [], {}, <>, ?, |" + echo "" + echo "VDJ arguments:" + echo " --vdj_version" + echo " type: string" + echo " example: human" + echo " choices: [ human, mouse, humanBCR, humanTCR, mouseBCR, mouseTCR ]" + echo " If VDJ was done, specify the appropriate option: human, mouse, humanBCR," + echo " humanTCR, mouseBCR, mouseTCR" + echo "" + echo "ATAC options:" + echo " --predefined_atac_peaks" + echo " type: file, file must exist" + echo " example: predefined_peaks.bed" + echo " An optional BED file containing pre-established chromatin accessibility" + echo " peak regions for generating the ATAC cell-by-peak matrix." + echo "" + echo "Additional options:" + echo " --run_name" + echo " type: string" + echo " default: sample" + echo " Specify a run name to use as the output file base name. Use only" + echo " letters, numbers, or hyphens. Do not use special characters or spaces." + echo "" + echo " --generate_bam" + echo " type: boolean" + echo " default: false" + echo " Specify whether to create the BAM file output" + echo "" + echo " --long_reads" + echo " type: boolean" + echo " Use STARlong (default: undefined - i.e. autodetects based on read" + echo " lengths) - Specify if the STARlong aligner should be used instead of" + echo " STAR. Set to true if the reads are longer than 650bp." + echo "" + echo "Advanced options:" + echo " NOTE: Only change these if you are really sure about what you are doing" + echo "" + echo " --custom_star_params" + echo " type: string" + echo " example: --alignIntronMax 6000 --outFilterScoreMinOverLread 0.1" + echo "--limitOutSJcollapsed 2000000" + echo " Modify STAR alignment parameters - Set this parameter to fully override" + echo " default STAR mapping parameters used in the pipeline." + echo " For reference this is the default that is used:" + echo " Short Reads: \`--outFilterScoreMinOverLread 0" + echo " --outFilterMatchNminOverLread 0 --outFilterMultimapScoreRange 0" + echo " --clip3pAdapterSeq AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + echo " --seedSearchStartLmax 50 --outFilterMatchNmin 25 --limitOutSJcollapsed" + echo " 2000000\`" + echo " Long Reads: Same as Short Reads + \`--seedPerReadNmax 10000\`" + echo " This applies to fastqs provided in the Reads user input" + echo " Do NOT set any non-mapping related params like \`--genomeDir\`," + echo " \`--outSAMtype\`, \`--outSAMunmapped\`, \`--readFilesIn\`, \`--runThreadN\`," + echo " etc." + echo " We use STAR version 2.7.10b" + echo "" + echo " --custom_bwa_mem2_params" + echo " type: string" + echo " example: -k 16 -w 200 -r" + echo " Modify bwa-mem2 alignment parameters - Set this parameter to fully" + echo " override bwa-mem2 mapping parameters used in the pipeline" + echo " The pipeline does not specify any custom mapping params to bwa-mem2 so" + echo " program default values are used" + echo " This applies to fastqs provided in the Reads_ATAC user input" + echo " Do NOT set any non-mapping related params like \`-C\`, \`-t\`, etc." + echo " We use bwa-mem2 version 2.2.1" + echo "" + echo "CWL-runner arguments:" + echo " --parallel" + echo " type: boolean" + echo " default: true" + echo " Run jobs in parallel." + echo "" + echo " --timestamps" + echo " type: boolean_true" + echo " Add timestamps to the errors, warnings, and notifications." + echo "" + echo "Undocumented arguments:" + echo " --abseq_umi" + echo " type: integer" + echo "" + echo " --target_analysis" + echo " type: boolean" + echo "" + echo " --vdj_jgene_evalue" + echo " type: double" + echo " e-value threshold for J gene. The e-value threshold for J gene call by" + echo " IgBlast/PyIR, default is set as 0.001" + echo "" + echo " --vdj_vgene_evalue" + echo " type: double" + echo " e-value threshold for V gene. The e-value threshold for V gene call by" + echo " IgBlast/PyIR, default is set as 0.001" + echo "" + echo " --write_filtered_reads" + echo " type: boolean" +} + +# 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 bdgenomics/rhapsody:2.2.1 +ENTRYPOINT [] +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y procps git && \ + rm -rf /var/lib/apt/lists/* + +RUN pip install --upgrade pip && \ + pip install --upgrade --no-cache-dir "cwlref-runner" "cwl-runner" + +RUN mkdir /var/bd_rhapsody_cwl && \ + cd /var/bd_rhapsody_cwl && \ + git clone https://bitbucket.org/CRSwDev/cwl.git . && \ + git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de + +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-09-17T09:53:01Z" +LABEL org.opencontainers.image.source="https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" +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 "bd_rhapsody_sequence_analysis main" + exit + ;; + --reads) + if [ -z "$VIASH_PAR_READS" ]; then + VIASH_PAR_READS="$2" + else + VIASH_PAR_READS="$VIASH_PAR_READS;""$2" + fi + [ $# -lt 2 ] && ViashError Not enough arguments passed to --reads. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --reads=*) + if [ -z "$VIASH_PAR_READS" ]; then + VIASH_PAR_READS=$(ViashRemoveFlags "$1") + else + VIASH_PAR_READS="$VIASH_PAR_READS;"$(ViashRemoveFlags "$1") + fi + shift 1 + ;; + --reads_atac) + if [ -z "$VIASH_PAR_READS_ATAC" ]; then + VIASH_PAR_READS_ATAC="$2" + else + VIASH_PAR_READS_ATAC="$VIASH_PAR_READS_ATAC;""$2" + fi + [ $# -lt 2 ] && ViashError Not enough arguments passed to --reads_atac. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --reads_atac=*) + if [ -z "$VIASH_PAR_READS_ATAC" ]; then + VIASH_PAR_READS_ATAC=$(ViashRemoveFlags "$1") + else + VIASH_PAR_READS_ATAC="$VIASH_PAR_READS_ATAC;"$(ViashRemoveFlags "$1") + fi + shift 1 + ;; + --reference_archive) + [ -n "$VIASH_PAR_REFERENCE_ARCHIVE" ] && ViashError Bad arguments for option \'--reference_archive\': \'$VIASH_PAR_REFERENCE_ARCHIVE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_REFERENCE_ARCHIVE="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --reference_archive. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --reference_archive=*) + [ -n "$VIASH_PAR_REFERENCE_ARCHIVE" ] && ViashError Bad arguments for option \'--reference_archive=*\': \'$VIASH_PAR_REFERENCE_ARCHIVE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_REFERENCE_ARCHIVE=$(ViashRemoveFlags "$1") + shift 1 + ;; + --targeted_reference) + if [ -z "$VIASH_PAR_TARGETED_REFERENCE" ]; then + VIASH_PAR_TARGETED_REFERENCE="$2" + else + VIASH_PAR_TARGETED_REFERENCE="$VIASH_PAR_TARGETED_REFERENCE;""$2" + fi + [ $# -lt 2 ] && ViashError Not enough arguments passed to --targeted_reference. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --targeted_reference=*) + if [ -z "$VIASH_PAR_TARGETED_REFERENCE" ]; then + VIASH_PAR_TARGETED_REFERENCE=$(ViashRemoveFlags "$1") + else + VIASH_PAR_TARGETED_REFERENCE="$VIASH_PAR_TARGETED_REFERENCE;"$(ViashRemoveFlags "$1") + fi + shift 1 + ;; + --abseq_reference) + if [ -z "$VIASH_PAR_ABSEQ_REFERENCE" ]; then + VIASH_PAR_ABSEQ_REFERENCE="$2" + else + VIASH_PAR_ABSEQ_REFERENCE="$VIASH_PAR_ABSEQ_REFERENCE;""$2" + fi + [ $# -lt 2 ] && ViashError Not enough arguments passed to --abseq_reference. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --abseq_reference=*) + if [ -z "$VIASH_PAR_ABSEQ_REFERENCE" ]; then + VIASH_PAR_ABSEQ_REFERENCE=$(ViashRemoveFlags "$1") + else + VIASH_PAR_ABSEQ_REFERENCE="$VIASH_PAR_ABSEQ_REFERENCE;"$(ViashRemoveFlags "$1") + fi + shift 1 + ;; + --supplemental_reference) + if [ -z "$VIASH_PAR_SUPPLEMENTAL_REFERENCE" ]; then + VIASH_PAR_SUPPLEMENTAL_REFERENCE="$2" + else + VIASH_PAR_SUPPLEMENTAL_REFERENCE="$VIASH_PAR_SUPPLEMENTAL_REFERENCE;""$2" + fi + [ $# -lt 2 ] && ViashError Not enough arguments passed to --supplemental_reference. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --supplemental_reference=*) + if [ -z "$VIASH_PAR_SUPPLEMENTAL_REFERENCE" ]; then + VIASH_PAR_SUPPLEMENTAL_REFERENCE=$(ViashRemoveFlags "$1") + else + VIASH_PAR_SUPPLEMENTAL_REFERENCE="$VIASH_PAR_SUPPLEMENTAL_REFERENCE;"$(ViashRemoveFlags "$1") + fi + shift 1 + ;; + -s) + if [ -z "$VIASH_PAR_SUPPLEMENTAL_REFERENCE" ]; then + VIASH_PAR_SUPPLEMENTAL_REFERENCE="$2" + else + VIASH_PAR_SUPPLEMENTAL_REFERENCE="$VIASH_PAR_SUPPLEMENTAL_REFERENCE;""$2" + fi + [ $# -lt 2 ] && ViashError Not enough arguments passed to -s. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output_dir) + [ -n "$VIASH_PAR_OUTPUT_DIR" ] && ViashError Bad arguments for option \'--output_dir\': \'$VIASH_PAR_OUTPUT_DIR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT_DIR="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --output_dir. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output_dir=*) + [ -n "$VIASH_PAR_OUTPUT_DIR" ] && ViashError Bad arguments for option \'--output_dir=*\': \'$VIASH_PAR_OUTPUT_DIR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT_DIR=$(ViashRemoveFlags "$1") + shift 1 + ;; + -o) + [ -n "$VIASH_PAR_OUTPUT_DIR" ] && ViashError Bad arguments for option \'-o\': \'$VIASH_PAR_OUTPUT_DIR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT_DIR="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to -o. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output_seurat) + [ -n "$VIASH_PAR_OUTPUT_SEURAT" ] && ViashError Bad arguments for option \'--output_seurat\': \'$VIASH_PAR_OUTPUT_SEURAT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT_SEURAT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --output_seurat. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output_seurat=*) + [ -n "$VIASH_PAR_OUTPUT_SEURAT" ] && ViashError Bad arguments for option \'--output_seurat=*\': \'$VIASH_PAR_OUTPUT_SEURAT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT_SEURAT=$(ViashRemoveFlags "$1") + shift 1 + ;; + --output_mudata) + [ -n "$VIASH_PAR_OUTPUT_MUDATA" ] && ViashError Bad arguments for option \'--output_mudata\': \'$VIASH_PAR_OUTPUT_MUDATA\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT_MUDATA="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --output_mudata. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --output_mudata=*) + [ -n "$VIASH_PAR_OUTPUT_MUDATA" ] && ViashError Bad arguments for option \'--output_mudata=*\': \'$VIASH_PAR_OUTPUT_MUDATA\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_OUTPUT_MUDATA=$(ViashRemoveFlags "$1") + shift 1 + ;; + --metrics_summary) + [ -n "$VIASH_PAR_METRICS_SUMMARY" ] && ViashError Bad arguments for option \'--metrics_summary\': \'$VIASH_PAR_METRICS_SUMMARY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_METRICS_SUMMARY="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --metrics_summary. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --metrics_summary=*) + [ -n "$VIASH_PAR_METRICS_SUMMARY" ] && ViashError Bad arguments for option \'--metrics_summary=*\': \'$VIASH_PAR_METRICS_SUMMARY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_METRICS_SUMMARY=$(ViashRemoveFlags "$1") + shift 1 + ;; + --pipeline_report) + [ -n "$VIASH_PAR_PIPELINE_REPORT" ] && ViashError Bad arguments for option \'--pipeline_report\': \'$VIASH_PAR_PIPELINE_REPORT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PIPELINE_REPORT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --pipeline_report. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --pipeline_report=*) + [ -n "$VIASH_PAR_PIPELINE_REPORT" ] && ViashError Bad arguments for option \'--pipeline_report=*\': \'$VIASH_PAR_PIPELINE_REPORT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PIPELINE_REPORT=$(ViashRemoveFlags "$1") + shift 1 + ;; + --rsec_mols_per_cell) + [ -n "$VIASH_PAR_RSEC_MOLS_PER_CELL" ] && ViashError Bad arguments for option \'--rsec_mols_per_cell\': \'$VIASH_PAR_RSEC_MOLS_PER_CELL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_RSEC_MOLS_PER_CELL="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --rsec_mols_per_cell. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --rsec_mols_per_cell=*) + [ -n "$VIASH_PAR_RSEC_MOLS_PER_CELL" ] && ViashError Bad arguments for option \'--rsec_mols_per_cell=*\': \'$VIASH_PAR_RSEC_MOLS_PER_CELL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_RSEC_MOLS_PER_CELL=$(ViashRemoveFlags "$1") + shift 1 + ;; + --dbec_mols_per_cell) + [ -n "$VIASH_PAR_DBEC_MOLS_PER_CELL" ] && ViashError Bad arguments for option \'--dbec_mols_per_cell\': \'$VIASH_PAR_DBEC_MOLS_PER_CELL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_DBEC_MOLS_PER_CELL="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --dbec_mols_per_cell. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --dbec_mols_per_cell=*) + [ -n "$VIASH_PAR_DBEC_MOLS_PER_CELL" ] && ViashError Bad arguments for option \'--dbec_mols_per_cell=*\': \'$VIASH_PAR_DBEC_MOLS_PER_CELL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_DBEC_MOLS_PER_CELL=$(ViashRemoveFlags "$1") + shift 1 + ;; + --rsec_mols_per_cell_unfiltered) + [ -n "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ] && ViashError Bad arguments for option \'--rsec_mols_per_cell_unfiltered\': \'$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --rsec_mols_per_cell_unfiltered. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --rsec_mols_per_cell_unfiltered=*) + [ -n "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ] && ViashError Bad arguments for option \'--rsec_mols_per_cell_unfiltered=*\': \'$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED=$(ViashRemoveFlags "$1") + shift 1 + ;; + --bam) + [ -n "$VIASH_PAR_BAM" ] && ViashError Bad arguments for option \'--bam\': \'$VIASH_PAR_BAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_BAM="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --bam. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --bam=*) + [ -n "$VIASH_PAR_BAM" ] && ViashError Bad arguments for option \'--bam=*\': \'$VIASH_PAR_BAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_BAM=$(ViashRemoveFlags "$1") + shift 1 + ;; + --bam_index) + [ -n "$VIASH_PAR_BAM_INDEX" ] && ViashError Bad arguments for option \'--bam_index\': \'$VIASH_PAR_BAM_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_BAM_INDEX="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --bam_index. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --bam_index=*) + [ -n "$VIASH_PAR_BAM_INDEX" ] && ViashError Bad arguments for option \'--bam_index=*\': \'$VIASH_PAR_BAM_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_BAM_INDEX=$(ViashRemoveFlags "$1") + shift 1 + ;; + --bioproduct_stats) + [ -n "$VIASH_PAR_BIOPRODUCT_STATS" ] && ViashError Bad arguments for option \'--bioproduct_stats\': \'$VIASH_PAR_BIOPRODUCT_STATS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_BIOPRODUCT_STATS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --bioproduct_stats. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --bioproduct_stats=*) + [ -n "$VIASH_PAR_BIOPRODUCT_STATS" ] && ViashError Bad arguments for option \'--bioproduct_stats=*\': \'$VIASH_PAR_BIOPRODUCT_STATS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_BIOPRODUCT_STATS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --dimred_tsne) + [ -n "$VIASH_PAR_DIMRED_TSNE" ] && ViashError Bad arguments for option \'--dimred_tsne\': \'$VIASH_PAR_DIMRED_TSNE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_DIMRED_TSNE="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --dimred_tsne. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --dimred_tsne=*) + [ -n "$VIASH_PAR_DIMRED_TSNE" ] && ViashError Bad arguments for option \'--dimred_tsne=*\': \'$VIASH_PAR_DIMRED_TSNE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_DIMRED_TSNE=$(ViashRemoveFlags "$1") + shift 1 + ;; + --dimred_umap) + [ -n "$VIASH_PAR_DIMRED_UMAP" ] && ViashError Bad arguments for option \'--dimred_umap\': \'$VIASH_PAR_DIMRED_UMAP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_DIMRED_UMAP="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --dimred_umap. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --dimred_umap=*) + [ -n "$VIASH_PAR_DIMRED_UMAP" ] && ViashError Bad arguments for option \'--dimred_umap=*\': \'$VIASH_PAR_DIMRED_UMAP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_DIMRED_UMAP=$(ViashRemoveFlags "$1") + shift 1 + ;; + --immune_cell_classification) + [ -n "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ] && ViashError Bad arguments for option \'--immune_cell_classification\': \'$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_IMMUNE_CELL_CLASSIFICATION="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --immune_cell_classification. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --immune_cell_classification=*) + [ -n "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ] && ViashError Bad arguments for option \'--immune_cell_classification=*\': \'$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_IMMUNE_CELL_CLASSIFICATION=$(ViashRemoveFlags "$1") + shift 1 + ;; + --sample_tag_metrics) + [ -n "$VIASH_PAR_SAMPLE_TAG_METRICS" ] && ViashError Bad arguments for option \'--sample_tag_metrics\': \'$VIASH_PAR_SAMPLE_TAG_METRICS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_METRICS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --sample_tag_metrics. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --sample_tag_metrics=*) + [ -n "$VIASH_PAR_SAMPLE_TAG_METRICS" ] && ViashError Bad arguments for option \'--sample_tag_metrics=*\': \'$VIASH_PAR_SAMPLE_TAG_METRICS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_METRICS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --sample_tag_calls) + [ -n "$VIASH_PAR_SAMPLE_TAG_CALLS" ] && ViashError Bad arguments for option \'--sample_tag_calls\': \'$VIASH_PAR_SAMPLE_TAG_CALLS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_CALLS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --sample_tag_calls. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --sample_tag_calls=*) + [ -n "$VIASH_PAR_SAMPLE_TAG_CALLS" ] && ViashError Bad arguments for option \'--sample_tag_calls=*\': \'$VIASH_PAR_SAMPLE_TAG_CALLS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_CALLS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --sample_tag_counts) + [ -n "$VIASH_PAR_SAMPLE_TAG_COUNTS" ] && ViashError Bad arguments for option \'--sample_tag_counts\': \'$VIASH_PAR_SAMPLE_TAG_COUNTS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_COUNTS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --sample_tag_counts. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --sample_tag_counts=*) + [ -n "$VIASH_PAR_SAMPLE_TAG_COUNTS" ] && ViashError Bad arguments for option \'--sample_tag_counts=*\': \'$VIASH_PAR_SAMPLE_TAG_COUNTS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_COUNTS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --sample_tag_counts_unassigned) + [ -n "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ] && ViashError Bad arguments for option \'--sample_tag_counts_unassigned\': \'$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --sample_tag_counts_unassigned. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --sample_tag_counts_unassigned=*) + [ -n "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ] && ViashError Bad arguments for option \'--sample_tag_counts_unassigned=*\': \'$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED=$(ViashRemoveFlags "$1") + shift 1 + ;; + --vdj_metrics) + [ -n "$VIASH_PAR_VDJ_METRICS" ] && ViashError Bad arguments for option \'--vdj_metrics\': \'$VIASH_PAR_VDJ_METRICS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_METRICS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_metrics. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_metrics=*) + [ -n "$VIASH_PAR_VDJ_METRICS" ] && ViashError Bad arguments for option \'--vdj_metrics=*\': \'$VIASH_PAR_VDJ_METRICS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_METRICS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --vdj_per_cell) + [ -n "$VIASH_PAR_VDJ_PER_CELL" ] && ViashError Bad arguments for option \'--vdj_per_cell\': \'$VIASH_PAR_VDJ_PER_CELL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_PER_CELL="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_per_cell. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_per_cell=*) + [ -n "$VIASH_PAR_VDJ_PER_CELL" ] && ViashError Bad arguments for option \'--vdj_per_cell=*\': \'$VIASH_PAR_VDJ_PER_CELL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_PER_CELL=$(ViashRemoveFlags "$1") + shift 1 + ;; + --vdj_per_cell_uncorrected) + [ -n "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ] && ViashError Bad arguments for option \'--vdj_per_cell_uncorrected\': \'$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_PER_CELL_UNCORRECTED="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_per_cell_uncorrected. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_per_cell_uncorrected=*) + [ -n "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ] && ViashError Bad arguments for option \'--vdj_per_cell_uncorrected=*\': \'$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_PER_CELL_UNCORRECTED=$(ViashRemoveFlags "$1") + shift 1 + ;; + --vdj_dominant_contigs) + [ -n "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ] && ViashError Bad arguments for option \'--vdj_dominant_contigs\': \'$VIASH_PAR_VDJ_DOMINANT_CONTIGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_DOMINANT_CONTIGS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_dominant_contigs. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_dominant_contigs=*) + [ -n "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ] && ViashError Bad arguments for option \'--vdj_dominant_contigs=*\': \'$VIASH_PAR_VDJ_DOMINANT_CONTIGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_DOMINANT_CONTIGS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --vdj_unfiltered_contigs) + [ -n "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ] && ViashError Bad arguments for option \'--vdj_unfiltered_contigs\': \'$VIASH_PAR_VDJ_UNFILTERED_CONTIGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_UNFILTERED_CONTIGS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_unfiltered_contigs. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_unfiltered_contigs=*) + [ -n "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ] && ViashError Bad arguments for option \'--vdj_unfiltered_contigs=*\': \'$VIASH_PAR_VDJ_UNFILTERED_CONTIGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_UNFILTERED_CONTIGS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_metrics) + [ -n "$VIASH_PAR_ATAC_METRICS" ] && ViashError Bad arguments for option \'--atac_metrics\': \'$VIASH_PAR_ATAC_METRICS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_METRICS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_metrics. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_metrics=*) + [ -n "$VIASH_PAR_ATAC_METRICS" ] && ViashError Bad arguments for option \'--atac_metrics=*\': \'$VIASH_PAR_ATAC_METRICS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_METRICS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_metrics_json) + [ -n "$VIASH_PAR_ATAC_METRICS_JSON" ] && ViashError Bad arguments for option \'--atac_metrics_json\': \'$VIASH_PAR_ATAC_METRICS_JSON\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_METRICS_JSON="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_metrics_json. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_metrics_json=*) + [ -n "$VIASH_PAR_ATAC_METRICS_JSON" ] && ViashError Bad arguments for option \'--atac_metrics_json=*\': \'$VIASH_PAR_ATAC_METRICS_JSON\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_METRICS_JSON=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_fragments) + [ -n "$VIASH_PAR_ATAC_FRAGMENTS" ] && ViashError Bad arguments for option \'--atac_fragments\': \'$VIASH_PAR_ATAC_FRAGMENTS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_FRAGMENTS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_fragments. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_fragments=*) + [ -n "$VIASH_PAR_ATAC_FRAGMENTS" ] && ViashError Bad arguments for option \'--atac_fragments=*\': \'$VIASH_PAR_ATAC_FRAGMENTS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_FRAGMENTS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_fragments_index) + [ -n "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ] && ViashError Bad arguments for option \'--atac_fragments_index\': \'$VIASH_PAR_ATAC_FRAGMENTS_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_FRAGMENTS_INDEX="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_fragments_index. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_fragments_index=*) + [ -n "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ] && ViashError Bad arguments for option \'--atac_fragments_index=*\': \'$VIASH_PAR_ATAC_FRAGMENTS_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_FRAGMENTS_INDEX=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_transposase_sites) + [ -n "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ] && ViashError Bad arguments for option \'--atac_transposase_sites\': \'$VIASH_PAR_ATAC_TRANSPOSASE_SITES\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_TRANSPOSASE_SITES="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_transposase_sites. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_transposase_sites=*) + [ -n "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ] && ViashError Bad arguments for option \'--atac_transposase_sites=*\': \'$VIASH_PAR_ATAC_TRANSPOSASE_SITES\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_TRANSPOSASE_SITES=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_transposase_sites_index) + [ -n "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ] && ViashError Bad arguments for option \'--atac_transposase_sites_index\': \'$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_transposase_sites_index. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_transposase_sites_index=*) + [ -n "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ] && ViashError Bad arguments for option \'--atac_transposase_sites_index=*\': \'$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_peaks) + [ -n "$VIASH_PAR_ATAC_PEAKS" ] && ViashError Bad arguments for option \'--atac_peaks\': \'$VIASH_PAR_ATAC_PEAKS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_PEAKS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_peaks. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_peaks=*) + [ -n "$VIASH_PAR_ATAC_PEAKS" ] && ViashError Bad arguments for option \'--atac_peaks=*\': \'$VIASH_PAR_ATAC_PEAKS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_PEAKS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_peaks_index) + [ -n "$VIASH_PAR_ATAC_PEAKS_INDEX" ] && ViashError Bad arguments for option \'--atac_peaks_index\': \'$VIASH_PAR_ATAC_PEAKS_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_PEAKS_INDEX="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_peaks_index. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_peaks_index=*) + [ -n "$VIASH_PAR_ATAC_PEAKS_INDEX" ] && ViashError Bad arguments for option \'--atac_peaks_index=*\': \'$VIASH_PAR_ATAC_PEAKS_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_PEAKS_INDEX=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_peak_annotation) + [ -n "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ] && ViashError Bad arguments for option \'--atac_peak_annotation\': \'$VIASH_PAR_ATAC_PEAK_ANNOTATION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_PEAK_ANNOTATION="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_peak_annotation. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_peak_annotation=*) + [ -n "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ] && ViashError Bad arguments for option \'--atac_peak_annotation=*\': \'$VIASH_PAR_ATAC_PEAK_ANNOTATION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_PEAK_ANNOTATION=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_cell_by_peak) + [ -n "$VIASH_PAR_ATAC_CELL_BY_PEAK" ] && ViashError Bad arguments for option \'--atac_cell_by_peak\': \'$VIASH_PAR_ATAC_CELL_BY_PEAK\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_CELL_BY_PEAK="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_cell_by_peak. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_cell_by_peak=*) + [ -n "$VIASH_PAR_ATAC_CELL_BY_PEAK" ] && ViashError Bad arguments for option \'--atac_cell_by_peak=*\': \'$VIASH_PAR_ATAC_CELL_BY_PEAK\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_CELL_BY_PEAK=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_cell_by_peak_unfiltered) + [ -n "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ] && ViashError Bad arguments for option \'--atac_cell_by_peak_unfiltered\': \'$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_cell_by_peak_unfiltered. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_cell_by_peak_unfiltered=*) + [ -n "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ] && ViashError Bad arguments for option \'--atac_cell_by_peak_unfiltered=*\': \'$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_bam) + [ -n "$VIASH_PAR_ATAC_BAM" ] && ViashError Bad arguments for option \'--atac_bam\': \'$VIASH_PAR_ATAC_BAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_BAM="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_bam. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_bam=*) + [ -n "$VIASH_PAR_ATAC_BAM" ] && ViashError Bad arguments for option \'--atac_bam=*\': \'$VIASH_PAR_ATAC_BAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_BAM=$(ViashRemoveFlags "$1") + shift 1 + ;; + --atac_bam_index) + [ -n "$VIASH_PAR_ATAC_BAM_INDEX" ] && ViashError Bad arguments for option \'--atac_bam_index\': \'$VIASH_PAR_ATAC_BAM_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_BAM_INDEX="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --atac_bam_index. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --atac_bam_index=*) + [ -n "$VIASH_PAR_ATAC_BAM_INDEX" ] && ViashError Bad arguments for option \'--atac_bam_index=*\': \'$VIASH_PAR_ATAC_BAM_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ATAC_BAM_INDEX=$(ViashRemoveFlags "$1") + shift 1 + ;; + --protein_aggregates_experimental) + [ -n "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ] && ViashError Bad arguments for option \'--protein_aggregates_experimental\': \'$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --protein_aggregates_experimental. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --protein_aggregates_experimental=*) + [ -n "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ] && ViashError Bad arguments for option \'--protein_aggregates_experimental=*\': \'$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL=$(ViashRemoveFlags "$1") + shift 1 + ;; + --cell_calling_data) + [ -n "$VIASH_PAR_CELL_CALLING_DATA" ] && ViashError Bad arguments for option \'--cell_calling_data\': \'$VIASH_PAR_CELL_CALLING_DATA\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CELL_CALLING_DATA="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --cell_calling_data. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --cell_calling_data=*) + [ -n "$VIASH_PAR_CELL_CALLING_DATA" ] && ViashError Bad arguments for option \'--cell_calling_data=*\': \'$VIASH_PAR_CELL_CALLING_DATA\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CELL_CALLING_DATA=$(ViashRemoveFlags "$1") + shift 1 + ;; + --cell_calling_bioproduct_algorithm) + [ -n "$VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM" ] && ViashError Bad arguments for option \'--cell_calling_bioproduct_algorithm\': \'$VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --cell_calling_bioproduct_algorithm. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --cell_calling_bioproduct_algorithm=*) + [ -n "$VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM" ] && ViashError Bad arguments for option \'--cell_calling_bioproduct_algorithm=*\': \'$VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM=$(ViashRemoveFlags "$1") + shift 1 + ;; + --cell_calling_atac_algorithm) + [ -n "$VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM" ] && ViashError Bad arguments for option \'--cell_calling_atac_algorithm\': \'$VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --cell_calling_atac_algorithm. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --cell_calling_atac_algorithm=*) + [ -n "$VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM" ] && ViashError Bad arguments for option \'--cell_calling_atac_algorithm=*\': \'$VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM=$(ViashRemoveFlags "$1") + shift 1 + ;; + --exact_cell_count) + [ -n "$VIASH_PAR_EXACT_CELL_COUNT" ] && ViashError Bad arguments for option \'--exact_cell_count\': \'$VIASH_PAR_EXACT_CELL_COUNT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_EXACT_CELL_COUNT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --exact_cell_count. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --exact_cell_count=*) + [ -n "$VIASH_PAR_EXACT_CELL_COUNT" ] && ViashError Bad arguments for option \'--exact_cell_count=*\': \'$VIASH_PAR_EXACT_CELL_COUNT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_EXACT_CELL_COUNT=$(ViashRemoveFlags "$1") + shift 1 + ;; + --expected_cell_count) + [ -n "$VIASH_PAR_EXPECTED_CELL_COUNT" ] && ViashError Bad arguments for option \'--expected_cell_count\': \'$VIASH_PAR_EXPECTED_CELL_COUNT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_EXPECTED_CELL_COUNT="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --expected_cell_count. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --expected_cell_count=*) + [ -n "$VIASH_PAR_EXPECTED_CELL_COUNT" ] && ViashError Bad arguments for option \'--expected_cell_count=*\': \'$VIASH_PAR_EXPECTED_CELL_COUNT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_EXPECTED_CELL_COUNT=$(ViashRemoveFlags "$1") + shift 1 + ;; + --exclude_intronic_reads) + [ -n "$VIASH_PAR_EXCLUDE_INTRONIC_READS" ] && ViashError Bad arguments for option \'--exclude_intronic_reads\': \'$VIASH_PAR_EXCLUDE_INTRONIC_READS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_EXCLUDE_INTRONIC_READS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --exclude_intronic_reads. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --exclude_intronic_reads=*) + [ -n "$VIASH_PAR_EXCLUDE_INTRONIC_READS" ] && ViashError Bad arguments for option \'--exclude_intronic_reads=*\': \'$VIASH_PAR_EXCLUDE_INTRONIC_READS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_EXCLUDE_INTRONIC_READS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --sample_tags_version) + [ -n "$VIASH_PAR_SAMPLE_TAGS_VERSION" ] && ViashError Bad arguments for option \'--sample_tags_version\': \'$VIASH_PAR_SAMPLE_TAGS_VERSION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAGS_VERSION="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --sample_tags_version. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --sample_tags_version=*) + [ -n "$VIASH_PAR_SAMPLE_TAGS_VERSION" ] && ViashError Bad arguments for option \'--sample_tags_version=*\': \'$VIASH_PAR_SAMPLE_TAGS_VERSION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_SAMPLE_TAGS_VERSION=$(ViashRemoveFlags "$1") + shift 1 + ;; + --tag_names) + if [ -z "$VIASH_PAR_TAG_NAMES" ]; then + VIASH_PAR_TAG_NAMES="$2" + else + VIASH_PAR_TAG_NAMES="$VIASH_PAR_TAG_NAMES;""$2" + fi + [ $# -lt 2 ] && ViashError Not enough arguments passed to --tag_names. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --tag_names=*) + if [ -z "$VIASH_PAR_TAG_NAMES" ]; then + VIASH_PAR_TAG_NAMES=$(ViashRemoveFlags "$1") + else + VIASH_PAR_TAG_NAMES="$VIASH_PAR_TAG_NAMES;"$(ViashRemoveFlags "$1") + fi + shift 1 + ;; + --vdj_version) + [ -n "$VIASH_PAR_VDJ_VERSION" ] && ViashError Bad arguments for option \'--vdj_version\': \'$VIASH_PAR_VDJ_VERSION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_VERSION="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_version. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_version=*) + [ -n "$VIASH_PAR_VDJ_VERSION" ] && ViashError Bad arguments for option \'--vdj_version=*\': \'$VIASH_PAR_VDJ_VERSION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_VERSION=$(ViashRemoveFlags "$1") + shift 1 + ;; + --predefined_atac_peaks) + [ -n "$VIASH_PAR_PREDEFINED_ATAC_PEAKS" ] && ViashError Bad arguments for option \'--predefined_atac_peaks\': \'$VIASH_PAR_PREDEFINED_ATAC_PEAKS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PREDEFINED_ATAC_PEAKS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --predefined_atac_peaks. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --predefined_atac_peaks=*) + [ -n "$VIASH_PAR_PREDEFINED_ATAC_PEAKS" ] && ViashError Bad arguments for option \'--predefined_atac_peaks=*\': \'$VIASH_PAR_PREDEFINED_ATAC_PEAKS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PREDEFINED_ATAC_PEAKS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --run_name) + [ -n "$VIASH_PAR_RUN_NAME" ] && ViashError Bad arguments for option \'--run_name\': \'$VIASH_PAR_RUN_NAME\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_RUN_NAME="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --run_name. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --run_name=*) + [ -n "$VIASH_PAR_RUN_NAME" ] && ViashError Bad arguments for option \'--run_name=*\': \'$VIASH_PAR_RUN_NAME\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_RUN_NAME=$(ViashRemoveFlags "$1") + shift 1 + ;; + --generate_bam) + [ -n "$VIASH_PAR_GENERATE_BAM" ] && ViashError Bad arguments for option \'--generate_bam\': \'$VIASH_PAR_GENERATE_BAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GENERATE_BAM="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --generate_bam. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --generate_bam=*) + [ -n "$VIASH_PAR_GENERATE_BAM" ] && ViashError Bad arguments for option \'--generate_bam=*\': \'$VIASH_PAR_GENERATE_BAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_GENERATE_BAM=$(ViashRemoveFlags "$1") + shift 1 + ;; + --long_reads) + [ -n "$VIASH_PAR_LONG_READS" ] && ViashError Bad arguments for option \'--long_reads\': \'$VIASH_PAR_LONG_READS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_LONG_READS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --long_reads. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --long_reads=*) + [ -n "$VIASH_PAR_LONG_READS" ] && ViashError Bad arguments for option \'--long_reads=*\': \'$VIASH_PAR_LONG_READS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_LONG_READS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --custom_star_params) + [ -n "$VIASH_PAR_CUSTOM_STAR_PARAMS" ] && ViashError Bad arguments for option \'--custom_star_params\': \'$VIASH_PAR_CUSTOM_STAR_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CUSTOM_STAR_PARAMS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --custom_star_params. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --custom_star_params=*) + [ -n "$VIASH_PAR_CUSTOM_STAR_PARAMS" ] && ViashError Bad arguments for option \'--custom_star_params=*\': \'$VIASH_PAR_CUSTOM_STAR_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CUSTOM_STAR_PARAMS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --custom_bwa_mem2_params) + [ -n "$VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS" ] && ViashError Bad arguments for option \'--custom_bwa_mem2_params\': \'$VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --custom_bwa_mem2_params. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --custom_bwa_mem2_params=*) + [ -n "$VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS" ] && ViashError Bad arguments for option \'--custom_bwa_mem2_params=*\': \'$VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --parallel) + [ -n "$VIASH_PAR_PARALLEL" ] && ViashError Bad arguments for option \'--parallel\': \'$VIASH_PAR_PARALLEL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PARALLEL="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --parallel. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --parallel=*) + [ -n "$VIASH_PAR_PARALLEL" ] && ViashError Bad arguments for option \'--parallel=*\': \'$VIASH_PAR_PARALLEL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_PARALLEL=$(ViashRemoveFlags "$1") + shift 1 + ;; + --timestamps) + [ -n "$VIASH_PAR_TIMESTAMPS" ] && ViashError Bad arguments for option \'--timestamps\': \'$VIASH_PAR_TIMESTAMPS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_TIMESTAMPS=true + shift 1 + ;; + --abseq_umi) + [ -n "$VIASH_PAR_ABSEQ_UMI" ] && ViashError Bad arguments for option \'--abseq_umi\': \'$VIASH_PAR_ABSEQ_UMI\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ABSEQ_UMI="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --abseq_umi. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --abseq_umi=*) + [ -n "$VIASH_PAR_ABSEQ_UMI" ] && ViashError Bad arguments for option \'--abseq_umi=*\': \'$VIASH_PAR_ABSEQ_UMI\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_ABSEQ_UMI=$(ViashRemoveFlags "$1") + shift 1 + ;; + --target_analysis) + [ -n "$VIASH_PAR_TARGET_ANALYSIS" ] && ViashError Bad arguments for option \'--target_analysis\': \'$VIASH_PAR_TARGET_ANALYSIS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_TARGET_ANALYSIS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --target_analysis. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --target_analysis=*) + [ -n "$VIASH_PAR_TARGET_ANALYSIS" ] && ViashError Bad arguments for option \'--target_analysis=*\': \'$VIASH_PAR_TARGET_ANALYSIS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_TARGET_ANALYSIS=$(ViashRemoveFlags "$1") + shift 1 + ;; + --vdj_jgene_evalue) + [ -n "$VIASH_PAR_VDJ_JGENE_EVALUE" ] && ViashError Bad arguments for option \'--vdj_jgene_evalue\': \'$VIASH_PAR_VDJ_JGENE_EVALUE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_JGENE_EVALUE="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_jgene_evalue. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_jgene_evalue=*) + [ -n "$VIASH_PAR_VDJ_JGENE_EVALUE" ] && ViashError Bad arguments for option \'--vdj_jgene_evalue=*\': \'$VIASH_PAR_VDJ_JGENE_EVALUE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_JGENE_EVALUE=$(ViashRemoveFlags "$1") + shift 1 + ;; + --vdj_vgene_evalue) + [ -n "$VIASH_PAR_VDJ_VGENE_EVALUE" ] && ViashError Bad arguments for option \'--vdj_vgene_evalue\': \'$VIASH_PAR_VDJ_VGENE_EVALUE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_VGENE_EVALUE="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --vdj_vgene_evalue. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --vdj_vgene_evalue=*) + [ -n "$VIASH_PAR_VDJ_VGENE_EVALUE" ] && ViashError Bad arguments for option \'--vdj_vgene_evalue=*\': \'$VIASH_PAR_VDJ_VGENE_EVALUE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_VDJ_VGENE_EVALUE=$(ViashRemoveFlags "$1") + shift 1 + ;; + --write_filtered_reads) + [ -n "$VIASH_PAR_WRITE_FILTERED_READS" ] && ViashError Bad arguments for option \'--write_filtered_reads\': \'$VIASH_PAR_WRITE_FILTERED_READS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_WRITE_FILTERED_READS="$2" + [ $# -lt 2 ] && ViashError Not enough arguments passed to --write_filtered_reads. Use "--help" to get more information on the parameters. && exit 1 + shift 2 + ;; + --write_filtered_reads=*) + [ -n "$VIASH_PAR_WRITE_FILTERED_READS" ] && ViashError Bad arguments for option \'--write_filtered_reads=*\': \'$VIASH_PAR_WRITE_FILTERED_READS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1 + VIASH_PAR_WRITE_FILTERED_READS=$(ViashRemoveFlags "$1") + shift 1 + ;; + ---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/bd_rhapsody/bd_rhapsody_sequence_analysis: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_OUTPUT_DIR+x} ]; then + ViashError '--output_dir' 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_RUN_NAME+x} ]; then + VIASH_PAR_RUN_NAME="sample" +fi +if [ -z ${VIASH_PAR_GENERATE_BAM+x} ]; then + VIASH_PAR_GENERATE_BAM="false" +fi +if [ -z ${VIASH_PAR_PARALLEL+x} ]; then + VIASH_PAR_PARALLEL="true" +fi +if [ -z ${VIASH_PAR_TIMESTAMPS+x} ]; then + VIASH_PAR_TIMESTAMPS="false" +fi + +# check whether required files exist +if [ ! -z "$VIASH_PAR_READS" ]; then + IFS=';' + set -f + for file in $VIASH_PAR_READS; do + unset IFS + if [ ! -e "$file" ]; then + ViashError "Input file '$file' does not exist." + exit 1 + fi + done + set +f +fi +if [ ! -z "$VIASH_PAR_READS_ATAC" ]; then + IFS=';' + set -f + for file in $VIASH_PAR_READS_ATAC; do + unset IFS + if [ ! -e "$file" ]; then + ViashError "Input file '$file' does not exist." + exit 1 + fi + done + set +f +fi +if [ ! -z "$VIASH_PAR_REFERENCE_ARCHIVE" ] && [ ! -e "$VIASH_PAR_REFERENCE_ARCHIVE" ]; then + ViashError "Input file '$VIASH_PAR_REFERENCE_ARCHIVE' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_TARGETED_REFERENCE" ]; then + IFS=';' + set -f + for file in $VIASH_PAR_TARGETED_REFERENCE; do + unset IFS + if [ ! -e "$file" ]; then + ViashError "Input file '$file' does not exist." + exit 1 + fi + done + set +f +fi +if [ ! -z "$VIASH_PAR_ABSEQ_REFERENCE" ]; then + IFS=';' + set -f + for file in $VIASH_PAR_ABSEQ_REFERENCE; do + unset IFS + if [ ! -e "$file" ]; then + ViashError "Input file '$file' does not exist." + exit 1 + fi + done + set +f +fi +if [ ! -z "$VIASH_PAR_SUPPLEMENTAL_REFERENCE" ]; then + IFS=';' + set -f + for file in $VIASH_PAR_SUPPLEMENTAL_REFERENCE; do + unset IFS + if [ ! -e "$file" ]; then + ViashError "Input file '$file' does not exist." + exit 1 + fi + done + set +f +fi +if [ ! -z "$VIASH_PAR_PREDEFINED_ATAC_PEAKS" ] && [ ! -e "$VIASH_PAR_PREDEFINED_ATAC_PEAKS" ]; then + ViashError "Input file '$VIASH_PAR_PREDEFINED_ATAC_PEAKS' does not exist." + exit 1 +fi + +# check whether parameters values are of the right type +if [[ -n "$VIASH_PAR_SAMPLE_TAG_COUNTS" ]]; then + if ! [[ "$VIASH_PAR_SAMPLE_TAG_COUNTS" =~ \* ]]; then + ViashError '--sample_tag_counts' has to be a path containing a wildcard, e.g. 'output_*.txt'. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_EXACT_CELL_COUNT" ]]; then + if ! [[ "$VIASH_PAR_EXACT_CELL_COUNT" =~ ^[-+]?[0-9]+$ ]]; then + ViashError '--exact_cell_count' has to be an integer. Use "--help" to get more information on the parameters. + exit 1 + fi + if [[ $VIASH_PAR_EXACT_CELL_COUNT -lt 1 ]]; then + ViashError '--exact_cell_count' has be more than or equal to 1. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_EXPECTED_CELL_COUNT" ]]; then + if ! [[ "$VIASH_PAR_EXPECTED_CELL_COUNT" =~ ^[-+]?[0-9]+$ ]]; then + ViashError '--expected_cell_count' has to be an integer. Use "--help" to get more information on the parameters. + exit 1 + fi + if [[ $VIASH_PAR_EXPECTED_CELL_COUNT -lt 1 ]]; then + ViashError '--expected_cell_count' has be more than or equal to 1. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_EXCLUDE_INTRONIC_READS" ]]; then + if ! [[ "$VIASH_PAR_EXCLUDE_INTRONIC_READS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--exclude_intronic_reads' has to be a boolean. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_GENERATE_BAM" ]]; then + if ! [[ "$VIASH_PAR_GENERATE_BAM" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--generate_bam' has to be a boolean. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_LONG_READS" ]]; then + if ! [[ "$VIASH_PAR_LONG_READS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--long_reads' has to be a boolean. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_PARALLEL" ]]; then + if ! [[ "$VIASH_PAR_PARALLEL" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--parallel' has to be a boolean. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_TIMESTAMPS" ]]; then + if ! [[ "$VIASH_PAR_TIMESTAMPS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--timestamps' has to be a boolean_true. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_ABSEQ_UMI" ]]; then + if ! [[ "$VIASH_PAR_ABSEQ_UMI" =~ ^[-+]?[0-9]+$ ]]; then + ViashError '--abseq_umi' has to be an integer. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_TARGET_ANALYSIS" ]]; then + if ! [[ "$VIASH_PAR_TARGET_ANALYSIS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--target_analysis' has to be a boolean. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_VDJ_JGENE_EVALUE" ]]; then + if ! [[ "$VIASH_PAR_VDJ_JGENE_EVALUE" =~ ^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$ ]]; then + ViashError '--vdj_jgene_evalue' has to be a double. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_VDJ_VGENE_EVALUE" ]]; then + if ! [[ "$VIASH_PAR_VDJ_VGENE_EVALUE" =~ ^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$ ]]; then + ViashError '--vdj_vgene_evalue' has to be a double. Use "--help" to get more information on the parameters. + exit 1 + fi +fi +if [[ -n "$VIASH_PAR_WRITE_FILTERED_READS" ]]; then + if ! [[ "$VIASH_PAR_WRITE_FILTERED_READS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then + ViashError '--write_filtered_reads' has to be a boolean. 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 + +# check whether value is belongs to a set of choices +if [ ! -z "$VIASH_PAR_CELL_CALLING_DATA" ]; then + VIASH_PAR_CELL_CALLING_DATA_CHOICES=("mRNA;AbSeq;ATAC;mRNA_and_ATAC") + IFS=';' + set -f + if ! [[ ";${VIASH_PAR_CELL_CALLING_DATA_CHOICES[*]};" =~ ";$VIASH_PAR_CELL_CALLING_DATA;" ]]; then + ViashError '--cell_calling_data' specified value of \'$VIASH_PAR_CELL_CALLING_DATA\' is not in the list of allowed values. Use "--help" to get more information on the parameters. + exit 1 + fi + set +f + unset IFS +fi + +if [ ! -z "$VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM" ]; then + VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM_CHOICES=("Basic;Refined") + IFS=';' + set -f + if ! [[ ";${VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM_CHOICES[*]};" =~ ";$VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM;" ]]; then + ViashError '--cell_calling_bioproduct_algorithm' specified value of \'$VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM\' is not in the list of allowed values. Use "--help" to get more information on the parameters. + exit 1 + fi + set +f + unset IFS +fi + +if [ ! -z "$VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM" ]; then + VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM_CHOICES=("Basic;Refined") + IFS=';' + set -f + if ! [[ ";${VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM_CHOICES[*]};" =~ ";$VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM;" ]]; then + ViashError '--cell_calling_atac_algorithm' specified value of \'$VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM\' is not in the list of allowed values. Use "--help" to get more information on the parameters. + exit 1 + fi + set +f + unset IFS +fi + +if [ ! -z "$VIASH_PAR_SAMPLE_TAGS_VERSION" ]; then + VIASH_PAR_SAMPLE_TAGS_VERSION_CHOICES=("human;mouse;flex;nuclei_includes_mrna;nuclei_atac_only") + IFS=';' + set -f + if ! [[ ";${VIASH_PAR_SAMPLE_TAGS_VERSION_CHOICES[*]};" =~ ";$VIASH_PAR_SAMPLE_TAGS_VERSION;" ]]; then + ViashError '--sample_tags_version' specified value of \'$VIASH_PAR_SAMPLE_TAGS_VERSION\' is not in the list of allowed values. Use "--help" to get more information on the parameters. + exit 1 + fi + set +f + unset IFS +fi + +if [ ! -z "$VIASH_PAR_VDJ_VERSION" ]; then + VIASH_PAR_VDJ_VERSION_CHOICES=("human;mouse;humanBCR;humanTCR;mouseBCR;mouseTCR") + IFS=';' + set -f + if ! [[ ";${VIASH_PAR_VDJ_VERSION_CHOICES[*]};" =~ ";$VIASH_PAR_VDJ_VERSION;" ]]; then + ViashError '--vdj_version' specified value of \'$VIASH_PAR_VDJ_VERSION\' is not in the list of allowed values. Use "--help" to get more information on the parameters. + exit 1 + fi + set +f + unset IFS +fi + +# create parent directories of output files, if so desired +if [ ! -z "$VIASH_PAR_OUTPUT_DIR" ] && [ ! -d "$(dirname "$VIASH_PAR_OUTPUT_DIR")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_OUTPUT_DIR")" +fi +if [ ! -z "$VIASH_PAR_OUTPUT_SEURAT" ] && [ ! -d "$(dirname "$VIASH_PAR_OUTPUT_SEURAT")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_OUTPUT_SEURAT")" +fi +if [ ! -z "$VIASH_PAR_OUTPUT_MUDATA" ] && [ ! -d "$(dirname "$VIASH_PAR_OUTPUT_MUDATA")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_OUTPUT_MUDATA")" +fi +if [ ! -z "$VIASH_PAR_METRICS_SUMMARY" ] && [ ! -d "$(dirname "$VIASH_PAR_METRICS_SUMMARY")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_METRICS_SUMMARY")" +fi +if [ ! -z "$VIASH_PAR_PIPELINE_REPORT" ] && [ ! -d "$(dirname "$VIASH_PAR_PIPELINE_REPORT")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_PIPELINE_REPORT")" +fi +if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL" ] && [ ! -d "$(dirname "$VIASH_PAR_RSEC_MOLS_PER_CELL")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_RSEC_MOLS_PER_CELL")" +fi +if [ ! -z "$VIASH_PAR_DBEC_MOLS_PER_CELL" ] && [ ! -d "$(dirname "$VIASH_PAR_DBEC_MOLS_PER_CELL")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_DBEC_MOLS_PER_CELL")" +fi +if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ] && [ ! -d "$(dirname "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED")" +fi +if [ ! -z "$VIASH_PAR_BAM" ] && [ ! -d "$(dirname "$VIASH_PAR_BAM")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_BAM")" +fi +if [ ! -z "$VIASH_PAR_BAM_INDEX" ] && [ ! -d "$(dirname "$VIASH_PAR_BAM_INDEX")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_BAM_INDEX")" +fi +if [ ! -z "$VIASH_PAR_BIOPRODUCT_STATS" ] && [ ! -d "$(dirname "$VIASH_PAR_BIOPRODUCT_STATS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_BIOPRODUCT_STATS")" +fi +if [ ! -z "$VIASH_PAR_DIMRED_TSNE" ] && [ ! -d "$(dirname "$VIASH_PAR_DIMRED_TSNE")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_DIMRED_TSNE")" +fi +if [ ! -z "$VIASH_PAR_DIMRED_UMAP" ] && [ ! -d "$(dirname "$VIASH_PAR_DIMRED_UMAP")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_DIMRED_UMAP")" +fi +if [ ! -z "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ] && [ ! -d "$(dirname "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION")" +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_METRICS" ] && [ ! -d "$(dirname "$VIASH_PAR_SAMPLE_TAG_METRICS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_SAMPLE_TAG_METRICS")" +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_CALLS" ] && [ ! -d "$(dirname "$VIASH_PAR_SAMPLE_TAG_CALLS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_SAMPLE_TAG_CALLS")" +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS" ] && [ ! -d "$(dirname "$VIASH_PAR_SAMPLE_TAG_COUNTS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_SAMPLE_TAG_COUNTS")" +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ] && [ ! -d "$(dirname "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED")" +fi +if [ ! -z "$VIASH_PAR_VDJ_METRICS" ] && [ ! -d "$(dirname "$VIASH_PAR_VDJ_METRICS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_VDJ_METRICS")" +fi +if [ ! -z "$VIASH_PAR_VDJ_PER_CELL" ] && [ ! -d "$(dirname "$VIASH_PAR_VDJ_PER_CELL")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_VDJ_PER_CELL")" +fi +if [ ! -z "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ] && [ ! -d "$(dirname "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED")" +fi +if [ ! -z "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ] && [ ! -d "$(dirname "$VIASH_PAR_VDJ_DOMINANT_CONTIGS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_VDJ_DOMINANT_CONTIGS")" +fi +if [ ! -z "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ] && [ ! -d "$(dirname "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS")" +fi +if [ ! -z "$VIASH_PAR_ATAC_METRICS" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_METRICS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_METRICS")" +fi +if [ ! -z "$VIASH_PAR_ATAC_METRICS_JSON" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_METRICS_JSON")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_METRICS_JSON")" +fi +if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_FRAGMENTS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_FRAGMENTS")" +fi +if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_FRAGMENTS_INDEX")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_FRAGMENTS_INDEX")" +fi +if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_TRANSPOSASE_SITES")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_TRANSPOSASE_SITES")" +fi +if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX")" +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAKS" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_PEAKS")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_PEAKS")" +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAKS_INDEX" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_PEAKS_INDEX")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_PEAKS_INDEX")" +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_PEAK_ANNOTATION")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_PEAK_ANNOTATION")" +fi +if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_CELL_BY_PEAK")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_CELL_BY_PEAK")" +fi +if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED")" +fi +if [ ! -z "$VIASH_PAR_ATAC_BAM" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_BAM")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_BAM")" +fi +if [ ! -z "$VIASH_PAR_ATAC_BAM_INDEX" ] && [ ! -d "$(dirname "$VIASH_PAR_ATAC_BAM_INDEX")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_ATAC_BAM_INDEX")" +fi +if [ ! -z "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ] && [ ! -d "$(dirname "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL")" ]; then + mkdir -p "$(dirname "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL")" +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_READS" ]; then + VIASH_TEST_READS=() + IFS=';' + for var in $VIASH_PAR_READS; do + unset IFS + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" ) + var=$(ViashDockerAutodetectMount "$var") + VIASH_TEST_READS+=( "$var" ) + done + VIASH_PAR_READS=$(IFS=';' ; echo "${VIASH_TEST_READS[*]}") +fi +if [ ! -z "$VIASH_PAR_READS_ATAC" ]; then + VIASH_TEST_READS_ATAC=() + IFS=';' + for var in $VIASH_PAR_READS_ATAC; do + unset IFS + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" ) + var=$(ViashDockerAutodetectMount "$var") + VIASH_TEST_READS_ATAC+=( "$var" ) + done + VIASH_PAR_READS_ATAC=$(IFS=';' ; echo "${VIASH_TEST_READS_ATAC[*]}") +fi +if [ ! -z "$VIASH_PAR_REFERENCE_ARCHIVE" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_REFERENCE_ARCHIVE")" ) + VIASH_PAR_REFERENCE_ARCHIVE=$(ViashDockerAutodetectMount "$VIASH_PAR_REFERENCE_ARCHIVE") +fi +if [ ! -z "$VIASH_PAR_TARGETED_REFERENCE" ]; then + VIASH_TEST_TARGETED_REFERENCE=() + IFS=';' + for var in $VIASH_PAR_TARGETED_REFERENCE; do + unset IFS + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" ) + var=$(ViashDockerAutodetectMount "$var") + VIASH_TEST_TARGETED_REFERENCE+=( "$var" ) + done + VIASH_PAR_TARGETED_REFERENCE=$(IFS=';' ; echo "${VIASH_TEST_TARGETED_REFERENCE[*]}") +fi +if [ ! -z "$VIASH_PAR_ABSEQ_REFERENCE" ]; then + VIASH_TEST_ABSEQ_REFERENCE=() + IFS=';' + for var in $VIASH_PAR_ABSEQ_REFERENCE; do + unset IFS + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" ) + var=$(ViashDockerAutodetectMount "$var") + VIASH_TEST_ABSEQ_REFERENCE+=( "$var" ) + done + VIASH_PAR_ABSEQ_REFERENCE=$(IFS=';' ; echo "${VIASH_TEST_ABSEQ_REFERENCE[*]}") +fi +if [ ! -z "$VIASH_PAR_SUPPLEMENTAL_REFERENCE" ]; then + VIASH_TEST_SUPPLEMENTAL_REFERENCE=() + IFS=';' + for var in $VIASH_PAR_SUPPLEMENTAL_REFERENCE; do + unset IFS + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" ) + var=$(ViashDockerAutodetectMount "$var") + VIASH_TEST_SUPPLEMENTAL_REFERENCE+=( "$var" ) + done + VIASH_PAR_SUPPLEMENTAL_REFERENCE=$(IFS=';' ; echo "${VIASH_TEST_SUPPLEMENTAL_REFERENCE[*]}") +fi +if [ ! -z "$VIASH_PAR_OUTPUT_DIR" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT_DIR")" ) + VIASH_PAR_OUTPUT_DIR=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT_DIR") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_OUTPUT_DIR" ) +fi +if [ ! -z "$VIASH_PAR_OUTPUT_SEURAT" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT_SEURAT")" ) + VIASH_PAR_OUTPUT_SEURAT=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT_SEURAT") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_OUTPUT_SEURAT" ) +fi +if [ ! -z "$VIASH_PAR_OUTPUT_MUDATA" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT_MUDATA")" ) + VIASH_PAR_OUTPUT_MUDATA=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT_MUDATA") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_OUTPUT_MUDATA" ) +fi +if [ ! -z "$VIASH_PAR_METRICS_SUMMARY" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_METRICS_SUMMARY")" ) + VIASH_PAR_METRICS_SUMMARY=$(ViashDockerAutodetectMount "$VIASH_PAR_METRICS_SUMMARY") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_METRICS_SUMMARY" ) +fi +if [ ! -z "$VIASH_PAR_PIPELINE_REPORT" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_PIPELINE_REPORT")" ) + VIASH_PAR_PIPELINE_REPORT=$(ViashDockerAutodetectMount "$VIASH_PAR_PIPELINE_REPORT") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_PIPELINE_REPORT" ) +fi +if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_RSEC_MOLS_PER_CELL")" ) + VIASH_PAR_RSEC_MOLS_PER_CELL=$(ViashDockerAutodetectMount "$VIASH_PAR_RSEC_MOLS_PER_CELL") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_RSEC_MOLS_PER_CELL" ) +fi +if [ ! -z "$VIASH_PAR_DBEC_MOLS_PER_CELL" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_DBEC_MOLS_PER_CELL")" ) + VIASH_PAR_DBEC_MOLS_PER_CELL=$(ViashDockerAutodetectMount "$VIASH_PAR_DBEC_MOLS_PER_CELL") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_DBEC_MOLS_PER_CELL" ) +fi +if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED")" ) + VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED=$(ViashDockerAutodetectMount "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ) +fi +if [ ! -z "$VIASH_PAR_BAM" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_BAM")" ) + VIASH_PAR_BAM=$(ViashDockerAutodetectMount "$VIASH_PAR_BAM") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_BAM" ) +fi +if [ ! -z "$VIASH_PAR_BAM_INDEX" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_BAM_INDEX")" ) + VIASH_PAR_BAM_INDEX=$(ViashDockerAutodetectMount "$VIASH_PAR_BAM_INDEX") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_BAM_INDEX" ) +fi +if [ ! -z "$VIASH_PAR_BIOPRODUCT_STATS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_BIOPRODUCT_STATS")" ) + VIASH_PAR_BIOPRODUCT_STATS=$(ViashDockerAutodetectMount "$VIASH_PAR_BIOPRODUCT_STATS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_BIOPRODUCT_STATS" ) +fi +if [ ! -z "$VIASH_PAR_DIMRED_TSNE" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_DIMRED_TSNE")" ) + VIASH_PAR_DIMRED_TSNE=$(ViashDockerAutodetectMount "$VIASH_PAR_DIMRED_TSNE") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_DIMRED_TSNE" ) +fi +if [ ! -z "$VIASH_PAR_DIMRED_UMAP" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_DIMRED_UMAP")" ) + VIASH_PAR_DIMRED_UMAP=$(ViashDockerAutodetectMount "$VIASH_PAR_DIMRED_UMAP") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_DIMRED_UMAP" ) +fi +if [ ! -z "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION")" ) + VIASH_PAR_IMMUNE_CELL_CLASSIFICATION=$(ViashDockerAutodetectMount "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ) +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_METRICS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_SAMPLE_TAG_METRICS")" ) + VIASH_PAR_SAMPLE_TAG_METRICS=$(ViashDockerAutodetectMount "$VIASH_PAR_SAMPLE_TAG_METRICS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_SAMPLE_TAG_METRICS" ) +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_CALLS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_SAMPLE_TAG_CALLS")" ) + VIASH_PAR_SAMPLE_TAG_CALLS=$(ViashDockerAutodetectMount "$VIASH_PAR_SAMPLE_TAG_CALLS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_SAMPLE_TAG_CALLS" ) +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS" ]; then + VIASH_TEST_SAMPLE_TAG_COUNTS=() + IFS=';' + for var in $VIASH_PAR_SAMPLE_TAG_COUNTS; do + unset IFS + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" ) + var=$(ViashDockerAutodetectMount "$var") + VIASH_TEST_SAMPLE_TAG_COUNTS+=( "$var" ) + VIASH_CHOWN_VARS+=( "$var" ) + done + VIASH_PAR_SAMPLE_TAG_COUNTS=$(IFS=';' ; echo "${VIASH_TEST_SAMPLE_TAG_COUNTS[*]}") +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED")" ) + VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED=$(ViashDockerAutodetectMount "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ) +fi +if [ ! -z "$VIASH_PAR_VDJ_METRICS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_VDJ_METRICS")" ) + VIASH_PAR_VDJ_METRICS=$(ViashDockerAutodetectMount "$VIASH_PAR_VDJ_METRICS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_VDJ_METRICS" ) +fi +if [ ! -z "$VIASH_PAR_VDJ_PER_CELL" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_VDJ_PER_CELL")" ) + VIASH_PAR_VDJ_PER_CELL=$(ViashDockerAutodetectMount "$VIASH_PAR_VDJ_PER_CELL") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_VDJ_PER_CELL" ) +fi +if [ ! -z "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED")" ) + VIASH_PAR_VDJ_PER_CELL_UNCORRECTED=$(ViashDockerAutodetectMount "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ) +fi +if [ ! -z "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_VDJ_DOMINANT_CONTIGS")" ) + VIASH_PAR_VDJ_DOMINANT_CONTIGS=$(ViashDockerAutodetectMount "$VIASH_PAR_VDJ_DOMINANT_CONTIGS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ) +fi +if [ ! -z "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS")" ) + VIASH_PAR_VDJ_UNFILTERED_CONTIGS=$(ViashDockerAutodetectMount "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_METRICS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_METRICS")" ) + VIASH_PAR_ATAC_METRICS=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_METRICS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_METRICS" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_METRICS_JSON" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_METRICS_JSON")" ) + VIASH_PAR_ATAC_METRICS_JSON=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_METRICS_JSON") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_METRICS_JSON" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_FRAGMENTS")" ) + VIASH_PAR_ATAC_FRAGMENTS=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_FRAGMENTS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_FRAGMENTS" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_FRAGMENTS_INDEX")" ) + VIASH_PAR_ATAC_FRAGMENTS_INDEX=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_FRAGMENTS_INDEX") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_TRANSPOSASE_SITES")" ) + VIASH_PAR_ATAC_TRANSPOSASE_SITES=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_TRANSPOSASE_SITES") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX")" ) + VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAKS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_PEAKS")" ) + VIASH_PAR_ATAC_PEAKS=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_PEAKS") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_PEAKS" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAKS_INDEX" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_PEAKS_INDEX")" ) + VIASH_PAR_ATAC_PEAKS_INDEX=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_PEAKS_INDEX") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_PEAKS_INDEX" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_PEAK_ANNOTATION")" ) + VIASH_PAR_ATAC_PEAK_ANNOTATION=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_PEAK_ANNOTATION") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_CELL_BY_PEAK")" ) + VIASH_PAR_ATAC_CELL_BY_PEAK=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_CELL_BY_PEAK") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_CELL_BY_PEAK" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED")" ) + VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_BAM" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_BAM")" ) + VIASH_PAR_ATAC_BAM=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_BAM") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_BAM" ) +fi +if [ ! -z "$VIASH_PAR_ATAC_BAM_INDEX" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_ATAC_BAM_INDEX")" ) + VIASH_PAR_ATAC_BAM_INDEX=$(ViashDockerAutodetectMount "$VIASH_PAR_ATAC_BAM_INDEX") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_ATAC_BAM_INDEX" ) +fi +if [ ! -z "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL")" ) + VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL=$(ViashDockerAutodetectMount "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL") + VIASH_CHOWN_VARS+=( "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ) +fi +if [ ! -z "$VIASH_PAR_PREDEFINED_ATAC_PEAKS" ]; then + VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_PREDEFINED_ATAC_PEAKS")" ) + VIASH_PAR_PREDEFINED_ATAC_PEAKS=$(ViashDockerAutodetectMount "$VIASH_PAR_PREDEFINED_ATAC_PEAKS") +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-bd_rhapsody_sequence_analysis-XXXXXX").py +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' +import os +import re +import subprocess +import tempfile +from typing import Any +import yaml +import shutil +import glob + +## VIASH START +# The following code has been auto-generated by Viash. +par = { + 'reads': $( if [ ! -z ${VIASH_PAR_READS+x} ]; then echo "r'${VIASH_PAR_READS//\'/\'\"\'\"r\'}'.split(';')"; else echo None; fi ), + 'reads_atac': $( if [ ! -z ${VIASH_PAR_READS_ATAC+x} ]; then echo "r'${VIASH_PAR_READS_ATAC//\'/\'\"\'\"r\'}'.split(';')"; else echo None; fi ), + 'reference_archive': $( if [ ! -z ${VIASH_PAR_REFERENCE_ARCHIVE+x} ]; then echo "r'${VIASH_PAR_REFERENCE_ARCHIVE//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'targeted_reference': $( if [ ! -z ${VIASH_PAR_TARGETED_REFERENCE+x} ]; then echo "r'${VIASH_PAR_TARGETED_REFERENCE//\'/\'\"\'\"r\'}'.split(';')"; else echo None; fi ), + 'abseq_reference': $( if [ ! -z ${VIASH_PAR_ABSEQ_REFERENCE+x} ]; then echo "r'${VIASH_PAR_ABSEQ_REFERENCE//\'/\'\"\'\"r\'}'.split(';')"; else echo None; fi ), + 'supplemental_reference': $( if [ ! -z ${VIASH_PAR_SUPPLEMENTAL_REFERENCE+x} ]; then echo "r'${VIASH_PAR_SUPPLEMENTAL_REFERENCE//\'/\'\"\'\"r\'}'.split(';')"; else echo None; fi ), + 'output_dir': $( if [ ! -z ${VIASH_PAR_OUTPUT_DIR+x} ]; then echo "r'${VIASH_PAR_OUTPUT_DIR//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'output_seurat': $( if [ ! -z ${VIASH_PAR_OUTPUT_SEURAT+x} ]; then echo "r'${VIASH_PAR_OUTPUT_SEURAT//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'output_mudata': $( if [ ! -z ${VIASH_PAR_OUTPUT_MUDATA+x} ]; then echo "r'${VIASH_PAR_OUTPUT_MUDATA//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'metrics_summary': $( if [ ! -z ${VIASH_PAR_METRICS_SUMMARY+x} ]; then echo "r'${VIASH_PAR_METRICS_SUMMARY//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'pipeline_report': $( if [ ! -z ${VIASH_PAR_PIPELINE_REPORT+x} ]; then echo "r'${VIASH_PAR_PIPELINE_REPORT//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'rsec_mols_per_cell': $( if [ ! -z ${VIASH_PAR_RSEC_MOLS_PER_CELL+x} ]; then echo "r'${VIASH_PAR_RSEC_MOLS_PER_CELL//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'dbec_mols_per_cell': $( if [ ! -z ${VIASH_PAR_DBEC_MOLS_PER_CELL+x} ]; then echo "r'${VIASH_PAR_DBEC_MOLS_PER_CELL//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'rsec_mols_per_cell_unfiltered': $( if [ ! -z ${VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED+x} ]; then echo "r'${VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'bam': $( if [ ! -z ${VIASH_PAR_BAM+x} ]; then echo "r'${VIASH_PAR_BAM//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'bam_index': $( if [ ! -z ${VIASH_PAR_BAM_INDEX+x} ]; then echo "r'${VIASH_PAR_BAM_INDEX//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'bioproduct_stats': $( if [ ! -z ${VIASH_PAR_BIOPRODUCT_STATS+x} ]; then echo "r'${VIASH_PAR_BIOPRODUCT_STATS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'dimred_tsne': $( if [ ! -z ${VIASH_PAR_DIMRED_TSNE+x} ]; then echo "r'${VIASH_PAR_DIMRED_TSNE//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'dimred_umap': $( if [ ! -z ${VIASH_PAR_DIMRED_UMAP+x} ]; then echo "r'${VIASH_PAR_DIMRED_UMAP//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'immune_cell_classification': $( if [ ! -z ${VIASH_PAR_IMMUNE_CELL_CLASSIFICATION+x} ]; then echo "r'${VIASH_PAR_IMMUNE_CELL_CLASSIFICATION//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'sample_tag_metrics': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_METRICS+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_METRICS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'sample_tag_calls': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_CALLS+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_CALLS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'sample_tag_counts': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_COUNTS+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_COUNTS//\'/\'\"\'\"r\'}'.split(';')"; else echo None; fi ), + 'sample_tag_counts_unassigned': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'vdj_metrics': $( if [ ! -z ${VIASH_PAR_VDJ_METRICS+x} ]; then echo "r'${VIASH_PAR_VDJ_METRICS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'vdj_per_cell': $( if [ ! -z ${VIASH_PAR_VDJ_PER_CELL+x} ]; then echo "r'${VIASH_PAR_VDJ_PER_CELL//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'vdj_per_cell_uncorrected': $( if [ ! -z ${VIASH_PAR_VDJ_PER_CELL_UNCORRECTED+x} ]; then echo "r'${VIASH_PAR_VDJ_PER_CELL_UNCORRECTED//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'vdj_dominant_contigs': $( if [ ! -z ${VIASH_PAR_VDJ_DOMINANT_CONTIGS+x} ]; then echo "r'${VIASH_PAR_VDJ_DOMINANT_CONTIGS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'vdj_unfiltered_contigs': $( if [ ! -z ${VIASH_PAR_VDJ_UNFILTERED_CONTIGS+x} ]; then echo "r'${VIASH_PAR_VDJ_UNFILTERED_CONTIGS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_metrics': $( if [ ! -z ${VIASH_PAR_ATAC_METRICS+x} ]; then echo "r'${VIASH_PAR_ATAC_METRICS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_metrics_json': $( if [ ! -z ${VIASH_PAR_ATAC_METRICS_JSON+x} ]; then echo "r'${VIASH_PAR_ATAC_METRICS_JSON//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_fragments': $( if [ ! -z ${VIASH_PAR_ATAC_FRAGMENTS+x} ]; then echo "r'${VIASH_PAR_ATAC_FRAGMENTS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_fragments_index': $( if [ ! -z ${VIASH_PAR_ATAC_FRAGMENTS_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_FRAGMENTS_INDEX//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_transposase_sites': $( if [ ! -z ${VIASH_PAR_ATAC_TRANSPOSASE_SITES+x} ]; then echo "r'${VIASH_PAR_ATAC_TRANSPOSASE_SITES//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_transposase_sites_index': $( if [ ! -z ${VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_peaks': $( if [ ! -z ${VIASH_PAR_ATAC_PEAKS+x} ]; then echo "r'${VIASH_PAR_ATAC_PEAKS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_peaks_index': $( if [ ! -z ${VIASH_PAR_ATAC_PEAKS_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_PEAKS_INDEX//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_peak_annotation': $( if [ ! -z ${VIASH_PAR_ATAC_PEAK_ANNOTATION+x} ]; then echo "r'${VIASH_PAR_ATAC_PEAK_ANNOTATION//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_cell_by_peak': $( if [ ! -z ${VIASH_PAR_ATAC_CELL_BY_PEAK+x} ]; then echo "r'${VIASH_PAR_ATAC_CELL_BY_PEAK//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_cell_by_peak_unfiltered': $( if [ ! -z ${VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED+x} ]; then echo "r'${VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_bam': $( if [ ! -z ${VIASH_PAR_ATAC_BAM+x} ]; then echo "r'${VIASH_PAR_ATAC_BAM//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'atac_bam_index': $( if [ ! -z ${VIASH_PAR_ATAC_BAM_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_BAM_INDEX//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'protein_aggregates_experimental': $( if [ ! -z ${VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL+x} ]; then echo "r'${VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'cell_calling_data': $( if [ ! -z ${VIASH_PAR_CELL_CALLING_DATA+x} ]; then echo "r'${VIASH_PAR_CELL_CALLING_DATA//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'cell_calling_bioproduct_algorithm': $( if [ ! -z ${VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM+x} ]; then echo "r'${VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'cell_calling_atac_algorithm': $( if [ ! -z ${VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM+x} ]; then echo "r'${VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'exact_cell_count': $( if [ ! -z ${VIASH_PAR_EXACT_CELL_COUNT+x} ]; then echo "int(r'${VIASH_PAR_EXACT_CELL_COUNT//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'expected_cell_count': $( if [ ! -z ${VIASH_PAR_EXPECTED_CELL_COUNT+x} ]; then echo "int(r'${VIASH_PAR_EXPECTED_CELL_COUNT//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'exclude_intronic_reads': $( if [ ! -z ${VIASH_PAR_EXCLUDE_INTRONIC_READS+x} ]; then echo "r'${VIASH_PAR_EXCLUDE_INTRONIC_READS//\'/\'\"\'\"r\'}'.lower() == 'true'"; else echo None; fi ), + 'sample_tags_version': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAGS_VERSION+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAGS_VERSION//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'tag_names': $( if [ ! -z ${VIASH_PAR_TAG_NAMES+x} ]; then echo "r'${VIASH_PAR_TAG_NAMES//\'/\'\"\'\"r\'}'.split(';')"; else echo None; fi ), + 'vdj_version': $( if [ ! -z ${VIASH_PAR_VDJ_VERSION+x} ]; then echo "r'${VIASH_PAR_VDJ_VERSION//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'predefined_atac_peaks': $( if [ ! -z ${VIASH_PAR_PREDEFINED_ATAC_PEAKS+x} ]; then echo "r'${VIASH_PAR_PREDEFINED_ATAC_PEAKS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'run_name': $( if [ ! -z ${VIASH_PAR_RUN_NAME+x} ]; then echo "r'${VIASH_PAR_RUN_NAME//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'generate_bam': $( if [ ! -z ${VIASH_PAR_GENERATE_BAM+x} ]; then echo "r'${VIASH_PAR_GENERATE_BAM//\'/\'\"\'\"r\'}'.lower() == 'true'"; else echo None; fi ), + 'long_reads': $( if [ ! -z ${VIASH_PAR_LONG_READS+x} ]; then echo "r'${VIASH_PAR_LONG_READS//\'/\'\"\'\"r\'}'.lower() == 'true'"; else echo None; fi ), + 'custom_star_params': $( if [ ! -z ${VIASH_PAR_CUSTOM_STAR_PARAMS+x} ]; then echo "r'${VIASH_PAR_CUSTOM_STAR_PARAMS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'custom_bwa_mem2_params': $( if [ ! -z ${VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS+x} ]; then echo "r'${VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'parallel': $( if [ ! -z ${VIASH_PAR_PARALLEL+x} ]; then echo "r'${VIASH_PAR_PARALLEL//\'/\'\"\'\"r\'}'.lower() == 'true'"; else echo None; fi ), + 'timestamps': $( if [ ! -z ${VIASH_PAR_TIMESTAMPS+x} ]; then echo "r'${VIASH_PAR_TIMESTAMPS//\'/\'\"\'\"r\'}'.lower() == 'true'"; else echo None; fi ), + 'abseq_umi': $( if [ ! -z ${VIASH_PAR_ABSEQ_UMI+x} ]; then echo "int(r'${VIASH_PAR_ABSEQ_UMI//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'target_analysis': $( if [ ! -z ${VIASH_PAR_TARGET_ANALYSIS+x} ]; then echo "r'${VIASH_PAR_TARGET_ANALYSIS//\'/\'\"\'\"r\'}'.lower() == 'true'"; else echo None; fi ), + 'vdj_jgene_evalue': $( if [ ! -z ${VIASH_PAR_VDJ_JGENE_EVALUE+x} ]; then echo "float(r'${VIASH_PAR_VDJ_JGENE_EVALUE//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'vdj_vgene_evalue': $( if [ ! -z ${VIASH_PAR_VDJ_VGENE_EVALUE+x} ]; then echo "float(r'${VIASH_PAR_VDJ_VGENE_EVALUE//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'write_filtered_reads': $( if [ ! -z ${VIASH_PAR_WRITE_FILTERED_READS+x} ]; then echo "r'${VIASH_PAR_WRITE_FILTERED_READS//\'/\'\"\'\"r\'}'.lower() == 'true'"; else echo None; fi ) +} +meta = { + 'name': $( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "r'${VIASH_META_NAME//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'functionality_name': $( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "r'${VIASH_META_FUNCTIONALITY_NAME//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'resources_dir': $( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "r'${VIASH_META_RESOURCES_DIR//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'executable': $( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "r'${VIASH_META_EXECUTABLE//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'config': $( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "r'${VIASH_META_CONFIG//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'temp_dir': $( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "r'${VIASH_META_TEMP_DIR//\'/\'\"\'\"r\'}'"; else echo None; fi ), + 'cpus': $( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "int(r'${VIASH_META_CPUS//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_b': $( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "int(r'${VIASH_META_MEMORY_B//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_kb': $( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "int(r'${VIASH_META_MEMORY_KB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_mb': $( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "int(r'${VIASH_META_MEMORY_MB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_gb': $( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "int(r'${VIASH_META_MEMORY_GB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_tb': $( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "int(r'${VIASH_META_MEMORY_TB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_pb': $( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "int(r'${VIASH_META_MEMORY_PB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_kib': $( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_KIB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_mib': $( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_MIB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_gib': $( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_GIB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_tib': $( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_TIB//\'/\'\"\'\"r\'}')"; else echo None; fi ), + 'memory_pib': $( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_PIB//\'/\'\"\'\"r\'}')"; else echo None; fi ) +} +dep = { + +} + +## VIASH END + +def clean_arg(argument): + argument["clean_name"] = argument["name"].lstrip("-") + return argument + +def read_config(path: str) -> dict[str, Any]: + with open(path, 'r') as f: + config = yaml.safe_load(f) + + config["arguments"] = [ + clean_arg(arg) + for grp in config["argument_groups"] + for arg in grp["arguments"] + ] + + return config + +def strip_margin(text: str) -> str: + return re.sub('(\\n?)[ \\t]*\\|', '\\\\1', text) + +def process_params(par: dict[str, Any], config, temp_dir: str) -> str: + # check input parameters + assert par["reads"] or par["reads_atac"], "Pass at least one set of inputs to --reads or --reads_atac." + + # output to temp dir if output_dir was not passed + if not par["output_dir"]: + par["output_dir"] = os.path.join(temp_dir, "output") + + # checking sample prefix + if par["run_name"] and re.match("[^A-Za-z0-9]", par["run_name"]): + print("--run_name should only consist of letters, numbers or hyphens. Replacing all '[^A-Za-z0-9]' with '-'.", flush=True) + par["run_name"] = re.sub("[^A-Za-z0-9\\\\-]", "-", par["run_name"]) + + # make paths absolute + for argument in config["arguments"]: + arg_clean_name = argument["clean_name"] + if not par[arg_clean_name] or not argument["type"] == "file": + continue + par_value = par[arg_clean_name] + if isinstance(par_value, list): + par_value_absolute = list(map(os.path.abspath, par_value)) + else: + par_value_absolute = os.path.abspath(par_value) + par[arg_clean_name] = par_value_absolute + + return par + +def generate_config(par: dict[str, Any], config) -> str: + content_list = [strip_margin(f"""\\ + |#!/usr/bin/env cwl-runner + | + |cwl:tool: rhapsody + |""")] + + for argument in config["arguments"]: + arg_clean_name = argument["clean_name"] + arg_par_value = par[arg_clean_name] + arg_info = argument.get("info") or {} # Note: .info might be None + config_key = arg_info.get("config_key") + if arg_par_value and config_key: + + if argument["type"] == "file": + content = strip_margin(f"""\\ + |{config_key}: + |""") + if isinstance(arg_par_value, list): + for file in arg_par_value: + content += strip_margin(f"""\\ + | - class: File + | location: "{file}" + |""") + else: + content += strip_margin(f"""\\ + | class: File + | location: "{arg_par_value}" + |""") + content_list.append(content) + else: + content_list.append(strip_margin(f"""\\ + |{config_key}: {arg_par_value} + |""")) + + ## Write config to file + return ''.join(content_list) + +def generate_config_file(par: dict[str, Any], config: dict[str, Any], temp_dir: str) -> str: + config_file = os.path.join(temp_dir, "config.yml") + config_content = generate_config(par, config) + with open(config_file, "w") as f: + f.write(config_content) + return config_file + +def generate_cwl_file(meta: dict[str, Any], dir: str) -> str: + # create cwl file (if need be) + # orig_cwl_file=os.path.join(meta["resources_dir"], "rhapsody_pipeline_2.2.1_nodocker.cwl") + orig_cwl_file="/var/bd_rhapsody_cwl/v2.2.1/rhapsody_pipeline_2.2.1.cwl" + + if not meta["memory_mb"] and not meta["cpus"]: + return os.path.abspath(orig_cwl_file) + + # Inject computational requirements into pipeline + cwl_file = os.path.join(dir, "pipeline.cwl") + + # Read in the file + with open(orig_cwl_file, 'r') as file : + cwl_data = file.read() + + # Inject computational requirements into pipeline + if meta["memory_mb"]: + memory = int(meta["memory_mb"]) - 2000 # keep 2gb for OS + cwl_data = re.sub('"ramMin": [^\\n]*[^,](,?)\\n', f'"ramMin": {memory}\\\\1\\n', cwl_data) + if meta["cpus"]: + cwl_data = re.sub('"coresMin": [^\\n]*[^,](,?)\\n', f'"coresMin": {meta["cpus"]}\\\\1\\n', cwl_data) + + # Write the file out again + with open(cwl_file, 'w') as file: + file.write(cwl_data) + + return os.path.abspath(cwl_file) + +def copy_outputs(par: dict[str, Any], config: dict[str, Any]): + for arg in config["arguments"]: + par_value = par[arg["clean_name"]] + if par_value and arg["type"] == "file" and arg["direction"] == "output": + # example template: '[sample_name]_(assay)_cell_type_experimental.csv' + template = (arg.get("info") or {}).get("template") # Note: .info might be None + if template: + template_glob = template\\ + .replace("[sample_name]", par["run_name"])\\ + .replace("(assay)", "*")\\ + .replace("[number]", "*") + files = glob.glob(os.path.join(par["output_dir"], template_glob)) + if not files and arg["required"]: + raise ValueError(f"Expected output file '{template_glob}' not found.") + elif len(files) > 1 and not arg["multiple"]: + raise ValueError(f"Expected single output file '{template_glob}', but found multiple.") + + if not arg["multiple"]: + shutil.copy(files[0], par_value) + else: + # replace '*' in par_value with index + for i, file in enumerate(files): + shutil.copy(file, par_value.replace("*", str(i))) + + +def main(par: dict[str, Any], meta: dict[str, Any], temp_dir: str): + config = read_config(meta["config"]) + + # Preprocess params + par = process_params(par, config, temp_dir) + + ## Process parameters + cmd = [ + "cwl-runner", + "--no-container", + "--preserve-entire-environment", + "--outdir", par["output_dir"], + ] + + if par["parallel"]: + cmd.append("--parallel") + + if par["timestamps"]: + cmd.append("--timestamps") + + # Create cwl file (if need be) + cwl_file = generate_cwl_file(meta, temp_dir) + cmd.append(cwl_file) + + # Create params file + config_file = generate_config_file(par, config, temp_dir) + cmd.append(config_file) + + # keep environment variables but set TMPDIR to temp_dir + env = dict(os.environ) + env["TMPDIR"] = temp_dir + + # Create output dir if not exists + if not os.path.exists(par["output_dir"]): + os.makedirs(par["output_dir"]) + + # Run command + print("> " + ' '.join(cmd), flush=True) + _ = subprocess.run( + cmd, + cwd=os.path.dirname(config_file), + env=env, + check=True + ) + + # Copy outputs + copy_outputs(par, config) + +if __name__ == "__main__": + with tempfile.TemporaryDirectory(prefix="cwl-bd_rhapsody-", dir=meta["temp_dir"]) as temp_dir: + main(par, meta, temp_dir) +VIASHMAIN +python -B "\$tempscript" & +wait "\$!" + +VIASHEOF + + +if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then + # strip viash automount from file paths + + if [ ! -z "$VIASH_PAR_READS" ]; then + unset VIASH_TEST_READS + IFS=';' + for var in $VIASH_PAR_READS; do + unset IFS + if [ -z "$VIASH_TEST_READS" ]; then + VIASH_TEST_READS="$(ViashDockerStripAutomount "$var")" + else + VIASH_TEST_READS="$VIASH_TEST_READS;""$(ViashDockerStripAutomount "$var")" + fi + done + VIASH_PAR_READS="$VIASH_TEST_READS" + fi + if [ ! -z "$VIASH_PAR_READS_ATAC" ]; then + unset VIASH_TEST_READS_ATAC + IFS=';' + for var in $VIASH_PAR_READS_ATAC; do + unset IFS + if [ -z "$VIASH_TEST_READS_ATAC" ]; then + VIASH_TEST_READS_ATAC="$(ViashDockerStripAutomount "$var")" + else + VIASH_TEST_READS_ATAC="$VIASH_TEST_READS_ATAC;""$(ViashDockerStripAutomount "$var")" + fi + done + VIASH_PAR_READS_ATAC="$VIASH_TEST_READS_ATAC" + fi + if [ ! -z "$VIASH_PAR_REFERENCE_ARCHIVE" ]; then + VIASH_PAR_REFERENCE_ARCHIVE=$(ViashDockerStripAutomount "$VIASH_PAR_REFERENCE_ARCHIVE") + fi + if [ ! -z "$VIASH_PAR_TARGETED_REFERENCE" ]; then + unset VIASH_TEST_TARGETED_REFERENCE + IFS=';' + for var in $VIASH_PAR_TARGETED_REFERENCE; do + unset IFS + if [ -z "$VIASH_TEST_TARGETED_REFERENCE" ]; then + VIASH_TEST_TARGETED_REFERENCE="$(ViashDockerStripAutomount "$var")" + else + VIASH_TEST_TARGETED_REFERENCE="$VIASH_TEST_TARGETED_REFERENCE;""$(ViashDockerStripAutomount "$var")" + fi + done + VIASH_PAR_TARGETED_REFERENCE="$VIASH_TEST_TARGETED_REFERENCE" + fi + if [ ! -z "$VIASH_PAR_ABSEQ_REFERENCE" ]; then + unset VIASH_TEST_ABSEQ_REFERENCE + IFS=';' + for var in $VIASH_PAR_ABSEQ_REFERENCE; do + unset IFS + if [ -z "$VIASH_TEST_ABSEQ_REFERENCE" ]; then + VIASH_TEST_ABSEQ_REFERENCE="$(ViashDockerStripAutomount "$var")" + else + VIASH_TEST_ABSEQ_REFERENCE="$VIASH_TEST_ABSEQ_REFERENCE;""$(ViashDockerStripAutomount "$var")" + fi + done + VIASH_PAR_ABSEQ_REFERENCE="$VIASH_TEST_ABSEQ_REFERENCE" + fi + if [ ! -z "$VIASH_PAR_SUPPLEMENTAL_REFERENCE" ]; then + unset VIASH_TEST_SUPPLEMENTAL_REFERENCE + IFS=';' + for var in $VIASH_PAR_SUPPLEMENTAL_REFERENCE; do + unset IFS + if [ -z "$VIASH_TEST_SUPPLEMENTAL_REFERENCE" ]; then + VIASH_TEST_SUPPLEMENTAL_REFERENCE="$(ViashDockerStripAutomount "$var")" + else + VIASH_TEST_SUPPLEMENTAL_REFERENCE="$VIASH_TEST_SUPPLEMENTAL_REFERENCE;""$(ViashDockerStripAutomount "$var")" + fi + done + VIASH_PAR_SUPPLEMENTAL_REFERENCE="$VIASH_TEST_SUPPLEMENTAL_REFERENCE" + fi + if [ ! -z "$VIASH_PAR_OUTPUT_DIR" ]; then + VIASH_PAR_OUTPUT_DIR=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT_DIR") + fi + if [ ! -z "$VIASH_PAR_OUTPUT_SEURAT" ]; then + VIASH_PAR_OUTPUT_SEURAT=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT_SEURAT") + fi + if [ ! -z "$VIASH_PAR_OUTPUT_MUDATA" ]; then + VIASH_PAR_OUTPUT_MUDATA=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT_MUDATA") + fi + if [ ! -z "$VIASH_PAR_METRICS_SUMMARY" ]; then + VIASH_PAR_METRICS_SUMMARY=$(ViashDockerStripAutomount "$VIASH_PAR_METRICS_SUMMARY") + fi + if [ ! -z "$VIASH_PAR_PIPELINE_REPORT" ]; then + VIASH_PAR_PIPELINE_REPORT=$(ViashDockerStripAutomount "$VIASH_PAR_PIPELINE_REPORT") + fi + if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL" ]; then + VIASH_PAR_RSEC_MOLS_PER_CELL=$(ViashDockerStripAutomount "$VIASH_PAR_RSEC_MOLS_PER_CELL") + fi + if [ ! -z "$VIASH_PAR_DBEC_MOLS_PER_CELL" ]; then + VIASH_PAR_DBEC_MOLS_PER_CELL=$(ViashDockerStripAutomount "$VIASH_PAR_DBEC_MOLS_PER_CELL") + fi + if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ]; then + VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED=$(ViashDockerStripAutomount "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED") + fi + if [ ! -z "$VIASH_PAR_BAM" ]; then + VIASH_PAR_BAM=$(ViashDockerStripAutomount "$VIASH_PAR_BAM") + fi + if [ ! -z "$VIASH_PAR_BAM_INDEX" ]; then + VIASH_PAR_BAM_INDEX=$(ViashDockerStripAutomount "$VIASH_PAR_BAM_INDEX") + fi + if [ ! -z "$VIASH_PAR_BIOPRODUCT_STATS" ]; then + VIASH_PAR_BIOPRODUCT_STATS=$(ViashDockerStripAutomount "$VIASH_PAR_BIOPRODUCT_STATS") + fi + if [ ! -z "$VIASH_PAR_DIMRED_TSNE" ]; then + VIASH_PAR_DIMRED_TSNE=$(ViashDockerStripAutomount "$VIASH_PAR_DIMRED_TSNE") + fi + if [ ! -z "$VIASH_PAR_DIMRED_UMAP" ]; then + VIASH_PAR_DIMRED_UMAP=$(ViashDockerStripAutomount "$VIASH_PAR_DIMRED_UMAP") + fi + if [ ! -z "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ]; then + VIASH_PAR_IMMUNE_CELL_CLASSIFICATION=$(ViashDockerStripAutomount "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION") + fi + if [ ! -z "$VIASH_PAR_SAMPLE_TAG_METRICS" ]; then + VIASH_PAR_SAMPLE_TAG_METRICS=$(ViashDockerStripAutomount "$VIASH_PAR_SAMPLE_TAG_METRICS") + fi + if [ ! -z "$VIASH_PAR_SAMPLE_TAG_CALLS" ]; then + VIASH_PAR_SAMPLE_TAG_CALLS=$(ViashDockerStripAutomount "$VIASH_PAR_SAMPLE_TAG_CALLS") + fi + if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS" ]; then + VIASH_PAR_SAMPLE_TAG_COUNTS=$(ViashDockerStripAutomount "$VIASH_PAR_SAMPLE_TAG_COUNTS") + fi + if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ]; then + VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED=$(ViashDockerStripAutomount "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED") + fi + if [ ! -z "$VIASH_PAR_VDJ_METRICS" ]; then + VIASH_PAR_VDJ_METRICS=$(ViashDockerStripAutomount "$VIASH_PAR_VDJ_METRICS") + fi + if [ ! -z "$VIASH_PAR_VDJ_PER_CELL" ]; then + VIASH_PAR_VDJ_PER_CELL=$(ViashDockerStripAutomount "$VIASH_PAR_VDJ_PER_CELL") + fi + if [ ! -z "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ]; then + VIASH_PAR_VDJ_PER_CELL_UNCORRECTED=$(ViashDockerStripAutomount "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED") + fi + if [ ! -z "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ]; then + VIASH_PAR_VDJ_DOMINANT_CONTIGS=$(ViashDockerStripAutomount "$VIASH_PAR_VDJ_DOMINANT_CONTIGS") + fi + if [ ! -z "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ]; then + VIASH_PAR_VDJ_UNFILTERED_CONTIGS=$(ViashDockerStripAutomount "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS") + fi + if [ ! -z "$VIASH_PAR_ATAC_METRICS" ]; then + VIASH_PAR_ATAC_METRICS=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_METRICS") + fi + if [ ! -z "$VIASH_PAR_ATAC_METRICS_JSON" ]; then + VIASH_PAR_ATAC_METRICS_JSON=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_METRICS_JSON") + fi + if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS" ]; then + VIASH_PAR_ATAC_FRAGMENTS=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_FRAGMENTS") + fi + if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ]; then + VIASH_PAR_ATAC_FRAGMENTS_INDEX=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_FRAGMENTS_INDEX") + fi + if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ]; then + VIASH_PAR_ATAC_TRANSPOSASE_SITES=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_TRANSPOSASE_SITES") + fi + if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ]; then + VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX") + fi + if [ ! -z "$VIASH_PAR_ATAC_PEAKS" ]; then + VIASH_PAR_ATAC_PEAKS=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_PEAKS") + fi + if [ ! -z "$VIASH_PAR_ATAC_PEAKS_INDEX" ]; then + VIASH_PAR_ATAC_PEAKS_INDEX=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_PEAKS_INDEX") + fi + if [ ! -z "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ]; then + VIASH_PAR_ATAC_PEAK_ANNOTATION=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_PEAK_ANNOTATION") + fi + if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK" ]; then + VIASH_PAR_ATAC_CELL_BY_PEAK=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_CELL_BY_PEAK") + fi + if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ]; then + VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED") + fi + if [ ! -z "$VIASH_PAR_ATAC_BAM" ]; then + VIASH_PAR_ATAC_BAM=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_BAM") + fi + if [ ! -z "$VIASH_PAR_ATAC_BAM_INDEX" ]; then + VIASH_PAR_ATAC_BAM_INDEX=$(ViashDockerStripAutomount "$VIASH_PAR_ATAC_BAM_INDEX") + fi + if [ ! -z "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ]; then + VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL=$(ViashDockerStripAutomount "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL") + fi + if [ ! -z "$VIASH_PAR_PREDEFINED_ATAC_PEAKS" ]; then + VIASH_PAR_PREDEFINED_ATAC_PEAKS=$(ViashDockerStripAutomount "$VIASH_PAR_PREDEFINED_ATAC_PEAKS") + 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_DIR" ] && [ ! -e "$VIASH_PAR_OUTPUT_DIR" ]; then + ViashError "Output file '$VIASH_PAR_OUTPUT_DIR' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_OUTPUT_SEURAT" ] && [ ! -e "$VIASH_PAR_OUTPUT_SEURAT" ]; then + ViashError "Output file '$VIASH_PAR_OUTPUT_SEURAT' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_OUTPUT_MUDATA" ] && [ ! -e "$VIASH_PAR_OUTPUT_MUDATA" ]; then + ViashError "Output file '$VIASH_PAR_OUTPUT_MUDATA' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_METRICS_SUMMARY" ] && [ ! -e "$VIASH_PAR_METRICS_SUMMARY" ]; then + ViashError "Output file '$VIASH_PAR_METRICS_SUMMARY' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_PIPELINE_REPORT" ] && [ ! -e "$VIASH_PAR_PIPELINE_REPORT" ]; then + ViashError "Output file '$VIASH_PAR_PIPELINE_REPORT' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL" ] && [ ! -e "$VIASH_PAR_RSEC_MOLS_PER_CELL" ]; then + ViashError "Output file '$VIASH_PAR_RSEC_MOLS_PER_CELL' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_DBEC_MOLS_PER_CELL" ] && [ ! -e "$VIASH_PAR_DBEC_MOLS_PER_CELL" ]; then + ViashError "Output file '$VIASH_PAR_DBEC_MOLS_PER_CELL' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ] && [ ! -e "$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED" ]; then + ViashError "Output file '$VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_BAM" ] && [ ! -e "$VIASH_PAR_BAM" ]; then + ViashError "Output file '$VIASH_PAR_BAM' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_BAM_INDEX" ] && [ ! -e "$VIASH_PAR_BAM_INDEX" ]; then + ViashError "Output file '$VIASH_PAR_BAM_INDEX' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_BIOPRODUCT_STATS" ] && [ ! -e "$VIASH_PAR_BIOPRODUCT_STATS" ]; then + ViashError "Output file '$VIASH_PAR_BIOPRODUCT_STATS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_DIMRED_TSNE" ] && [ ! -e "$VIASH_PAR_DIMRED_TSNE" ]; then + ViashError "Output file '$VIASH_PAR_DIMRED_TSNE' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_DIMRED_UMAP" ] && [ ! -e "$VIASH_PAR_DIMRED_UMAP" ]; then + ViashError "Output file '$VIASH_PAR_DIMRED_UMAP' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ] && [ ! -e "$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION" ]; then + ViashError "Output file '$VIASH_PAR_IMMUNE_CELL_CLASSIFICATION' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_METRICS" ] && [ ! -e "$VIASH_PAR_SAMPLE_TAG_METRICS" ]; then + ViashError "Output file '$VIASH_PAR_SAMPLE_TAG_METRICS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_CALLS" ] && [ ! -e "$VIASH_PAR_SAMPLE_TAG_CALLS" ]; then + ViashError "Output file '$VIASH_PAR_SAMPLE_TAG_CALLS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS" ] && ! compgen -G "$VIASH_PAR_SAMPLE_TAG_COUNTS" > /dev/null; then + ViashError "Output file '$VIASH_PAR_SAMPLE_TAG_COUNTS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ] && [ ! -e "$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED" ]; then + ViashError "Output file '$VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_VDJ_METRICS" ] && [ ! -e "$VIASH_PAR_VDJ_METRICS" ]; then + ViashError "Output file '$VIASH_PAR_VDJ_METRICS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_VDJ_PER_CELL" ] && [ ! -e "$VIASH_PAR_VDJ_PER_CELL" ]; then + ViashError "Output file '$VIASH_PAR_VDJ_PER_CELL' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ] && [ ! -e "$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED" ]; then + ViashError "Output file '$VIASH_PAR_VDJ_PER_CELL_UNCORRECTED' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ] && [ ! -e "$VIASH_PAR_VDJ_DOMINANT_CONTIGS" ]; then + ViashError "Output file '$VIASH_PAR_VDJ_DOMINANT_CONTIGS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ] && [ ! -e "$VIASH_PAR_VDJ_UNFILTERED_CONTIGS" ]; then + ViashError "Output file '$VIASH_PAR_VDJ_UNFILTERED_CONTIGS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_METRICS" ] && [ ! -e "$VIASH_PAR_ATAC_METRICS" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_METRICS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_METRICS_JSON" ] && [ ! -e "$VIASH_PAR_ATAC_METRICS_JSON" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_METRICS_JSON' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS" ] && [ ! -e "$VIASH_PAR_ATAC_FRAGMENTS" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_FRAGMENTS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ] && [ ! -e "$VIASH_PAR_ATAC_FRAGMENTS_INDEX" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_FRAGMENTS_INDEX' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ] && [ ! -e "$VIASH_PAR_ATAC_TRANSPOSASE_SITES" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_TRANSPOSASE_SITES' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ] && [ ! -e "$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAKS" ] && [ ! -e "$VIASH_PAR_ATAC_PEAKS" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_PEAKS' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAKS_INDEX" ] && [ ! -e "$VIASH_PAR_ATAC_PEAKS_INDEX" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_PEAKS_INDEX' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ] && [ ! -e "$VIASH_PAR_ATAC_PEAK_ANNOTATION" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_PEAK_ANNOTATION' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK" ] && [ ! -e "$VIASH_PAR_ATAC_CELL_BY_PEAK" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_CELL_BY_PEAK' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ] && [ ! -e "$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_BAM" ] && [ ! -e "$VIASH_PAR_ATAC_BAM" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_BAM' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_ATAC_BAM_INDEX" ] && [ ! -e "$VIASH_PAR_ATAC_BAM_INDEX" ]; then + ViashError "Output file '$VIASH_PAR_ATAC_BAM_INDEX' does not exist." + exit 1 +fi +if [ ! -z "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ] && [ ! -e "$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL" ]; then + ViashError "Output file '$VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL' does not exist." + exit 1 +fi + + +exit 0 diff --git a/target/executable/bedtools/bedtools_bamtofastq/.config.vsh.yaml b/target/executable/bedtools/bedtools_bamtofastq/.config.vsh.yaml index 37f43193..03a966eb 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 83e0b309..c150df4d 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-09-17T06:47:20Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:43Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 e297c91b..3397f3c0 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 0f62ec1e..3cd0527d 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-09-17T06:47:19Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:42Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 745fce4c..2fcdfbad 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 c4e5ba47..ef7f4c43 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-09-17T06:47:21Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:44Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 7d418563..df39d7da 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 791f6225..41927394 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-09-17T06:47:19Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:41Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 4f6f78c5..54a1f9b9 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 cdde421e..9c2ab0ce 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-09-17T06:47:19Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:42Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 b99d48f4..a2ce22e9 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 54ce4db0..dbb79cc2 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-09-17T06:47:21Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:43Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 baf0f27e..97ecc514 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 c1ec8795..c5b26a95 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-09-17T06:47:20Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:42Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 4e021633..41703fbc 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 62c4f0c6..57f877bd 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-09-17T06:47:20Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:43Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 a2e1171e..99eba885 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 5649cb66..62237de2 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-09-17T06:47:18Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:41Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 46e1f3ed..eb6a1d58 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 f869df66..a65288fb 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-09-17T06:47:21Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:44Z" LABEL org.opencontainers.image.source="https://github.com/arq5x/bedtools2" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 5cf40a6f..36239b44 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 3aa7e0e0..6223655a 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-09-17T06:47:31Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:54Z" LABEL org.opencontainers.image.source="https://gitlab.com/ezlab/busco" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 85ad7345..b9eecb11 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 03f25b41..64443ff5 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-09-17T06:47:32Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:54Z" LABEL org.opencontainers.image.source="https://gitlab.com/ezlab/busco" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 a6da3cec..c2462403 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 0eb575ef..f1f5aa76 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-09-17T06:47:32Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:55Z" LABEL org.opencontainers.image.source="https://gitlab.com/ezlab/busco" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/cutadapt/.config.vsh.yaml b/target/executable/cutadapt/.config.vsh.yaml index 3225281e..f586dfbd 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/cutadapt/cutadapt b/target/executable/cutadapt/cutadapt index 74007213..83a22c81 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-09-17T06:47:37Z" +LABEL org.opencontainers.image.created="2024-09-17T09:53:00Z" LABEL org.opencontainers.image.source="https://github.com/marcelm/cutadapt" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/falco/.config.vsh.yaml b/target/executable/falco/.config.vsh.yaml index 019b624b..d38d67df 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/falco/falco b/target/executable/falco/falco index c4f27641..7ec74f22 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-09-17T06:47:38Z" +LABEL org.opencontainers.image.created="2024-09-17T09:53:01Z" LABEL org.opencontainers.image.source="https://github.com/smithlabcode/falco" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/fastp/.config.vsh.yaml b/target/executable/fastp/.config.vsh.yaml index 6d6c671b..73c1dc33 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/fastp/fastp b/target/executable/fastp/fastp index 27d4d3aa..ba46f64f 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-09-17T06:47:35Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:58Z" LABEL org.opencontainers.image.source="https://github.com/OpenGene/fastp" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/fastqc/.config.vsh.yaml b/target/executable/fastqc/.config.vsh.yaml index 182639d5..d3e247dc 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/fastqc/fastqc b/target/executable/fastqc/fastqc index 8f59a9d2..f37e35a5 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-09-17T06:47:26Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:49Z" LABEL org.opencontainers.image.source="https://github.com/s-andrews/FastQC" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/featurecounts/.config.vsh.yaml b/target/executable/featurecounts/.config.vsh.yaml index 6626975a..87edd49a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/featurecounts/featurecounts b/target/executable/featurecounts/featurecounts index 70167c7a..c7deda0d 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-09-17T06:47:30Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:52Z" LABEL org.opencontainers.image.source="https://github.com/ShiLab-Bioinformatics/subread" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 f75b71cb..2b42094e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/fq_subsample/fq_subsample b/target/executable/fq_subsample/fq_subsample index 05440405..a434d307 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-09-17T06:47:25Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:48Z" LABEL org.opencontainers.image.source="https://github.com/stjude-rust-labs/fq" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/gffread/.config.vsh.yaml b/target/executable/gffread/.config.vsh.yaml index 6be1a51c..8194a871 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/gffread/gffread b/target/executable/gffread/gffread index 8d059e6c..b4fbc1bb 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-09-17T06:47:18Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:40Z" LABEL org.opencontainers.image.source="https://github.com/gpertea/gffread" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 be771c60..9eb2ffd1 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 30c92acf..0260fd6c 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-09-17T06:47:33Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:55Z" LABEL org.opencontainers.image.source="https://github.com/pachterlab/kallisto" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 776bb31f..9929fff5 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 e7fb4203..3a0a4eb7 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-09-17T06:47:29Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:52Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 ed66ce83..aba5825c 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 1d88cb64..74be3698 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-09-17T06:47:29Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:52Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/multiqc/.config.vsh.yaml b/target/executable/multiqc/.config.vsh.yaml index dd9250d7..14e2d2d7 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/multiqc/multiqc b/target/executable/multiqc/multiqc index 340b5ac7..f6242976 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-09-17T06:47:38Z" +LABEL org.opencontainers.image.created="2024-09-17T09:53:01Z" LABEL org.opencontainers.image.source="https://github.com/viash-hub/biobox" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/pear/.config.vsh.yaml b/target/executable/pear/.config.vsh.yaml index 19e61bf9..84340d15 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/pear/pear b/target/executable/pear/pear index d31afe7e..7124dcb3 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-09-17T06:47:21Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:44Z" LABEL org.opencontainers.image.source="https://github.com/tseemann/PEAR" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 e2cbf195..c71911c3 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 b3f1c73d..cf053ddf 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-09-17T06:47:25Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:48Z" LABEL org.opencontainers.image.source="https://bitbucket.org/kokonech/qualimap/commits/branch/master" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 910af94c..3fe477a6 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 7c03fd4d..fcae0205 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-09-17T06:47:32Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:55Z" LABEL org.opencontainers.image.source="https://github.com/deweylab/RSEM" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 646d0fe7..4381c916 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 8f97c06e..5feeef81 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-09-17T06:47:36Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:59Z" LABEL org.opencontainers.image.source="https://github.com/COMBINE-lab/salmon" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 f1e5ea2d..315c5050 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 30f106be..709104a7 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-09-17T06:47:37Z" +LABEL org.opencontainers.image.created="2024-09-17T09:53:00Z" LABEL org.opencontainers.image.source="https://github.com/COMBINE-lab/salmon" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 08c9f60c..de54f4ff 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 5b89120e..af59697f 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-09-17T06:47:24Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:47Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 c24ec78b..4775bf9f 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 fb490c55..79de08c4 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-09-17T06:47:23Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:46Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 58040685..29dff720 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 07ee8f24..6f46d6fb 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-09-17T06:47:24Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:47Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 700adfa4..22b89f32 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 34eaa7bd..cd868b51 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-09-17T06:47:23Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:46Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 3a6e8f0f..4d95ec15 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 fa2b3ae6..0142826d 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-09-17T06:47:23Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:46Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 f53bc802..7c31642a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 aca60e6c..508beb3f 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-09-17T06:47:22Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:45Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 99e770f5..724d9dcd 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 304a3830..73ef0822 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-09-17T06:47:22Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:45Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 2b83a475..5b26eca6 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 9c09b990..05f7adb1 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-09-17T06:47:24Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:47Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 0b69113b..2592ae0e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 3194d278..ba74e5f2 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-09-17T06:47:25Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:48Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 a0be80bb..987a4d6b 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 81f8b08e..b4f2c358 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-09-17T06:47:22Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:45Z" LABEL org.opencontainers.image.source="https://github.com/samtools/samtools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 7d6ca8e5..5a92e809 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 ff8ce3cd..adb62112 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-09-17T06:47:39Z" +LABEL org.opencontainers.image.created="2024-09-17T09:53:02Z" LABEL org.opencontainers.image.source="https://github.com/lh3/seqtk/tree/v1.4" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 701172fe..17ed8e0f 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 3a889e08..be30cc4d 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-09-17T06:47:39Z" +LABEL org.opencontainers.image.created="2024-09-17T09:53:02Z" LABEL org.opencontainers.image.source="https://github.com/lh3/seqtk/tree/v1.4" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" LABEL org.opencontainers.image.version="main" VIASHDOCKER diff --git a/target/executable/sortmerna/.config.vsh.yaml b/target/executable/sortmerna/.config.vsh.yaml index caa419ba..fdee775f 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/executable/sortmerna/sortmerna b/target/executable/sortmerna/sortmerna index 99fe42e3..89baeac8 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-09-17T06:47:36Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:58Z" LABEL org.opencontainers.image.source="https://github.com/sortmerna/sortmerna" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 bd197b34..61cf6b9a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 a1cf95fe..7a7943a7 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-09-17T06:47:30Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:53Z" LABEL org.opencontainers.image.source="https://github.com/alexdobin/STAR" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 4d2b5c9b..51cd2da7 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 5b86b61e..6eed10a7 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-09-17T06:47:30Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:53Z" LABEL org.opencontainers.image.source="https://github.com/alexdobin/STAR" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 202a2102..51a8c3bf 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 ffa5083d..7ea2edf1 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-09-17T06:47:27Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:50Z" LABEL org.opencontainers.image.source="https://github.com/CGATOxford/UMI-tools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 48fb5ec8..412b936c 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 7d0b7bf1..197f81d1 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-09-17T06:47:26Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:49Z" LABEL org.opencontainers.image.source="https://github.com/CGATOxford/UMI-tools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 c30301b5..af9900d3 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 4c192523..f580cef1 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-09-17T06:47:26Z" +LABEL org.opencontainers.image.created="2024-09-17T09:52:49Z" LABEL org.opencontainers.image.source="https://github.com/CGATOxford/UMI-tools" -LABEL org.opencontainers.image.revision="38f635ad57ef05550bba3a0864c81627f84f5ad2" +LABEL org.opencontainers.image.revision="7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" 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 40da9ea1..94ff04b3 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 459346ea..fdd069c9 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 a2b8f2c6..fe85f58a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 cc37300f..2284cede 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 481f934b..d2851d2b 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 1ab4a671..cfedb6ce 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 1db9dc24..379c6048 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 78a437d2..aa5c9414 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 35a824ed..3b8d0b27 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 a3133c5d..f05ba36b 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 a0c0e821..8d84a294 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 872e6724..53a02d3d 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/arriba/.config.vsh.yaml b/target/nextflow/arriba/.config.vsh.yaml index d7e8ed9d..a986cbe8 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/arriba/main.nf b/target/nextflow/arriba/main.nf index 23df82db..28faf6cc 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 7ef6a864..4c0c02e8 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 34b384a7..25c75dd0 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 91d7c2c1..2badff0d 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 81d18bbc..b2593745 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 313a0251..48eb6c26 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 c95255fe..f4a84b89 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 1b7c2540..867b8a32 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 f1366530..7d352186 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 0185fbee..cb2c93c5 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 b6864b14..e20363b1 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/bcl_convert/.config.vsh.yaml b/target/nextflow/bcl_convert/.config.vsh.yaml index 124c2b6b..25bba776 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/bcl_convert/main.nf b/target/nextflow/bcl_convert/main.nf index 0a19efa1..c6986226 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 3c728c1c..7ad958d7 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 @@ -146,8 +146,6 @@ resources: - type: "python_script" path: "script.py" is_executable: true -- type: "file" - path: "make_rhap_reference_2.2.1_nodocker.cwl" description: "The Reference Files Generator creates an archive containing Genome Index\n\ and Transcriptome annotation files needed for the BD Rhapsody Sequencing\nAnalysis\ \ Pipeline. The app takes as input one or more FASTA and GTF files\nand produces\ @@ -249,6 +247,7 @@ engines: - type: "apt" packages: - "procps" + - "git" interactive: false - type: "python" user: false @@ -258,7 +257,12 @@ engines: upgrade: true - type: "docker" run: - - "echo \"bdgenomics/rhapsody: 2.2.1\" > /var/software_versions.txt\n" + - "mkdir /var/bd_rhapsody_cwl && \\\n cd /var/bd_rhapsody_cwl && \\\n git clone\ + \ https://bitbucket.org/CRSwDev/cwl.git . && \\\n git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de\n" + - type: "docker" + run: + - "VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1)" + - "echo \"bdgenomics/rhapsody: \\\"$VERSION\\\"\" > /var/software_versions.txt" entrypoint: [] cmd: null - type: "native" @@ -270,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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 5875582c..be2be544 100644 --- a/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/main.nf +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/main.nf @@ -2989,10 +2989,6 @@ meta = [ "type" : "python_script", "path" : "script.py", "is_executable" : true - }, - { - "type" : "file", - "path" : "make_rhap_reference_2.2.1_nodocker.cwl" } ], "description" : "The Reference Files Generator creates an archive containing Genome Index\nand Transcriptome annotation files needed for the BD Rhapsody Sequencing\nAnalysis Pipeline. The app takes as input one or more FASTA and GTF files\nand produces a compressed archive in the form of a tar.gz file. The \narchive contains:\n\n- STAR index\n- Filtered GTF file\n", @@ -3004,7 +3000,7 @@ meta = [ }, { "type" : "file", - "path" : "test_data" + "path" : "../test_data" } ], "status" : "enabled", @@ -3110,7 +3106,8 @@ meta = [ { "type" : "apt", "packages" : [ - "procps" + "procps", + "git" ], "interactive" : false }, @@ -3126,7 +3123,14 @@ meta = [ { "type" : "docker", "run" : [ - "echo \\"bdgenomics/rhapsody: 2.2.1\\" > /var/software_versions.txt\n" + "mkdir /var/bd_rhapsody_cwl && \\\\\n cd /var/bd_rhapsody_cwl && \\\\\n git clone https://bitbucket.org/CRSwDev/cwl.git . && \\\\\n git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de\n" + ] + }, + { + "type" : "docker", + "run" : [ + "VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1)", + "echo \\"bdgenomics/rhapsody: \\\\\\"$VERSION\\\\\\"\\" > /var/software_versions.txt" ] } ] @@ -3142,9 +3146,9 @@ meta = [ "engine" : "docker|native", "output" : "target/nextflow/bd_rhapsody/bd_rhapsody_make_reference", "viash_version" : "0.9.0", - "git_commit" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", @@ -3286,21 +3290,21 @@ def generate_config(par: dict[str, Any], meta, config) -> str: for config_key, arg_type, par_value in config_key_value_pairs: if arg_type == "file": - str = strip_margin(f"""\\\\ + content = strip_margin(f"""\\\\ {config_key}: """) if isinstance(par_value, list): for file in par_value: - str += strip_margin(f"""\\\\ + content += strip_margin(f"""\\\\ - class: File location: "{file}" """) else: - str += strip_margin(f"""\\\\ + content += strip_margin(f"""\\\\ class: File location: "{par_value}" """) - content_list.append(str) + content_list.append(content) else: content_list.append(strip_margin(f"""\\\\ {config_key}: {par_value} @@ -3311,9 +3315,9 @@ def generate_config(par: dict[str, Any], meta, config) -> str: def get_cwl_file(meta: dict[str, Any]) -> str: # create cwl file (if need be) - cwl_file=os.path.join(meta["resources_dir"], "make_rhap_reference_2.2.1_nodocker.cwl") + cwl_file="/var/bd_rhapsody_cwl/v2.2.1/Extra_Utilities/make_rhap_reference_2.2.1.cwl" - return cwl_file + return os.path.abspath(cwl_file) def main(par: dict[str, Any], meta: dict[str, Any]): config = read_config(meta["config"]) diff --git a/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl b/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl deleted file mode 100644 index fead2c02..00000000 --- a/target/nextflow/bd_rhapsody/bd_rhapsody_make_reference/make_rhap_reference_2.2.1_nodocker.cwl +++ /dev/null @@ -1,115 +0,0 @@ -requirements: - InlineJavascriptRequirement: {} -class: CommandLineTool -label: Reference Files Generator for BD Rhapsodyâ„¢ Sequencing Analysis Pipeline -cwlVersion: v1.2 -doc: >- - The Reference Files Generator creates an archive containing Genome Index and Transcriptome annotation files needed for the BD Rhapsodyâ„¢ Sequencing Analysis Pipeline. The app takes as input one or more FASTA and GTF files and produces a compressed archive in the form of a tar.gz file. The archive contains:\n - STAR index\n - Filtered GTF file - - -baseCommand: run_reference_generator.sh -inputs: - Genome_fasta: - type: File[] - label: Reference Genome - doc: |- - Reference genome file in FASTA format. The BD Rhapsodyâ„¢ Sequencing Analysis Pipeline uses GRCh38 for Human and GRCm39 for Mouse. - inputBinding: - prefix: --reference-genome - shellQuote: false - Gtf: - type: File[] - label: Transcript Annotations - doc: |- - Transcript annotation files in GTF format. The BD Rhapsodyâ„¢ Sequencing Analysis Pipeline uses Gencode v42 for Human and M31 for Mouse. - inputBinding: - prefix: --gtf - shellQuote: false - Extra_sequences: - type: File[]? - label: Extra Sequences - doc: |- - Additional sequences in FASTA format to use when building the STAR index. (E.g. phiX genome) - inputBinding: - prefix: --extra-sequences - shellQuote: false - Mitochondrial_Contigs: - type: string[]? - default: ["chrM", "chrMT", "M", "MT"] - label: Mitochondrial Contig Names - doc: |- - Names of the Mitochondrial contigs in the provided Reference Genome. Fragments originating from contigs other than these are identified as 'nuclear fragments' in the ATACseq analysis pipeline. - inputBinding: - prefix: --mitochondrial-contigs - shellQuote: false - Filtering_off: - type: boolean? - label: Turn off filtering - doc: |- - By default the input Transcript Annotation files are filtered based on the gene_type/gene_biotype attribute. Only features having the following attribute values are are kept: - - protein_coding - - lncRNA (lincRNA and antisense for Gencode < v31/M22/Ensembl97) - - IG_LV_gene - - IG_V_gene - - IG_V_pseudogene - - IG_D_gene - - IG_J_gene - - IG_J_pseudogene - - IG_C_gene - - IG_C_pseudogene - - TR_V_gene - - TR_V_pseudogene - - TR_D_gene - - TR_J_gene - - TR_J_pseudogene - - TR_C_gene - If you have already pre-filtered the input Annotation files and/or wish to turn-off the filtering, please set this option to True. - inputBinding: - prefix: --filtering-off - shellQuote: false - WTA_Only: - type: boolean? - label: WTA only index - doc: Build a WTA only index, otherwise builds a WTA + ATAC index. - inputBinding: - prefix: --wta-only-index - shellQuote: false - Archive_prefix: - type: string? - label: Archive Prefix - doc: |- - A prefix for naming the compressed archive file containing the Reference genome index and annotation files. The default value is constructed based on the input Reference files. - inputBinding: - prefix: --archive-prefix - shellQuote: false - Extra_STAR_params: - type: string? - label: Extra STAR Params - doc: |- - Additional parameters to pass to STAR when building the genome index. Specify exactly like how you would on the command line. - Example: - --limitGenomeGenerateRAM 48000 --genomeSAindexNbases 11 - inputBinding: - prefix: --extra-star-params - shellQuote: true - - Maximum_threads: - type: int? - label: Maximum Number of Threads - doc: |- - The maximum number of threads to use in the pipeline. By default, all available cores are used. - inputBinding: - prefix: --maximum-threads - shellQuote: false - -outputs: - - Archive: - type: File - doc: |- - A Compressed archive containing the Reference Genome Index and annotation GTF files. This archive is meant to be used as an input in the BD Rhapsodyâ„¢ Sequencing Analysis Pipeline. - id: Reference_Archive - label: Reference Files Archive - outputBinding: - glob: '*.tar.gz' - 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 new file mode 100644 index 00000000..3bb5fe53 --- /dev/null +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/.config.vsh.yaml @@ -0,0 +1,1142 @@ +name: "bd_rhapsody_sequence_analysis" +namespace: "bd_rhapsody" +version: "main" +authors: +- name: "Robrecht Cannoodt" + roles: + - "author" + - "maintainer" + info: + links: + email: "robrecht@data-intuitive.com" + github: "rcannood" + orcid: "0000-0003-3641-729X" + linkedin: "robrechtcannoodt" + organizations: + - name: "Data Intuitive" + href: "https://www.data-intuitive.com" + role: "Data Science Engineer" + - name: "Open Problems" + href: "https://openproblems.bio" + role: "Core Member" +- name: "Weiwei Schultz" + roles: + - "contributor" + info: + organizations: + - name: "Janssen R&D US" + role: "Associate Director Data Sciences" +argument_groups: +- name: "Inputs" + arguments: + - type: "file" + name: "--reads" + description: "Reads (optional) - Path to your FASTQ.GZ formatted read files from\ + \ libraries that may include:\n\n- WTA mRNA\n- Targeted mRNA\n- AbSeq\n- Sample\ + \ Multiplexing\n- VDJ\n\nYou may specify as many R1/R2 read pairs as you want.\n" + info: + config_key: "Reads" + example: + - "WTALibrary_S1_L001_R1_001.fastq.gz" + - "WTALibrary_S1_L001_R2_001.fastq.gz" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--reads_atac" + description: "Path to your FASTQ.GZ formatted read files from ATAC-Seq libraries.\n\ + You may specify as many R1/R2/I2 files as you want.\n" + info: + config_key: "Reads_ATAC" + example: + - "ATACLibrary_S2_L001_R1_001.fastq.gz" + - "ATACLibrary_S2_L001_R2_001.fastq.gz" + - "ATACLibrary_S2_L001_I2_001.fastq.gz" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" +- name: "References" + description: "Assay type will be inferred from the provided reference(s).\nDo not\ + \ provide both reference_archive and targeted_reference at the same time.\n\n\ + Valid reference input combinations:\n - reference_archive: WTA only\n - reference_archive\ + \ & abseq_reference: WTA + AbSeq\n - reference_archive & supplemental_reference:\ + \ WTA + extra transgenes\n - reference_archive & abseq_reference & supplemental_reference:\ + \ WTA + AbSeq + extra transgenes\n - reference_archive: WTA + ATAC or ATAC only\n\ + \ - reference_archive & supplemental_reference: WTA + ATAC + extra transgenes\n\ + \ - targeted_reference: Targeted only\n - targeted_reference & abseq_reference:\ + \ Targeted + AbSeq\n - abseq_reference: AbSeq only\n\nThe reference_archive can\ + \ be generated with the bd_rhapsody_make_reference component.\nAlternatively,\ + \ BD also provides standard references which can be downloaded from these locations:\n\ + \n - Human: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Human_WTA_2023-02.tar.gz\n\ + \ - Mouse: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Mouse_WTA_2023-02.tar.gz\n" + arguments: + - type: "file" + name: "--reference_archive" + description: "Path to Rhapsody WTA Reference in the tar.gz format.\n\nStructure\ + \ of the reference archive:\n\n- `BD_Rhapsody_Reference_Files/`: top level folder\n\ + \ - `star_index/`: sub-folder containing STAR index, that is files created\ + \ with `STAR --runMode genomeGenerate`\n - GTF for gene-transcript-annotation\ + \ e.g. \"gencode.v43.primary_assembly.annotation.gtf\"\n" + info: + config_key: "Reference_Archive" + example: + - "RhapRef_Human_WTA_2023-02.tar.gz" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--targeted_reference" + description: "Path to the targeted reference file in FASTA format.\n" + info: + config_key: "Targeted_Reference" + example: + - "BD_Rhapsody_Immune_Response_Panel_Hs.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--abseq_reference" + description: "Path to the AbSeq reference file in FASTA format. Only needed if\ + \ BD AbSeq Ab-Oligos are used." + info: + config_key: "AbSeq_Reference" + example: + - "AbSeq_reference.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--supplemental_reference" + alternatives: + - "-s" + description: "Path to the supplemental reference file in FASTA format. Only needed\ + \ if there are additional transgene sequences to be aligned against in a WTA\ + \ assay experiment." + info: + config_key: "Supplemental_Reference" + example: + - "supplemental_reference.fasta" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: true + multiple_sep: ";" +- name: "Outputs" + description: "Outputs for all pipeline runs" + arguments: + - type: "file" + name: "--output_dir" + alternatives: + - "-o" + description: "The unprocessed output directory containing all the outputs from\ + \ the pipeline." + info: null + example: + - "output_dir" + must_exist: true + create_parent: true + required: true + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--output_seurat" + description: "Single-cell analysis tool inputs. Seurat (.rds) input file containing\ + \ RSEC molecules data table and all cell annotation metadata." + info: + template: "[sample_name]_Seurat.rds" + example: + - "output_seurat.rds" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--output_mudata" + description: "Single-cell analysis tool inputs. Scanpy / Muon input file containing\ + \ RSEC molecules data table and all cell annotation metadata." + info: + template: "[sample_name].h5mu" + example: + - "output_mudata.h5mu" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--metrics_summary" + description: "Metrics Summary. Report containing sequencing, molecules, and cell\ + \ metrics." + info: + template: "[sample_name]_Metrics_Summary.csv" + example: + - "metrics_summary.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--pipeline_report" + description: "Pipeline Report. Summary report containing the results from the\ + \ sequencing analysis pipeline run." + info: + template: "[sample_name]_Pipeline_Report.html" + example: + - "pipeline_report.html" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--rsec_mols_per_cell" + description: "Molecules per bioproduct per cell bassed on RSEC" + info: + template: "[sample_name]_RSEC_MolsPerCell_MEX.zip" + example: + - "RSEC_MolsPerCell_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--dbec_mols_per_cell" + description: "Molecules per bioproduct per cell bassed on DBEC. DBEC data table\ + \ is only output if the experiment includes targeted mRNA or AbSeq bioproducts." + info: + template: "[sample_name]_DBEC_MolsPerCell_MEX.zip" + example: + - "DBEC_MolsPerCell_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--rsec_mols_per_cell_unfiltered" + description: "Unfiltered tables containing all cell labels with ≥10 reads." + info: + template: "[sample_name]_RSEC_MolsPerCell_Unfiltered_MEX.zip" + example: + - "RSEC_MolsPerCell_Unfiltered_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--bam" + description: "Alignment file of R2 with associated R1 annotations for Bioproduct." + info: + template: "[sample_name]_Bioproduct.bam" + example: + - "BioProduct.bam" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--bam_index" + description: "Index file for the alignment file." + info: + template: "[sample_name]_Bioproduct.bam.bai" + example: + - "BioProduct.bam.bai" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--bioproduct_stats" + description: "Bioproduct Stats. Metrics from RSEC and DBEC Unique Molecular Identifier\ + \ adjustment algorithms on a per-bioproduct basis." + info: + template: "[sample_name]_Bioproduct_Stats.csv" + example: + - "Bioproduct_Stats.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--dimred_tsne" + description: "t-SNE dimensionality reduction coordinates per cell index" + info: + template: "[sample_name]_(assay)_tSNE_coordinates.csv" + example: + - "tSNE_coordinates.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--dimred_umap" + description: "UMAP dimensionality reduction coordinates per cell index" + info: + template: "[sample_name]_(assay)_UMAP_coordinates.csv" + example: + - "UMAP_coordinates.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--immune_cell_classification" + description: "Immune Cell Classification. Cell type classification based on the\ + \ expression of immune cell markers." + info: + template: "[sample_name]_(assay)_cell_type_experimental.csv" + example: + - "Immune_Cell_Classification.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Multiplex outputs" + description: "Outputs when multiplex option is selected" + arguments: + - type: "file" + name: "--sample_tag_metrics" + description: "Sample Tag Metrics. Metrics from the sample determination algorithm." + info: + template: "[sample_name]_Sample_Tag_Metrics.csv" + example: + - "Sample_Tag_Metrics.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--sample_tag_calls" + description: "Sample Tag Calls. Assigned Sample Tag for each putative cell" + info: + template: "[sample_name]_Sample_Tag_Calls.csv" + example: + - "Sample_Tag_Calls.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--sample_tag_counts" + description: "Sample Tag Counts. Separate data tables and metric summary for cells\ + \ assigned to each sample tag. Note: For putative cells that could not be assigned\ + \ a specific Sample Tag, a Multiplet_and_Undetermined.zip file is also output." + info: + template: "[sample_name]_Sample_Tag[number].zip" + example: + - "Sample_Tag1.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: true + multiple_sep: ";" + - type: "file" + name: "--sample_tag_counts_unassigned" + description: "Sample Tag Counts Unassigned. Data table and metric summary for\ + \ cells that could not be assigned a specific Sample Tag." + info: + template: "[sample_name]_Multiplet_and_Undetermined.zip" + example: + - "Multiplet_and_Undetermined.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "VDJ Outputs" + description: "Outputs when VDJ option selected" + arguments: + - type: "file" + name: "--vdj_metrics" + description: "VDJ Metrics. Overall metrics from the VDJ analysis." + info: + template: "[sample_name]_VDJ_Metrics.csv" + example: + - "VDJ_Metrics.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_per_cell" + description: "VDJ Per Cell. Cell specific read and molecule counts, VDJ gene segments,\ + \ CDR3 sequences, paired chains, and cell type." + info: + template: "[sample_name]_VDJ_perCell.csv" + example: + - "VDJ_perCell.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_per_cell_uncorrected" + description: "VDJ Per Cell Uncorrected. Cell specific read and molecule counts,\ + \ VDJ gene segments, CDR3 sequences, paired chains, and cell type." + info: + template: "[sample_name]_VDJ_perCell_uncorrected.csv" + example: + - "VDJ_perCell_uncorrected.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_dominant_contigs" + description: "VDJ Dominant Contigs. Dominant contig for each cell label chain\ + \ type combination (putative cells only)." + info: + template: "[sample_name]_VDJ_Dominant_Contigs_AIRR.csv" + example: + - "VDJ_Dominant_Contigs_AIRR.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--vdj_unfiltered_contigs" + description: "VDJ Unfiltered Contigs. All contigs that were assembled and annotated\ + \ successfully (all cells)." + info: + template: "[sample_name]_VDJ_Unfiltered_Contigs_AIRR.csv" + example: + - "VDJ_Unfiltered_Contigs_AIRR.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "ATAC-Seq outputs" + description: "Outputs when ATAC-Seq option selected" + arguments: + - type: "file" + name: "--atac_metrics" + description: "ATAC Metrics. Overall metrics from the ATAC-Seq analysis." + info: + template: "[sample_name]_ATAC_Metrics.csv" + example: + - "ATAC_Metrics.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_metrics_json" + description: "ATAC Metrics JSON. Overall metrics from the ATAC-Seq analysis in\ + \ JSON format." + info: + template: "[sample_name]_ATAC_Metrics.json" + example: + - "ATAC_Metrics.json" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_fragments" + description: "ATAC Fragments. Chromosomal location, cell index, and read support\ + \ for each fragment detected" + info: + template: "[sample_name]_ATAC_Fragments.bed.gz" + example: + - "ATAC_Fragments.bed.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_fragments_index" + description: "Index of ATAC Fragments." + info: + template: "[sample_name]_ATAC_Fragments.bed.gz.tbi" + example: + - "ATAC_Fragments.bed.gz.tbi" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_transposase_sites" + description: "ATAC Transposase Sites. Chromosomal location, cell index, and read\ + \ support for each transposase site detected" + info: + template: "[sample_name]_ATAC_Transposase_Sites.bed.gz" + example: + - "ATAC_Transposase_Sites.bed.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_transposase_sites_index" + description: "Index of ATAC Transposase Sites." + info: + template: "[sample_name]_ATAC_Transposase_Sites.bed.gz.tbi" + example: + - "ATAC_Transposase_Sites.bed.gz.tbi" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_peaks" + description: "ATAC Peaks. Peak regions of transposase activity" + info: + template: "[sample_name]_ATAC_Peaks.bed.gz" + example: + - "ATAC_Peaks.bed.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_peaks_index" + description: "Index of ATAC Peaks." + info: + template: "[sample_name]_ATAC_Peaks.bed.gz.tbi" + example: + - "ATAC_Peaks.bed.gz.tbi" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_peak_annotation" + description: "ATAC Peak Annotation. Estimated annotation of peak-to-gene connections" + info: + template: "[sample_name]_peak_annotation.tsv.gz" + example: + - "peak_annotation.tsv.gz" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_cell_by_peak" + description: "ATAC Cell by Peak. Peak regions of transposase activity per cell" + info: + template: "[sample_name]_ATAC_Cell_by_Peak_MEX.zip" + example: + - "ATAC_Cell_by_Peak_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_cell_by_peak_unfiltered" + description: "ATAC Cell by Peak Unfiltered. Unfiltered file containing all cell\ + \ labels with >=1 transposase sites in peaks." + info: + template: "[sample_name]_ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + example: + - "ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_bam" + description: "ATAC BAM. Alignment file for R1 and R2 with associated I2 annotations\ + \ for ATAC-Seq. Only output if the BAM generation flag is set to true." + info: + template: "[sample_name]_ATAC.bam" + example: + - "ATAC.bam" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" + - type: "file" + name: "--atac_bam_index" + description: "Index of ATAC BAM." + info: + template: "[sample_name]_ATAC.bam.bai" + example: + - "ATAC.bam.bai" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "AbSeq Cell Calling outputs" + description: "Outputs when Cell Calling Abseq is selected" + arguments: + - type: "file" + name: "--protein_aggregates_experimental" + description: "Protein Aggregates Experimental" + info: + template: "[sample_name]_Protein_Aggregates_Experimental.csv" + example: + - "Protein_Aggregates_Experimental.csv" + must_exist: true + create_parent: true + required: false + direction: "output" + multiple: false + multiple_sep: ";" +- name: "Putative Cell Calling Settings" + arguments: + - type: "string" + name: "--cell_calling_data" + description: "Specify the dataset to be used for putative cell calling: mRNA,\ + \ AbSeq, ATAC, mRNA_and_ATAC\n\nFor putative cell calling using an AbSeq dataset,\ + \ please provide an AbSeq_Reference fasta file above.\n\nFor putative cell calling\ + \ using an ATAC dataset, please provide a WTA+ATAC-Seq Reference_Archive file\ + \ above.\n\nThe default data for putative cell calling, will be determined the\ + \ following way:\n\n- If mRNA Reads and ATAC Reads exist: mRNA_and_ATAC\n- If\ + \ only ATAC Reads exist: ATAC\n- Otherwise: mRNA\n" + info: + config_key: "Cell_Calling_Data" + example: + - "mRNA" + required: false + choices: + - "mRNA" + - "AbSeq" + - "ATAC" + - "mRNA_and_ATAC" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--cell_calling_bioproduct_algorithm" + description: "Specify the bioproduct algorithm to be used for putative cell calling:\ + \ Basic or Refined\n\nBy default, the Basic algorithm will be used for putative\ + \ cell calling.\n" + info: + config_key: "Cell_Calling_Bioproduct_Algorithm" + example: + - "Basic" + required: false + choices: + - "Basic" + - "Refined" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--cell_calling_atac_algorithm" + description: "Specify the ATAC-seq algorithm to be used for putative cell calling:\ + \ Basic or Refined\n\nBy default, the Basic algorithm will be used for putative\ + \ cell calling.\n" + info: + config_key: "Cell_Calling_ATAC_Algorithm" + example: + - "Basic" + required: false + choices: + - "Basic" + - "Refined" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "integer" + name: "--exact_cell_count" + description: "Set a specific number (>=1) of cells as putative, based on those\ + \ with the highest error-corrected read count\n" + info: + config_key: "Exact_Cell_Count" + example: + - 10000 + required: false + min: 1 + direction: "input" + multiple: false + multiple_sep: ";" + - type: "integer" + name: "--expected_cell_count" + description: "Guide the basic putative cell calling algorithm by providing an\ + \ estimate of the number of cells expected. Usually this can be the number\ + \ of cells loaded into the Rhapsody cartridge. If there are multiple inflection\ + \ points on the second derivative cumulative curve, this will ensure the one\ + \ selected is near the expected. \n" + info: + config_key: "Expected_Cell_Count" + example: + - 20000 + required: false + min: 1 + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Intronic Reads Settings" + arguments: + - type: "boolean" + name: "--exclude_intronic_reads" + description: "By default, the flag is false, and reads aligned to exons and introns\ + \ are considered and represented in molecule counts. When the flag is set to\ + \ true, intronic reads will be excluded.\nThe value can be true or false.\n" + info: + config_key: "Exclude_Intronic_Reads" + example: + - false + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Multiplex Settings" + arguments: + - type: "string" + name: "--sample_tags_version" + description: "Specify the version of the Sample Tags used in the run:\n\n* If\ + \ Sample Tag Multiplexing was done, specify the appropriate version: human,\ + \ mouse, flex, nuclei_includes_mrna, nuclei_atac_only\n* If this is an SMK +\ + \ Nuclei mRNA run or an SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq) run (and not\ + \ an SMK + ATAC-Seq only run), choose the \"nuclei_includes_mrna\" option.\n\ + * If this is an SMK + ATAC-Seq only run (and not SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq)),\ + \ choose the \"nuclei_atac_only\" option.\n" + info: + config_key: "Sample_Tags_Version" + example: + - "human" + required: false + choices: + - "human" + - "mouse" + - "flex" + - "nuclei_includes_mrna" + - "nuclei_atac_only" + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--tag_names" + description: "Specify the tag number followed by '-' and the desired sample name\ + \ to appear in Sample_Tag_Metrics.csv\nDo not use the special characters: &,\ + \ (), [], {}, <>, ?, |\n" + info: + config_key: "Tag_Names" + example: + - "4-mySample" + - "9-myOtherSample" + - "6-alsoThisSample" + required: false + direction: "input" + multiple: true + multiple_sep: ";" +- name: "VDJ arguments" + arguments: + - type: "string" + name: "--vdj_version" + description: "If VDJ was done, specify the appropriate option: human, mouse, humanBCR,\ + \ humanTCR, mouseBCR, mouseTCR\n" + info: + config_key: "VDJ_Version" + example: + - "human" + required: false + choices: + - "human" + - "mouse" + - "humanBCR" + - "humanTCR" + - "mouseBCR" + - "mouseTCR" + direction: "input" + multiple: false + multiple_sep: ";" +- name: "ATAC options" + arguments: + - type: "file" + name: "--predefined_atac_peaks" + description: "An optional BED file containing pre-established chromatin accessibility\ + \ peak regions for generating the ATAC cell-by-peak matrix." + info: + config_key: "Predefined_ATAC_Peaks" + example: + - "predefined_peaks.bed" + must_exist: true + create_parent: true + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Additional options" + arguments: + - type: "string" + name: "--run_name" + description: "Specify a run name to use as the output file base name. Use only\ + \ letters, numbers, or hyphens. Do not use special characters or spaces.\n" + info: + config_key: "Run_Name" + default: + - "sample" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--generate_bam" + description: "Specify whether to create the BAM file output\n" + info: + config_key: "Generate_Bam" + default: + - false + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--long_reads" + description: "Use STARlong (default: undefined - i.e. autodetects based on read\ + \ lengths) - Specify if the STARlong aligner should be used instead of STAR.\ + \ Set to true if the reads are longer than 650bp.\n" + info: + config_key: "Long_Reads" + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "Advanced options" + description: "NOTE: Only change these if you are really sure about what you are\ + \ doing\n" + arguments: + - type: "string" + name: "--custom_star_params" + description: "Modify STAR alignment parameters - Set this parameter to fully override\ + \ default STAR mapping parameters used in the pipeline.\nFor reference this\ + \ is the default that is used:\n\n Short Reads: `--outFilterScoreMinOverLread\ + \ 0 --outFilterMatchNminOverLread 0 --outFilterMultimapScoreRange 0 --clip3pAdapterSeq\ + \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --seedSearchStartLmax 50 --outFilterMatchNmin\ + \ 25 --limitOutSJcollapsed 2000000`\n Long Reads: Same as Short Reads + `--seedPerReadNmax\ + \ 10000`\n\nThis applies to fastqs provided in the Reads user input \nDo NOT\ + \ set any non-mapping related params like `--genomeDir`, `--outSAMtype`, `--outSAMunmapped`,\ + \ `--readFilesIn`, `--runThreadN`, etc.\nWe use STAR version 2.7.10b\n" + info: + config_key: "Custom_STAR_Params" + example: + - "--alignIntronMax 6000 --outFilterScoreMinOverLread 0.1 --limitOutSJcollapsed\ + \ 2000000" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "string" + name: "--custom_bwa_mem2_params" + description: "Modify bwa-mem2 alignment parameters - Set this parameter to fully\ + \ override bwa-mem2 mapping parameters used in the pipeline\nThe pipeline does\ + \ not specify any custom mapping params to bwa-mem2 so program default values\ + \ are used\nThis applies to fastqs provided in the Reads_ATAC user input \n\ + Do NOT set any non-mapping related params like `-C`, `-t`, etc.\nWe use bwa-mem2\ + \ version 2.2.1\n" + info: + config_key: "Custom_bwa_mem2_Params" + example: + - "-k 16 -w 200 -r" + required: false + direction: "input" + multiple: false + multiple_sep: ";" +- name: "CWL-runner arguments" + arguments: + - type: "boolean" + name: "--parallel" + description: "Run jobs in parallel." + info: null + default: + - true + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean_true" + name: "--timestamps" + description: "Add timestamps to the errors, warnings, and notifications." + info: null + direction: "input" +- name: "Undocumented arguments" + arguments: + - type: "integer" + name: "--abseq_umi" + info: + config_key: "AbSeq_UMI" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--target_analysis" + info: + config_key: "Target_analysis" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "double" + name: "--vdj_jgene_evalue" + description: "e-value threshold for J gene. The e-value threshold for J gene call\ + \ by IgBlast/PyIR, default is set as 0.001\n" + info: + config_key: "VDJ_JGene_Evalue" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "double" + name: "--vdj_vgene_evalue" + description: "e-value threshold for V gene. The e-value threshold for V gene call\ + \ by IgBlast/PyIR, default is set as 0.001\n" + info: + config_key: "VDJ_VGene_Evalue" + required: false + direction: "input" + multiple: false + multiple_sep: ";" + - type: "boolean" + name: "--write_filtered_reads" + info: + config_key: "Write_Filtered_Reads" + required: false + direction: "input" + multiple: false + multiple_sep: ";" +resources: +- type: "python_script" + path: "script.py" + is_executable: true +description: "BD Rhapsody Sequence Analysis CWL pipeline v2.2.\n\nThis pipeline performs\ + \ analysis of single-cell multiomic sequence read (FASTQ) data. The supported\n\ + sequencing libraries are those generated by the BD Rhapsody™ assay kits, including:\ + \ Whole Transcriptome\nmRNA (WTA), Targeted mRNA, AbSeq Antibody-Oligonucleotides\ + \ (ABC), Single-Cell Multiplexing (SMK),\nTCR/BCR (VDJ), and ATAC-Seq.\n" +test_resources: +- type: "python_script" + path: "test.py" + is_executable: true +- type: "file" + path: "test_data" +- type: "file" + path: "helpers" +info: null +status: "enabled" +requirements: + commands: + - "ps" +keywords: +- "rna-seq" +- "single-cell" +- "multiomic" +- "atac-seq" +- "targeted" +- "abseq" +- "tcr" +- "bcr" +license: "Unknown" +links: + repository: "https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1" + documentation: "https://bd-rhapsody-bioinfo-docs.genomics.bd.com" +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: "bdgenomics/rhapsody:2.2.1" + target_registry: "images.viash-hub.com" + target_tag: "main" + namespace_separator: "/" + setup: + - type: "apt" + packages: + - "procps" + - "git" + interactive: false + - type: "python" + user: false + packages: + - "cwlref-runner" + - "cwl-runner" + upgrade: true + - type: "docker" + run: + - "mkdir /var/bd_rhapsody_cwl && \\\n cd /var/bd_rhapsody_cwl && \\\n git clone\ + \ https://bitbucket.org/CRSwDev/cwl.git . && \\\n git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de\n" + - type: "docker" + run: + - "VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1)" + - "echo \"bdgenomics/rhapsody: \\\"$VERSION\\\"\" > /var/software_versions.txt" + test_setup: + - type: "python" + user: false + packages: + - "biopython" + - "gffutils" + upgrade: true + entrypoint: [] + cmd: null +- type: "native" + id: "native" +build_info: + config: "src/bd_rhapsody/bd_rhapsody_sequence_analysis/config.vsh.yaml" + runner: "nextflow" + engine: "docker|native" + 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: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" +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/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf new file mode 100644 index 00000000..1ed3af90 --- /dev/null +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/main.nf @@ -0,0 +1,5016 @@ +// bd_rhapsody_sequence_analysis 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: +// * Robrecht Cannoodt (author, maintainer) +// * Weiwei Schultz (contributor) + +//////////////////////////// +// 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" : "bd_rhapsody_sequence_analysis", + "namespace" : "bd_rhapsody", + "version" : "main", + "authors" : [ + { + "name" : "Robrecht Cannoodt", + "roles" : [ + "author", + "maintainer" + ], + "info" : { + "links" : { + "email" : "robrecht@data-intuitive.com", + "github" : "rcannood", + "orcid" : "0000-0003-3641-729X", + "linkedin" : "robrechtcannoodt" + }, + "organizations" : [ + { + "name" : "Data Intuitive", + "href" : "https://www.data-intuitive.com", + "role" : "Data Science Engineer" + }, + { + "name" : "Open Problems", + "href" : "https://openproblems.bio", + "role" : "Core Member" + } + ] + } + }, + { + "name" : "Weiwei Schultz", + "roles" : [ + "contributor" + ], + "info" : { + "organizations" : [ + { + "name" : "Janssen R&D US", + "role" : "Associate Director Data Sciences" + } + ] + } + } + ], + "argument_groups" : [ + { + "name" : "Inputs", + "arguments" : [ + { + "type" : "file", + "name" : "--reads", + "description" : "Reads (optional) - Path to your FASTQ.GZ formatted read files from libraries that may include:\n\n- WTA mRNA\n- Targeted mRNA\n- AbSeq\n- Sample Multiplexing\n- VDJ\n\nYou may specify as many R1/R2 read pairs as you want.\n", + "info" : { + "config_key" : "Reads" + }, + "example" : [ + "WTALibrary_S1_L001_R1_001.fastq.gz", + "WTALibrary_S1_L001_R2_001.fastq.gz" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : true, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--reads_atac", + "description" : "Path to your FASTQ.GZ formatted read files from ATAC-Seq libraries.\nYou may specify as many R1/R2/I2 files as you want.\n", + "info" : { + "config_key" : "Reads_ATAC" + }, + "example" : [ + "ATACLibrary_S2_L001_R1_001.fastq.gz", + "ATACLibrary_S2_L001_R2_001.fastq.gz", + "ATACLibrary_S2_L001_I2_001.fastq.gz" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : true, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "References", + "description" : "Assay type will be inferred from the provided reference(s).\nDo not provide both reference_archive and targeted_reference at the same time.\n\nValid reference input combinations:\n - reference_archive: WTA only\n - reference_archive & abseq_reference: WTA + AbSeq\n - reference_archive & supplemental_reference: WTA + extra transgenes\n - reference_archive & abseq_reference & supplemental_reference: WTA + AbSeq + extra transgenes\n - reference_archive: WTA + ATAC or ATAC only\n - reference_archive & supplemental_reference: WTA + ATAC + extra transgenes\n - targeted_reference: Targeted only\n - targeted_reference & abseq_reference: Targeted + AbSeq\n - abseq_reference: AbSeq only\n\nThe reference_archive can be generated with the bd_rhapsody_make_reference component.\nAlternatively, BD also provides standard references which can be downloaded from these locations:\n\n - Human: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Human_WTA_2023-02.tar.gz\n - Mouse: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Mouse_WTA_2023-02.tar.gz\n", + "arguments" : [ + { + "type" : "file", + "name" : "--reference_archive", + "description" : "Path to Rhapsody WTA Reference in the tar.gz format.\n\nStructure of the reference archive:\n\n- `BD_Rhapsody_Reference_Files/`: top level folder\n - `star_index/`: sub-folder containing STAR index, that is files created with `STAR --runMode genomeGenerate`\n - GTF for gene-transcript-annotation e.g. \\"gencode.v43.primary_assembly.annotation.gtf\\"\n", + "info" : { + "config_key" : "Reference_Archive" + }, + "example" : [ + "RhapRef_Human_WTA_2023-02.tar.gz" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--targeted_reference", + "description" : "Path to the targeted reference file in FASTA format.\n", + "info" : { + "config_key" : "Targeted_Reference" + }, + "example" : [ + "BD_Rhapsody_Immune_Response_Panel_Hs.fasta" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : true, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--abseq_reference", + "description" : "Path to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used.", + "info" : { + "config_key" : "AbSeq_Reference" + }, + "example" : [ + "AbSeq_reference.fasta" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : true, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--supplemental_reference", + "alternatives" : [ + "-s" + ], + "description" : "Path to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences to be aligned against in a WTA assay experiment.", + "info" : { + "config_key" : "Supplemental_Reference" + }, + "example" : [ + "supplemental_reference.fasta" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : true, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Outputs", + "description" : "Outputs for all pipeline runs", + "arguments" : [ + { + "type" : "file", + "name" : "--output_dir", + "alternatives" : [ + "-o" + ], + "description" : "The unprocessed output directory containing all the outputs from the pipeline.", + "example" : [ + "output_dir" + ], + "must_exist" : true, + "create_parent" : true, + "required" : true, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--output_seurat", + "description" : "Single-cell analysis tool inputs. Seurat (.rds) input file containing RSEC molecules data table and all cell annotation metadata.", + "info" : { + "template" : "[sample_name]_Seurat.rds" + }, + "example" : [ + "output_seurat.rds" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--output_mudata", + "description" : "Single-cell analysis tool inputs. Scanpy / Muon input file containing RSEC molecules data table and all cell annotation metadata.", + "info" : { + "template" : "[sample_name].h5mu" + }, + "example" : [ + "output_mudata.h5mu" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--metrics_summary", + "description" : "Metrics Summary. Report containing sequencing, molecules, and cell metrics.", + "info" : { + "template" : "[sample_name]_Metrics_Summary.csv" + }, + "example" : [ + "metrics_summary.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--pipeline_report", + "description" : "Pipeline Report. Summary report containing the results from the sequencing analysis pipeline run.", + "info" : { + "template" : "[sample_name]_Pipeline_Report.html" + }, + "example" : [ + "pipeline_report.html" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--rsec_mols_per_cell", + "description" : "Molecules per bioproduct per cell bassed on RSEC", + "info" : { + "template" : "[sample_name]_RSEC_MolsPerCell_MEX.zip" + }, + "example" : [ + "RSEC_MolsPerCell_MEX.zip" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--dbec_mols_per_cell", + "description" : "Molecules per bioproduct per cell bassed on DBEC. DBEC data table is only output if the experiment includes targeted mRNA or AbSeq bioproducts.", + "info" : { + "template" : "[sample_name]_DBEC_MolsPerCell_MEX.zip" + }, + "example" : [ + "DBEC_MolsPerCell_MEX.zip" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--rsec_mols_per_cell_unfiltered", + "description" : "Unfiltered tables containing all cell labels with ≥10 reads.", + "info" : { + "template" : "[sample_name]_RSEC_MolsPerCell_Unfiltered_MEX.zip" + }, + "example" : [ + "RSEC_MolsPerCell_Unfiltered_MEX.zip" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--bam", + "description" : "Alignment file of R2 with associated R1 annotations for Bioproduct.", + "info" : { + "template" : "[sample_name]_Bioproduct.bam" + }, + "example" : [ + "BioProduct.bam" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--bam_index", + "description" : "Index file for the alignment file.", + "info" : { + "template" : "[sample_name]_Bioproduct.bam.bai" + }, + "example" : [ + "BioProduct.bam.bai" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--bioproduct_stats", + "description" : "Bioproduct Stats. Metrics from RSEC and DBEC Unique Molecular Identifier adjustment algorithms on a per-bioproduct basis.", + "info" : { + "template" : "[sample_name]_Bioproduct_Stats.csv" + }, + "example" : [ + "Bioproduct_Stats.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--dimred_tsne", + "description" : "t-SNE dimensionality reduction coordinates per cell index", + "info" : { + "template" : "[sample_name]_(assay)_tSNE_coordinates.csv" + }, + "example" : [ + "tSNE_coordinates.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--dimred_umap", + "description" : "UMAP dimensionality reduction coordinates per cell index", + "info" : { + "template" : "[sample_name]_(assay)_UMAP_coordinates.csv" + }, + "example" : [ + "UMAP_coordinates.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--immune_cell_classification", + "description" : "Immune Cell Classification. Cell type classification based on the expression of immune cell markers.", + "info" : { + "template" : "[sample_name]_(assay)_cell_type_experimental.csv" + }, + "example" : [ + "Immune_Cell_Classification.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Multiplex outputs", + "description" : "Outputs when multiplex option is selected", + "arguments" : [ + { + "type" : "file", + "name" : "--sample_tag_metrics", + "description" : "Sample Tag Metrics. Metrics from the sample determination algorithm.", + "info" : { + "template" : "[sample_name]_Sample_Tag_Metrics.csv" + }, + "example" : [ + "Sample_Tag_Metrics.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--sample_tag_calls", + "description" : "Sample Tag Calls. Assigned Sample Tag for each putative cell", + "info" : { + "template" : "[sample_name]_Sample_Tag_Calls.csv" + }, + "example" : [ + "Sample_Tag_Calls.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--sample_tag_counts", + "description" : "Sample Tag Counts. Separate data tables and metric summary for cells assigned to each sample tag. Note: For putative cells that could not be assigned a specific Sample Tag, a Multiplet_and_Undetermined.zip file is also output.", + "info" : { + "template" : "[sample_name]_Sample_Tag[number].zip" + }, + "example" : [ + "Sample_Tag1.zip" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : true, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--sample_tag_counts_unassigned", + "description" : "Sample Tag Counts Unassigned. Data table and metric summary for cells that could not be assigned a specific Sample Tag.", + "info" : { + "template" : "[sample_name]_Multiplet_and_Undetermined.zip" + }, + "example" : [ + "Multiplet_and_Undetermined.zip" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "VDJ Outputs", + "description" : "Outputs when VDJ option selected", + "arguments" : [ + { + "type" : "file", + "name" : "--vdj_metrics", + "description" : "VDJ Metrics. Overall metrics from the VDJ analysis.", + "info" : { + "template" : "[sample_name]_VDJ_Metrics.csv" + }, + "example" : [ + "VDJ_Metrics.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--vdj_per_cell", + "description" : "VDJ Per Cell. Cell specific read and molecule counts, VDJ gene segments, CDR3 sequences, paired chains, and cell type.", + "info" : { + "template" : "[sample_name]_VDJ_perCell.csv" + }, + "example" : [ + "VDJ_perCell.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--vdj_per_cell_uncorrected", + "description" : "VDJ Per Cell Uncorrected. Cell specific read and molecule counts, VDJ gene segments, CDR3 sequences, paired chains, and cell type.", + "info" : { + "template" : "[sample_name]_VDJ_perCell_uncorrected.csv" + }, + "example" : [ + "VDJ_perCell_uncorrected.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--vdj_dominant_contigs", + "description" : "VDJ Dominant Contigs. Dominant contig for each cell label chain type combination (putative cells only).", + "info" : { + "template" : "[sample_name]_VDJ_Dominant_Contigs_AIRR.csv" + }, + "example" : [ + "VDJ_Dominant_Contigs_AIRR.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--vdj_unfiltered_contigs", + "description" : "VDJ Unfiltered Contigs. All contigs that were assembled and annotated successfully (all cells).", + "info" : { + "template" : "[sample_name]_VDJ_Unfiltered_Contigs_AIRR.csv" + }, + "example" : [ + "VDJ_Unfiltered_Contigs_AIRR.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "ATAC-Seq outputs", + "description" : "Outputs when ATAC-Seq option selected", + "arguments" : [ + { + "type" : "file", + "name" : "--atac_metrics", + "description" : "ATAC Metrics. Overall metrics from the ATAC-Seq analysis.", + "info" : { + "template" : "[sample_name]_ATAC_Metrics.csv" + }, + "example" : [ + "ATAC_Metrics.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_metrics_json", + "description" : "ATAC Metrics JSON. Overall metrics from the ATAC-Seq analysis in JSON format.", + "info" : { + "template" : "[sample_name]_ATAC_Metrics.json" + }, + "example" : [ + "ATAC_Metrics.json" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_fragments", + "description" : "ATAC Fragments. Chromosomal location, cell index, and read support for each fragment detected", + "info" : { + "template" : "[sample_name]_ATAC_Fragments.bed.gz" + }, + "example" : [ + "ATAC_Fragments.bed.gz" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_fragments_index", + "description" : "Index of ATAC Fragments.", + "info" : { + "template" : "[sample_name]_ATAC_Fragments.bed.gz.tbi" + }, + "example" : [ + "ATAC_Fragments.bed.gz.tbi" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_transposase_sites", + "description" : "ATAC Transposase Sites. Chromosomal location, cell index, and read support for each transposase site detected", + "info" : { + "template" : "[sample_name]_ATAC_Transposase_Sites.bed.gz" + }, + "example" : [ + "ATAC_Transposase_Sites.bed.gz" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_transposase_sites_index", + "description" : "Index of ATAC Transposase Sites.", + "info" : { + "template" : "[sample_name]_ATAC_Transposase_Sites.bed.gz.tbi" + }, + "example" : [ + "ATAC_Transposase_Sites.bed.gz.tbi" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_peaks", + "description" : "ATAC Peaks. Peak regions of transposase activity", + "info" : { + "template" : "[sample_name]_ATAC_Peaks.bed.gz" + }, + "example" : [ + "ATAC_Peaks.bed.gz" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_peaks_index", + "description" : "Index of ATAC Peaks.", + "info" : { + "template" : "[sample_name]_ATAC_Peaks.bed.gz.tbi" + }, + "example" : [ + "ATAC_Peaks.bed.gz.tbi" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_peak_annotation", + "description" : "ATAC Peak Annotation. Estimated annotation of peak-to-gene connections", + "info" : { + "template" : "[sample_name]_peak_annotation.tsv.gz" + }, + "example" : [ + "peak_annotation.tsv.gz" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_cell_by_peak", + "description" : "ATAC Cell by Peak. Peak regions of transposase activity per cell", + "info" : { + "template" : "[sample_name]_ATAC_Cell_by_Peak_MEX.zip" + }, + "example" : [ + "ATAC_Cell_by_Peak_MEX.zip" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_cell_by_peak_unfiltered", + "description" : "ATAC Cell by Peak Unfiltered. Unfiltered file containing all cell labels with >=1 transposase sites in peaks.", + "info" : { + "template" : "[sample_name]_ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + }, + "example" : [ + "ATAC_Cell_by_Peak_Unfiltered_MEX.zip" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_bam", + "description" : "ATAC BAM. Alignment file for R1 and R2 with associated I2 annotations for ATAC-Seq. Only output if the BAM generation flag is set to true.", + "info" : { + "template" : "[sample_name]_ATAC.bam" + }, + "example" : [ + "ATAC.bam" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "file", + "name" : "--atac_bam_index", + "description" : "Index of ATAC BAM.", + "info" : { + "template" : "[sample_name]_ATAC.bam.bai" + }, + "example" : [ + "ATAC.bam.bai" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "AbSeq Cell Calling outputs", + "description" : "Outputs when Cell Calling Abseq is selected", + "arguments" : [ + { + "type" : "file", + "name" : "--protein_aggregates_experimental", + "description" : "Protein Aggregates Experimental", + "info" : { + "template" : "[sample_name]_Protein_Aggregates_Experimental.csv" + }, + "example" : [ + "Protein_Aggregates_Experimental.csv" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "output", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Putative Cell Calling Settings", + "arguments" : [ + { + "type" : "string", + "name" : "--cell_calling_data", + "description" : "Specify the dataset to be used for putative cell calling: mRNA, AbSeq, ATAC, mRNA_and_ATAC\n\nFor putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above.\n\nFor putative cell calling using an ATAC dataset, please provide a WTA+ATAC-Seq Reference_Archive file above.\n\nThe default data for putative cell calling, will be determined the following way:\n\n- If mRNA Reads and ATAC Reads exist: mRNA_and_ATAC\n- If only ATAC Reads exist: ATAC\n- Otherwise: mRNA\n", + "info" : { + "config_key" : "Cell_Calling_Data" + }, + "example" : [ + "mRNA" + ], + "required" : false, + "choices" : [ + "mRNA", + "AbSeq", + "ATAC", + "mRNA_and_ATAC" + ], + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "string", + "name" : "--cell_calling_bioproduct_algorithm", + "description" : "Specify the bioproduct algorithm to be used for putative cell calling: Basic or Refined\n\nBy default, the Basic algorithm will be used for putative cell calling.\n", + "info" : { + "config_key" : "Cell_Calling_Bioproduct_Algorithm" + }, + "example" : [ + "Basic" + ], + "required" : false, + "choices" : [ + "Basic", + "Refined" + ], + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "string", + "name" : "--cell_calling_atac_algorithm", + "description" : "Specify the ATAC-seq algorithm to be used for putative cell calling: Basic or Refined\n\nBy default, the Basic algorithm will be used for putative cell calling.\n", + "info" : { + "config_key" : "Cell_Calling_ATAC_Algorithm" + }, + "example" : [ + "Basic" + ], + "required" : false, + "choices" : [ + "Basic", + "Refined" + ], + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "integer", + "name" : "--exact_cell_count", + "description" : "Set a specific number (>=1) of cells as putative, based on those with the highest error-corrected read count\n", + "info" : { + "config_key" : "Exact_Cell_Count" + }, + "example" : [ + 10000 + ], + "required" : false, + "min" : 1, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "integer", + "name" : "--expected_cell_count", + "description" : "Guide the basic putative cell calling algorithm by providing an estimate of the number of cells expected. Usually this can be the number of cells loaded into the Rhapsody cartridge. If there are multiple inflection points on the second derivative cumulative curve, this will ensure the one selected is near the expected. \n", + "info" : { + "config_key" : "Expected_Cell_Count" + }, + "example" : [ + 20000 + ], + "required" : false, + "min" : 1, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Intronic Reads Settings", + "arguments" : [ + { + "type" : "boolean", + "name" : "--exclude_intronic_reads", + "description" : "By default, the flag is false, and reads aligned to exons and introns are considered and represented in molecule counts. When the flag is set to true, intronic reads will be excluded.\nThe value can be true or false.\n", + "info" : { + "config_key" : "Exclude_Intronic_Reads" + }, + "example" : [ + false + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Multiplex Settings", + "arguments" : [ + { + "type" : "string", + "name" : "--sample_tags_version", + "description" : "Specify the version of the Sample Tags used in the run:\n\n* If Sample Tag Multiplexing was done, specify the appropriate version: human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only\n* If this is an SMK + Nuclei mRNA run or an SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq) run (and not an SMK + ATAC-Seq only run), choose the \\"nuclei_includes_mrna\\" option.\n* If this is an SMK + ATAC-Seq only run (and not SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq)), choose the \\"nuclei_atac_only\\" option.\n", + "info" : { + "config_key" : "Sample_Tags_Version" + }, + "example" : [ + "human" + ], + "required" : false, + "choices" : [ + "human", + "mouse", + "flex", + "nuclei_includes_mrna", + "nuclei_atac_only" + ], + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "string", + "name" : "--tag_names", + "description" : "Specify the tag number followed by '-' and the desired sample name to appear in Sample_Tag_Metrics.csv\nDo not use the special characters: &, (), [], {}, <>, ?, |\n", + "info" : { + "config_key" : "Tag_Names" + }, + "example" : [ + "4-mySample", + "9-myOtherSample", + "6-alsoThisSample" + ], + "required" : false, + "direction" : "input", + "multiple" : true, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "VDJ arguments", + "arguments" : [ + { + "type" : "string", + "name" : "--vdj_version", + "description" : "If VDJ was done, specify the appropriate option: human, mouse, humanBCR, humanTCR, mouseBCR, mouseTCR\n", + "info" : { + "config_key" : "VDJ_Version" + }, + "example" : [ + "human" + ], + "required" : false, + "choices" : [ + "human", + "mouse", + "humanBCR", + "humanTCR", + "mouseBCR", + "mouseTCR" + ], + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "ATAC options", + "arguments" : [ + { + "type" : "file", + "name" : "--predefined_atac_peaks", + "description" : "An optional BED file containing pre-established chromatin accessibility peak regions for generating the ATAC cell-by-peak matrix.", + "info" : { + "config_key" : "Predefined_ATAC_Peaks" + }, + "example" : [ + "predefined_peaks.bed" + ], + "must_exist" : true, + "create_parent" : true, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Additional options", + "arguments" : [ + { + "type" : "string", + "name" : "--run_name", + "description" : "Specify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces.\n", + "info" : { + "config_key" : "Run_Name" + }, + "default" : [ + "sample" + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "boolean", + "name" : "--generate_bam", + "description" : "Specify whether to create the BAM file output\n", + "info" : { + "config_key" : "Generate_Bam" + }, + "default" : [ + false + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "boolean", + "name" : "--long_reads", + "description" : "Use STARlong (default: undefined - i.e. autodetects based on read lengths) - Specify if the STARlong aligner should be used instead of STAR. Set to true if the reads are longer than 650bp.\n", + "info" : { + "config_key" : "Long_Reads" + }, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "Advanced options", + "description" : "NOTE: Only change these if you are really sure about what you are doing\n", + "arguments" : [ + { + "type" : "string", + "name" : "--custom_star_params", + "description" : "Modify STAR alignment parameters - Set this parameter to fully override default STAR mapping parameters used in the pipeline.\nFor reference this is the default that is used:\n\n Short Reads: `--outFilterScoreMinOverLread 0 --outFilterMatchNminOverLread 0 --outFilterMultimapScoreRange 0 --clip3pAdapterSeq AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --seedSearchStartLmax 50 --outFilterMatchNmin 25 --limitOutSJcollapsed 2000000`\n Long Reads: Same as Short Reads + `--seedPerReadNmax 10000`\n\nThis applies to fastqs provided in the Reads user input \nDo NOT set any non-mapping related params like `--genomeDir`, `--outSAMtype`, `--outSAMunmapped`, `--readFilesIn`, `--runThreadN`, etc.\nWe use STAR version 2.7.10b\n", + "info" : { + "config_key" : "Custom_STAR_Params" + }, + "example" : [ + "--alignIntronMax 6000 --outFilterScoreMinOverLread 0.1 --limitOutSJcollapsed 2000000" + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "string", + "name" : "--custom_bwa_mem2_params", + "description" : "Modify bwa-mem2 alignment parameters - Set this parameter to fully override bwa-mem2 mapping parameters used in the pipeline\nThe pipeline does not specify any custom mapping params to bwa-mem2 so program default values are used\nThis applies to fastqs provided in the Reads_ATAC user input \nDo NOT set any non-mapping related params like `-C`, `-t`, etc.\nWe use bwa-mem2 version 2.2.1\n", + "info" : { + "config_key" : "Custom_bwa_mem2_Params" + }, + "example" : [ + "-k 16 -w 200 -r" + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + }, + { + "name" : "CWL-runner arguments", + "arguments" : [ + { + "type" : "boolean", + "name" : "--parallel", + "description" : "Run jobs in parallel.", + "default" : [ + true + ], + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "boolean_true", + "name" : "--timestamps", + "description" : "Add timestamps to the errors, warnings, and notifications.", + "direction" : "input" + } + ] + }, + { + "name" : "Undocumented arguments", + "arguments" : [ + { + "type" : "integer", + "name" : "--abseq_umi", + "info" : { + "config_key" : "AbSeq_UMI" + }, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "boolean", + "name" : "--target_analysis", + "info" : { + "config_key" : "Target_analysis" + }, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "double", + "name" : "--vdj_jgene_evalue", + "description" : "e-value threshold for J gene. The e-value threshold for J gene call by IgBlast/PyIR, default is set as 0.001\n", + "info" : { + "config_key" : "VDJ_JGene_Evalue" + }, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "double", + "name" : "--vdj_vgene_evalue", + "description" : "e-value threshold for V gene. The e-value threshold for V gene call by IgBlast/PyIR, default is set as 0.001\n", + "info" : { + "config_key" : "VDJ_VGene_Evalue" + }, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + }, + { + "type" : "boolean", + "name" : "--write_filtered_reads", + "info" : { + "config_key" : "Write_Filtered_Reads" + }, + "required" : false, + "direction" : "input", + "multiple" : false, + "multiple_sep" : ";" + } + ] + } + ], + "resources" : [ + { + "type" : "python_script", + "path" : "script.py", + "is_executable" : true + } + ], + "description" : "BD Rhapsody Sequence Analysis CWL pipeline v2.2.\n\nThis pipeline performs analysis of single-cell multiomic sequence read (FASTQ) data. The supported\nsequencing libraries are those generated by the BD Rhapsody™ assay kits, including: Whole Transcriptome\nmRNA (WTA), Targeted mRNA, AbSeq Antibody-Oligonucleotides (ABC), Single-Cell Multiplexing (SMK),\nTCR/BCR (VDJ), and ATAC-Seq.\n", + "test_resources" : [ + { + "type" : "python_script", + "path" : "test.py", + "is_executable" : true + }, + { + "type" : "file", + "path" : "../test_data" + }, + { + "type" : "file", + "path" : "../helpers" + } + ], + "status" : "enabled", + "requirements" : { + "commands" : [ + "ps" + ] + }, + "keywords" : [ + "rna-seq", + "single-cell", + "multiomic", + "atac-seq", + "targeted", + "abseq", + "tcr", + "bcr" + ], + "license" : "Unknown", + "links" : { + "repository" : "https://bitbucket.org/CRSwDev/cwl/src/master/v2.2.1", + "documentation" : "https://bd-rhapsody-bioinfo-docs.genomics.bd.com" + }, + "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" : "bdgenomics/rhapsody:2.2.1", + "target_registry" : "images.viash-hub.com", + "target_tag" : "main", + "namespace_separator" : "/", + "setup" : [ + { + "type" : "apt", + "packages" : [ + "procps", + "git" + ], + "interactive" : false + }, + { + "type" : "python", + "user" : false, + "packages" : [ + "cwlref-runner", + "cwl-runner" + ], + "upgrade" : true + }, + { + "type" : "docker", + "run" : [ + "mkdir /var/bd_rhapsody_cwl && \\\\\n cd /var/bd_rhapsody_cwl && \\\\\n git clone https://bitbucket.org/CRSwDev/cwl.git . && \\\\\n git checkout 8feeace1141b24749ea6003f8e6ad6d3ad5232de\n" + ] + }, + { + "type" : "docker", + "run" : [ + "VERSION=$(ls -v /var/bd_rhapsody_cwl | grep '^v' | sed 's#v##' | tail -1)", + "echo \\"bdgenomics/rhapsody: \\\\\\"$VERSION\\\\\\"\\" > /var/software_versions.txt" + ] + } + ], + "test_setup" : [ + { + "type" : "python", + "user" : false, + "packages" : [ + "biopython", + "gffutils" + ], + "upgrade" : true + } + ] + }, + { + "type" : "native", + "id" : "native" + } + ], + "build_info" : { + "config" : "/workdir/root/repo/src/bd_rhapsody/bd_rhapsody_sequence_analysis/config.vsh.yaml", + "runner" : "nextflow", + "engine" : "docker|native", + "output" : "target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis", + "viash_version" : "0.9.0", + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" + }, + "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 +import os +import re +import subprocess +import tempfile +from typing import Any +import yaml +import shutil +import glob + +## VIASH START +# The following code has been auto-generated by Viash. +par = { + 'reads': $( if [ ! -z ${VIASH_PAR_READS+x} ]; then echo "r'${VIASH_PAR_READS//\\'/\\'\\"\\'\\"r\\'}'.split(';')"; else echo None; fi ), + 'reads_atac': $( if [ ! -z ${VIASH_PAR_READS_ATAC+x} ]; then echo "r'${VIASH_PAR_READS_ATAC//\\'/\\'\\"\\'\\"r\\'}'.split(';')"; else echo None; fi ), + 'reference_archive': $( if [ ! -z ${VIASH_PAR_REFERENCE_ARCHIVE+x} ]; then echo "r'${VIASH_PAR_REFERENCE_ARCHIVE//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'targeted_reference': $( if [ ! -z ${VIASH_PAR_TARGETED_REFERENCE+x} ]; then echo "r'${VIASH_PAR_TARGETED_REFERENCE//\\'/\\'\\"\\'\\"r\\'}'.split(';')"; else echo None; fi ), + 'abseq_reference': $( if [ ! -z ${VIASH_PAR_ABSEQ_REFERENCE+x} ]; then echo "r'${VIASH_PAR_ABSEQ_REFERENCE//\\'/\\'\\"\\'\\"r\\'}'.split(';')"; else echo None; fi ), + 'supplemental_reference': $( if [ ! -z ${VIASH_PAR_SUPPLEMENTAL_REFERENCE+x} ]; then echo "r'${VIASH_PAR_SUPPLEMENTAL_REFERENCE//\\'/\\'\\"\\'\\"r\\'}'.split(';')"; else echo None; fi ), + 'output_dir': $( if [ ! -z ${VIASH_PAR_OUTPUT_DIR+x} ]; then echo "r'${VIASH_PAR_OUTPUT_DIR//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'output_seurat': $( if [ ! -z ${VIASH_PAR_OUTPUT_SEURAT+x} ]; then echo "r'${VIASH_PAR_OUTPUT_SEURAT//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'output_mudata': $( if [ ! -z ${VIASH_PAR_OUTPUT_MUDATA+x} ]; then echo "r'${VIASH_PAR_OUTPUT_MUDATA//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'metrics_summary': $( if [ ! -z ${VIASH_PAR_METRICS_SUMMARY+x} ]; then echo "r'${VIASH_PAR_METRICS_SUMMARY//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'pipeline_report': $( if [ ! -z ${VIASH_PAR_PIPELINE_REPORT+x} ]; then echo "r'${VIASH_PAR_PIPELINE_REPORT//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'rsec_mols_per_cell': $( if [ ! -z ${VIASH_PAR_RSEC_MOLS_PER_CELL+x} ]; then echo "r'${VIASH_PAR_RSEC_MOLS_PER_CELL//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'dbec_mols_per_cell': $( if [ ! -z ${VIASH_PAR_DBEC_MOLS_PER_CELL+x} ]; then echo "r'${VIASH_PAR_DBEC_MOLS_PER_CELL//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'rsec_mols_per_cell_unfiltered': $( if [ ! -z ${VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED+x} ]; then echo "r'${VIASH_PAR_RSEC_MOLS_PER_CELL_UNFILTERED//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'bam': $( if [ ! -z ${VIASH_PAR_BAM+x} ]; then echo "r'${VIASH_PAR_BAM//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'bam_index': $( if [ ! -z ${VIASH_PAR_BAM_INDEX+x} ]; then echo "r'${VIASH_PAR_BAM_INDEX//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'bioproduct_stats': $( if [ ! -z ${VIASH_PAR_BIOPRODUCT_STATS+x} ]; then echo "r'${VIASH_PAR_BIOPRODUCT_STATS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'dimred_tsne': $( if [ ! -z ${VIASH_PAR_DIMRED_TSNE+x} ]; then echo "r'${VIASH_PAR_DIMRED_TSNE//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'dimred_umap': $( if [ ! -z ${VIASH_PAR_DIMRED_UMAP+x} ]; then echo "r'${VIASH_PAR_DIMRED_UMAP//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'immune_cell_classification': $( if [ ! -z ${VIASH_PAR_IMMUNE_CELL_CLASSIFICATION+x} ]; then echo "r'${VIASH_PAR_IMMUNE_CELL_CLASSIFICATION//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'sample_tag_metrics': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_METRICS+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_METRICS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'sample_tag_calls': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_CALLS+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_CALLS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'sample_tag_counts': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_COUNTS+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_COUNTS//\\'/\\'\\"\\'\\"r\\'}'.split(';')"; else echo None; fi ), + 'sample_tag_counts_unassigned': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAG_COUNTS_UNASSIGNED//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'vdj_metrics': $( if [ ! -z ${VIASH_PAR_VDJ_METRICS+x} ]; then echo "r'${VIASH_PAR_VDJ_METRICS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'vdj_per_cell': $( if [ ! -z ${VIASH_PAR_VDJ_PER_CELL+x} ]; then echo "r'${VIASH_PAR_VDJ_PER_CELL//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'vdj_per_cell_uncorrected': $( if [ ! -z ${VIASH_PAR_VDJ_PER_CELL_UNCORRECTED+x} ]; then echo "r'${VIASH_PAR_VDJ_PER_CELL_UNCORRECTED//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'vdj_dominant_contigs': $( if [ ! -z ${VIASH_PAR_VDJ_DOMINANT_CONTIGS+x} ]; then echo "r'${VIASH_PAR_VDJ_DOMINANT_CONTIGS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'vdj_unfiltered_contigs': $( if [ ! -z ${VIASH_PAR_VDJ_UNFILTERED_CONTIGS+x} ]; then echo "r'${VIASH_PAR_VDJ_UNFILTERED_CONTIGS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_metrics': $( if [ ! -z ${VIASH_PAR_ATAC_METRICS+x} ]; then echo "r'${VIASH_PAR_ATAC_METRICS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_metrics_json': $( if [ ! -z ${VIASH_PAR_ATAC_METRICS_JSON+x} ]; then echo "r'${VIASH_PAR_ATAC_METRICS_JSON//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_fragments': $( if [ ! -z ${VIASH_PAR_ATAC_FRAGMENTS+x} ]; then echo "r'${VIASH_PAR_ATAC_FRAGMENTS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_fragments_index': $( if [ ! -z ${VIASH_PAR_ATAC_FRAGMENTS_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_FRAGMENTS_INDEX//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_transposase_sites': $( if [ ! -z ${VIASH_PAR_ATAC_TRANSPOSASE_SITES+x} ]; then echo "r'${VIASH_PAR_ATAC_TRANSPOSASE_SITES//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_transposase_sites_index': $( if [ ! -z ${VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_TRANSPOSASE_SITES_INDEX//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_peaks': $( if [ ! -z ${VIASH_PAR_ATAC_PEAKS+x} ]; then echo "r'${VIASH_PAR_ATAC_PEAKS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_peaks_index': $( if [ ! -z ${VIASH_PAR_ATAC_PEAKS_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_PEAKS_INDEX//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_peak_annotation': $( if [ ! -z ${VIASH_PAR_ATAC_PEAK_ANNOTATION+x} ]; then echo "r'${VIASH_PAR_ATAC_PEAK_ANNOTATION//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_cell_by_peak': $( if [ ! -z ${VIASH_PAR_ATAC_CELL_BY_PEAK+x} ]; then echo "r'${VIASH_PAR_ATAC_CELL_BY_PEAK//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_cell_by_peak_unfiltered': $( if [ ! -z ${VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED+x} ]; then echo "r'${VIASH_PAR_ATAC_CELL_BY_PEAK_UNFILTERED//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_bam': $( if [ ! -z ${VIASH_PAR_ATAC_BAM+x} ]; then echo "r'${VIASH_PAR_ATAC_BAM//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'atac_bam_index': $( if [ ! -z ${VIASH_PAR_ATAC_BAM_INDEX+x} ]; then echo "r'${VIASH_PAR_ATAC_BAM_INDEX//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'protein_aggregates_experimental': $( if [ ! -z ${VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL+x} ]; then echo "r'${VIASH_PAR_PROTEIN_AGGREGATES_EXPERIMENTAL//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'cell_calling_data': $( if [ ! -z ${VIASH_PAR_CELL_CALLING_DATA+x} ]; then echo "r'${VIASH_PAR_CELL_CALLING_DATA//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'cell_calling_bioproduct_algorithm': $( if [ ! -z ${VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM+x} ]; then echo "r'${VIASH_PAR_CELL_CALLING_BIOPRODUCT_ALGORITHM//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'cell_calling_atac_algorithm': $( if [ ! -z ${VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM+x} ]; then echo "r'${VIASH_PAR_CELL_CALLING_ATAC_ALGORITHM//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'exact_cell_count': $( if [ ! -z ${VIASH_PAR_EXACT_CELL_COUNT+x} ]; then echo "int(r'${VIASH_PAR_EXACT_CELL_COUNT//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'expected_cell_count': $( if [ ! -z ${VIASH_PAR_EXPECTED_CELL_COUNT+x} ]; then echo "int(r'${VIASH_PAR_EXPECTED_CELL_COUNT//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'exclude_intronic_reads': $( if [ ! -z ${VIASH_PAR_EXCLUDE_INTRONIC_READS+x} ]; then echo "r'${VIASH_PAR_EXCLUDE_INTRONIC_READS//\\'/\\'\\"\\'\\"r\\'}'.lower() == 'true'"; else echo None; fi ), + 'sample_tags_version': $( if [ ! -z ${VIASH_PAR_SAMPLE_TAGS_VERSION+x} ]; then echo "r'${VIASH_PAR_SAMPLE_TAGS_VERSION//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'tag_names': $( if [ ! -z ${VIASH_PAR_TAG_NAMES+x} ]; then echo "r'${VIASH_PAR_TAG_NAMES//\\'/\\'\\"\\'\\"r\\'}'.split(';')"; else echo None; fi ), + 'vdj_version': $( if [ ! -z ${VIASH_PAR_VDJ_VERSION+x} ]; then echo "r'${VIASH_PAR_VDJ_VERSION//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'predefined_atac_peaks': $( if [ ! -z ${VIASH_PAR_PREDEFINED_ATAC_PEAKS+x} ]; then echo "r'${VIASH_PAR_PREDEFINED_ATAC_PEAKS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'run_name': $( if [ ! -z ${VIASH_PAR_RUN_NAME+x} ]; then echo "r'${VIASH_PAR_RUN_NAME//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'generate_bam': $( if [ ! -z ${VIASH_PAR_GENERATE_BAM+x} ]; then echo "r'${VIASH_PAR_GENERATE_BAM//\\'/\\'\\"\\'\\"r\\'}'.lower() == 'true'"; else echo None; fi ), + 'long_reads': $( if [ ! -z ${VIASH_PAR_LONG_READS+x} ]; then echo "r'${VIASH_PAR_LONG_READS//\\'/\\'\\"\\'\\"r\\'}'.lower() == 'true'"; else echo None; fi ), + 'custom_star_params': $( if [ ! -z ${VIASH_PAR_CUSTOM_STAR_PARAMS+x} ]; then echo "r'${VIASH_PAR_CUSTOM_STAR_PARAMS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'custom_bwa_mem2_params': $( if [ ! -z ${VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS+x} ]; then echo "r'${VIASH_PAR_CUSTOM_BWA_MEM2_PARAMS//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'parallel': $( if [ ! -z ${VIASH_PAR_PARALLEL+x} ]; then echo "r'${VIASH_PAR_PARALLEL//\\'/\\'\\"\\'\\"r\\'}'.lower() == 'true'"; else echo None; fi ), + 'timestamps': $( if [ ! -z ${VIASH_PAR_TIMESTAMPS+x} ]; then echo "r'${VIASH_PAR_TIMESTAMPS//\\'/\\'\\"\\'\\"r\\'}'.lower() == 'true'"; else echo None; fi ), + 'abseq_umi': $( if [ ! -z ${VIASH_PAR_ABSEQ_UMI+x} ]; then echo "int(r'${VIASH_PAR_ABSEQ_UMI//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'target_analysis': $( if [ ! -z ${VIASH_PAR_TARGET_ANALYSIS+x} ]; then echo "r'${VIASH_PAR_TARGET_ANALYSIS//\\'/\\'\\"\\'\\"r\\'}'.lower() == 'true'"; else echo None; fi ), + 'vdj_jgene_evalue': $( if [ ! -z ${VIASH_PAR_VDJ_JGENE_EVALUE+x} ]; then echo "float(r'${VIASH_PAR_VDJ_JGENE_EVALUE//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'vdj_vgene_evalue': $( if [ ! -z ${VIASH_PAR_VDJ_VGENE_EVALUE+x} ]; then echo "float(r'${VIASH_PAR_VDJ_VGENE_EVALUE//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'write_filtered_reads': $( if [ ! -z ${VIASH_PAR_WRITE_FILTERED_READS+x} ]; then echo "r'${VIASH_PAR_WRITE_FILTERED_READS//\\'/\\'\\"\\'\\"r\\'}'.lower() == 'true'"; else echo None; fi ) +} +meta = { + 'name': $( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "r'${VIASH_META_NAME//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'functionality_name': $( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "r'${VIASH_META_FUNCTIONALITY_NAME//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'resources_dir': $( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "r'${VIASH_META_RESOURCES_DIR//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'executable': $( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "r'${VIASH_META_EXECUTABLE//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'config': $( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "r'${VIASH_META_CONFIG//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'temp_dir': $( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "r'${VIASH_META_TEMP_DIR//\\'/\\'\\"\\'\\"r\\'}'"; else echo None; fi ), + 'cpus': $( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "int(r'${VIASH_META_CPUS//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_b': $( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "int(r'${VIASH_META_MEMORY_B//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_kb': $( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "int(r'${VIASH_META_MEMORY_KB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_mb': $( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "int(r'${VIASH_META_MEMORY_MB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_gb': $( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "int(r'${VIASH_META_MEMORY_GB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_tb': $( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "int(r'${VIASH_META_MEMORY_TB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_pb': $( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "int(r'${VIASH_META_MEMORY_PB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_kib': $( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_KIB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_mib': $( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_MIB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_gib': $( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_GIB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_tib': $( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_TIB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ), + 'memory_pib': $( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "int(r'${VIASH_META_MEMORY_PIB//\\'/\\'\\"\\'\\"r\\'}')"; else echo None; fi ) +} +dep = { + +} + +## VIASH END + +def clean_arg(argument): + argument["clean_name"] = argument["name"].lstrip("-") + return argument + +def read_config(path: str) -> dict[str, Any]: + with open(path, 'r') as f: + config = yaml.safe_load(f) + + config["arguments"] = [ + clean_arg(arg) + for grp in config["argument_groups"] + for arg in grp["arguments"] + ] + + return config + +def strip_margin(text: str) -> str: + return re.sub('(\\\\n?)[ \\\\t]*\\\\|', '\\\\\\\\1', text) + +def process_params(par: dict[str, Any], config, temp_dir: str) -> str: + # check input parameters + assert par["reads"] or par["reads_atac"], "Pass at least one set of inputs to --reads or --reads_atac." + + # output to temp dir if output_dir was not passed + if not par["output_dir"]: + par["output_dir"] = os.path.join(temp_dir, "output") + + # checking sample prefix + if par["run_name"] and re.match("[^A-Za-z0-9]", par["run_name"]): + print("--run_name should only consist of letters, numbers or hyphens. Replacing all '[^A-Za-z0-9]' with '-'.", flush=True) + par["run_name"] = re.sub("[^A-Za-z0-9\\\\\\\\-]", "-", par["run_name"]) + + # make paths absolute + for argument in config["arguments"]: + arg_clean_name = argument["clean_name"] + if not par[arg_clean_name] or not argument["type"] == "file": + continue + par_value = par[arg_clean_name] + if isinstance(par_value, list): + par_value_absolute = list(map(os.path.abspath, par_value)) + else: + par_value_absolute = os.path.abspath(par_value) + par[arg_clean_name] = par_value_absolute + + return par + +def generate_config(par: dict[str, Any], config) -> str: + content_list = [strip_margin(f"""\\\\ +#!/usr/bin/env cwl-runner + +cwl:tool: rhapsody +""")] + + for argument in config["arguments"]: + arg_clean_name = argument["clean_name"] + arg_par_value = par[arg_clean_name] + arg_info = argument.get("info") or {} # Note: .info might be None + config_key = arg_info.get("config_key") + if arg_par_value and config_key: + + if argument["type"] == "file": + content = strip_margin(f"""\\\\ +{config_key}: +""") + if isinstance(arg_par_value, list): + for file in arg_par_value: + content += strip_margin(f"""\\\\ + - class: File + location: "{file}" +""") + else: + content += strip_margin(f"""\\\\ + class: File + location: "{arg_par_value}" +""") + content_list.append(content) + else: + content_list.append(strip_margin(f"""\\\\ +{config_key}: {arg_par_value} +""")) + + ## Write config to file + return ''.join(content_list) + +def generate_config_file(par: dict[str, Any], config: dict[str, Any], temp_dir: str) -> str: + config_file = os.path.join(temp_dir, "config.yml") + config_content = generate_config(par, config) + with open(config_file, "w") as f: + f.write(config_content) + return config_file + +def generate_cwl_file(meta: dict[str, Any], dir: str) -> str: + # create cwl file (if need be) + # orig_cwl_file=os.path.join(meta["resources_dir"], "rhapsody_pipeline_2.2.1_nodocker.cwl") + orig_cwl_file="/var/bd_rhapsody_cwl/v2.2.1/rhapsody_pipeline_2.2.1.cwl" + + if not meta["memory_mb"] and not meta["cpus"]: + return os.path.abspath(orig_cwl_file) + + # Inject computational requirements into pipeline + cwl_file = os.path.join(dir, "pipeline.cwl") + + # Read in the file + with open(orig_cwl_file, 'r') as file : + cwl_data = file.read() + + # Inject computational requirements into pipeline + if meta["memory_mb"]: + memory = int(meta["memory_mb"]) - 2000 # keep 2gb for OS + cwl_data = re.sub('"ramMin": [^\\\\n]*[^,](,?)\\\\n', f'"ramMin": {memory}\\\\\\\\1\\\\n', cwl_data) + if meta["cpus"]: + cwl_data = re.sub('"coresMin": [^\\\\n]*[^,](,?)\\\\n', f'"coresMin": {meta["cpus"]}\\\\\\\\1\\\\n', cwl_data) + + # Write the file out again + with open(cwl_file, 'w') as file: + file.write(cwl_data) + + return os.path.abspath(cwl_file) + +def copy_outputs(par: dict[str, Any], config: dict[str, Any]): + for arg in config["arguments"]: + par_value = par[arg["clean_name"]] + if par_value and arg["type"] == "file" and arg["direction"] == "output": + # example template: '[sample_name]_(assay)_cell_type_experimental.csv' + template = (arg.get("info") or {}).get("template") # Note: .info might be None + if template: + template_glob = template\\\\ + .replace("[sample_name]", par["run_name"])\\\\ + .replace("(assay)", "*")\\\\ + .replace("[number]", "*") + files = glob.glob(os.path.join(par["output_dir"], template_glob)) + if not files and arg["required"]: + raise ValueError(f"Expected output file '{template_glob}' not found.") + elif len(files) > 1 and not arg["multiple"]: + raise ValueError(f"Expected single output file '{template_glob}', but found multiple.") + + if not arg["multiple"]: + shutil.copy(files[0], par_value) + else: + # replace '*' in par_value with index + for i, file in enumerate(files): + shutil.copy(file, par_value.replace("*", str(i))) + + +def main(par: dict[str, Any], meta: dict[str, Any], temp_dir: str): + config = read_config(meta["config"]) + + # Preprocess params + par = process_params(par, config, temp_dir) + + ## Process parameters + cmd = [ + "cwl-runner", + "--no-container", + "--preserve-entire-environment", + "--outdir", par["output_dir"], + ] + + if par["parallel"]: + cmd.append("--parallel") + + if par["timestamps"]: + cmd.append("--timestamps") + + # Create cwl file (if need be) + cwl_file = generate_cwl_file(meta, temp_dir) + cmd.append(cwl_file) + + # Create params file + config_file = generate_config_file(par, config, temp_dir) + cmd.append(config_file) + + # keep environment variables but set TMPDIR to temp_dir + env = dict(os.environ) + env["TMPDIR"] = temp_dir + + # Create output dir if not exists + if not os.path.exists(par["output_dir"]): + os.makedirs(par["output_dir"]) + + # Run command + print("> " + ' '.join(cmd), flush=True) + _ = subprocess.run( + cmd, + cwd=os.path.dirname(config_file), + env=env, + check=True + ) + + # Copy outputs + copy_outputs(par, config) + +if __name__ == "__main__": + with tempfile.TemporaryDirectory(prefix="cwl-bd_rhapsody-", dir=meta["temp_dir"]) as temp_dir: + main(par, meta, temp_dir) +VIASHMAIN +python -B "$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/bd_rhapsody/bd_rhapsody_sequence_analysis", + "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/bd_rhapsody/bd_rhapsody_sequence_analysis/nextflow.config b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/nextflow.config new file mode 100644 index 00000000..6a33fdde --- /dev/null +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/nextflow.config @@ -0,0 +1,126 @@ +manifest { + name = 'bd_rhapsody/bd_rhapsody_sequence_analysis' + mainScript = 'main.nf' + nextflowVersion = '!>=20.12.1-edge' + version = 'main' + description = 'BD Rhapsody Sequence Analysis CWL pipeline v2.2.\n\nThis pipeline performs analysis of single-cell multiomic sequence read (FASTQ) data. The supported\nsequencing libraries are those generated by the BD Rhapsody™ assay kits, including: Whole Transcriptome\nmRNA (WTA), Targeted mRNA, AbSeq Antibody-Oligonucleotides (ABC), Single-Cell Multiplexing (SMK),\nTCR/BCR (VDJ), and ATAC-Seq.\n' + author = 'Robrecht Cannoodt, Weiwei Schultz' +} + +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/bd_rhapsody/bd_rhapsody_sequence_analysis/nextflow_schema.json b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/nextflow_schema.json new file mode 100644 index 00000000..96a2168b --- /dev/null +++ b/target/nextflow/bd_rhapsody/bd_rhapsody_sequence_analysis/nextflow_schema.json @@ -0,0 +1,971 @@ +{ +"$schema": "http://json-schema.org/draft-07/schema", +"title": "bd_rhapsody_sequence_analysis", +"description": "BD Rhapsody Sequence Analysis CWL pipeline v2.2.\n\nThis pipeline performs analysis of single-cell multiomic sequence read (FASTQ) data. The supported\nsequencing libraries are those generated by the BD Rhapsody\u2122 assay kits, including: Whole Transcriptome\nmRNA (WTA), Targeted mRNA, AbSeq Antibody-Oligonucleotides (ABC), Single-Cell Multiplexing (SMK),\nTCR/BCR (VDJ), and ATAC-Seq.\n", +"type": "object", +"definitions": { + + + + "inputs" : { + "title": "Inputs", + "type": "object", + "description": "No description", + "properties": { + + + "reads": { + "type": + "string", + "description": "Type: List of `file`, example: `WTALibrary_S1_L001_R1_001.fastq.gz;WTALibrary_S1_L001_R2_001.fastq.gz`, multiple_sep: `\";\"`. Reads (optional) - Path to your FASTQ", + "help_text": "Type: List of `file`, example: `WTALibrary_S1_L001_R1_001.fastq.gz;WTALibrary_S1_L001_R2_001.fastq.gz`, multiple_sep: `\";\"`. Reads (optional) - Path to your FASTQ.GZ formatted read files from libraries that may include:\n\n- WTA mRNA\n- Targeted mRNA\n- AbSeq\n- Sample Multiplexing\n- VDJ\n\nYou may specify as many R1/R2 read pairs as you want.\n" + + } + + + , + "reads_atac": { + "type": + "string", + "description": "Type: List of `file`, example: `ATACLibrary_S2_L001_R1_001.fastq.gz;ATACLibrary_S2_L001_R2_001.fastq.gz;ATACLibrary_S2_L001_I2_001.fastq.gz`, multiple_sep: `\";\"`. Path to your FASTQ", + "help_text": "Type: List of `file`, example: `ATACLibrary_S2_L001_R1_001.fastq.gz;ATACLibrary_S2_L001_R2_001.fastq.gz;ATACLibrary_S2_L001_I2_001.fastq.gz`, multiple_sep: `\";\"`. Path to your FASTQ.GZ formatted read files from ATAC-Seq libraries.\nYou may specify as many R1/R2/I2 files as you want.\n" + + } + + +} +}, + + + "outputs" : { + "title": "Outputs", + "type": "object", + "description": "Outputs for all pipeline runs", + "properties": { + + + "output_dir": { + "type": + "string", + "description": "Type: `file`, required, default: `$id.$key.output_dir.output_dir`, example: `output_dir`. The unprocessed output directory containing all the outputs from the pipeline", + "help_text": "Type: `file`, required, default: `$id.$key.output_dir.output_dir`, example: `output_dir`. The unprocessed output directory containing all the outputs from the pipeline." + , + "default": "$id.$key.output_dir.output_dir" + } + + + , + "output_seurat": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.output_seurat.rds`, example: `output_seurat.rds`. Single-cell analysis tool inputs", + "help_text": "Type: `file`, default: `$id.$key.output_seurat.rds`, example: `output_seurat.rds`. Single-cell analysis tool inputs. Seurat (.rds) input file containing RSEC molecules data table and all cell annotation metadata." + , + "default": "$id.$key.output_seurat.rds" + } + + + , + "output_mudata": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.output_mudata.h5mu`, example: `output_mudata.h5mu`. Single-cell analysis tool inputs", + "help_text": "Type: `file`, default: `$id.$key.output_mudata.h5mu`, example: `output_mudata.h5mu`. Single-cell analysis tool inputs. Scanpy / Muon input file containing RSEC molecules data table and all cell annotation metadata." + , + "default": "$id.$key.output_mudata.h5mu" + } + + + , + "metrics_summary": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.metrics_summary.csv`, example: `metrics_summary.csv`. Metrics Summary", + "help_text": "Type: `file`, default: `$id.$key.metrics_summary.csv`, example: `metrics_summary.csv`. Metrics Summary. Report containing sequencing, molecules, and cell metrics." + , + "default": "$id.$key.metrics_summary.csv" + } + + + , + "pipeline_report": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.pipeline_report.html`, example: `pipeline_report.html`. Pipeline Report", + "help_text": "Type: `file`, default: `$id.$key.pipeline_report.html`, example: `pipeline_report.html`. Pipeline Report. Summary report containing the results from the sequencing analysis pipeline run." + , + "default": "$id.$key.pipeline_report.html" + } + + + , + "rsec_mols_per_cell": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.rsec_mols_per_cell.zip`, example: `RSEC_MolsPerCell_MEX.zip`. Molecules per bioproduct per cell bassed on RSEC", + "help_text": "Type: `file`, default: `$id.$key.rsec_mols_per_cell.zip`, example: `RSEC_MolsPerCell_MEX.zip`. Molecules per bioproduct per cell bassed on RSEC" + , + "default": "$id.$key.rsec_mols_per_cell.zip" + } + + + , + "dbec_mols_per_cell": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.dbec_mols_per_cell.zip`, example: `DBEC_MolsPerCell_MEX.zip`. Molecules per bioproduct per cell bassed on DBEC", + "help_text": "Type: `file`, default: `$id.$key.dbec_mols_per_cell.zip`, example: `DBEC_MolsPerCell_MEX.zip`. Molecules per bioproduct per cell bassed on DBEC. DBEC data table is only output if the experiment includes targeted mRNA or AbSeq bioproducts." + , + "default": "$id.$key.dbec_mols_per_cell.zip" + } + + + , + "rsec_mols_per_cell_unfiltered": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.rsec_mols_per_cell_unfiltered.zip`, example: `RSEC_MolsPerCell_Unfiltered_MEX.zip`. Unfiltered tables containing all cell labels with \u226510 reads", + "help_text": "Type: `file`, default: `$id.$key.rsec_mols_per_cell_unfiltered.zip`, example: `RSEC_MolsPerCell_Unfiltered_MEX.zip`. Unfiltered tables containing all cell labels with \u226510 reads." + , + "default": "$id.$key.rsec_mols_per_cell_unfiltered.zip" + } + + + , + "bam": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.bam.bam`, example: `BioProduct.bam`. Alignment file of R2 with associated R1 annotations for Bioproduct", + "help_text": "Type: `file`, default: `$id.$key.bam.bam`, example: `BioProduct.bam`. Alignment file of R2 with associated R1 annotations for Bioproduct." + , + "default": "$id.$key.bam.bam" + } + + + , + "bam_index": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.bam_index.bai`, example: `BioProduct.bam.bai`. Index file for the alignment file", + "help_text": "Type: `file`, default: `$id.$key.bam_index.bai`, example: `BioProduct.bam.bai`. Index file for the alignment file." + , + "default": "$id.$key.bam_index.bai" + } + + + , + "bioproduct_stats": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.bioproduct_stats.csv`, example: `Bioproduct_Stats.csv`. Bioproduct Stats", + "help_text": "Type: `file`, default: `$id.$key.bioproduct_stats.csv`, example: `Bioproduct_Stats.csv`. Bioproduct Stats. Metrics from RSEC and DBEC Unique Molecular Identifier adjustment algorithms on a per-bioproduct basis." + , + "default": "$id.$key.bioproduct_stats.csv" + } + + + , + "dimred_tsne": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.dimred_tsne.csv`, example: `tSNE_coordinates.csv`. t-SNE dimensionality reduction coordinates per cell index", + "help_text": "Type: `file`, default: `$id.$key.dimred_tsne.csv`, example: `tSNE_coordinates.csv`. t-SNE dimensionality reduction coordinates per cell index" + , + "default": "$id.$key.dimred_tsne.csv" + } + + + , + "dimred_umap": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.dimred_umap.csv`, example: `UMAP_coordinates.csv`. UMAP dimensionality reduction coordinates per cell index", + "help_text": "Type: `file`, default: `$id.$key.dimred_umap.csv`, example: `UMAP_coordinates.csv`. UMAP dimensionality reduction coordinates per cell index" + , + "default": "$id.$key.dimred_umap.csv" + } + + + , + "immune_cell_classification": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.immune_cell_classification.csv`, example: `Immune_Cell_Classification.csv`. Immune Cell Classification", + "help_text": "Type: `file`, default: `$id.$key.immune_cell_classification.csv`, example: `Immune_Cell_Classification.csv`. Immune Cell Classification. Cell type classification based on the expression of immune cell markers." + , + "default": "$id.$key.immune_cell_classification.csv" + } + + +} +}, + + + "references" : { + "title": "References", + "type": "object", + "description": "Assay type will be inferred from the provided reference(s).\nDo not provide both reference_archive and targeted_reference at the same time.\n\nValid reference input combinations:\n - reference_archive: WTA only\n - reference_archive \u0026 abseq_reference: WTA + AbSeq\n - reference_archive \u0026 supplemental_reference: WTA + extra transgenes\n - reference_archive \u0026 abseq_reference \u0026 supplemental_reference: WTA + AbSeq + extra transgenes\n - reference_archive: WTA + ATAC or ATAC only\n - reference_archive \u0026 supplemental_reference: WTA + ATAC + extra transgenes\n - targeted_reference: Targeted only\n - targeted_reference \u0026 abseq_reference: Targeted + AbSeq\n - abseq_reference: AbSeq only\n\nThe reference_archive can be generated with the bd_rhapsody_make_reference component.\nAlternatively, BD also provides standard references which can be downloaded from these locations:\n\n - Human: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Human_WTA_2023-02.tar.gz\n - Mouse: https://bd-rhapsody-public.s3.amazonaws.com/Rhapsody-WTA/Pipeline-version2.x_WTA_references/RhapRef_Mouse_WTA_2023-02.tar.gz\n", + "properties": { + + + "reference_archive": { + "type": + "string", + "description": "Type: `file`, example: `RhapRef_Human_WTA_2023-02.tar.gz`. Path to Rhapsody WTA Reference in the tar", + "help_text": "Type: `file`, example: `RhapRef_Human_WTA_2023-02.tar.gz`. Path to Rhapsody WTA Reference in the tar.gz format.\n\nStructure of the reference archive:\n\n- `BD_Rhapsody_Reference_Files/`: top level folder\n - `star_index/`: sub-folder containing STAR index, that is files created with `STAR --runMode genomeGenerate`\n - GTF for gene-transcript-annotation e.g. \"gencode.v43.primary_assembly.annotation.gtf\"\n" + + } + + + , + "targeted_reference": { + "type": + "string", + "description": "Type: List of `file`, example: `BD_Rhapsody_Immune_Response_Panel_Hs.fasta`, multiple_sep: `\";\"`. Path to the targeted reference file in FASTA format", + "help_text": "Type: List of `file`, example: `BD_Rhapsody_Immune_Response_Panel_Hs.fasta`, multiple_sep: `\";\"`. Path to the targeted reference file in FASTA format.\n" + + } + + + , + "abseq_reference": { + "type": + "string", + "description": "Type: List of `file`, example: `AbSeq_reference.fasta`, multiple_sep: `\";\"`. Path to the AbSeq reference file in FASTA format", + "help_text": "Type: List of `file`, example: `AbSeq_reference.fasta`, multiple_sep: `\";\"`. Path to the AbSeq reference file in FASTA format. Only needed if BD AbSeq Ab-Oligos are used." + + } + + + , + "supplemental_reference": { + "type": + "string", + "description": "Type: List of `file`, example: `supplemental_reference.fasta`, multiple_sep: `\";\"`. Path to the supplemental reference file in FASTA format", + "help_text": "Type: List of `file`, example: `supplemental_reference.fasta`, multiple_sep: `\";\"`. Path to the supplemental reference file in FASTA format. Only needed if there are additional transgene sequences to be aligned against in a WTA assay experiment." + + } + + +} +}, + + + "multiplex outputs" : { + "title": "Multiplex outputs", + "type": "object", + "description": "Outputs when multiplex option is selected", + "properties": { + + + "sample_tag_metrics": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.sample_tag_metrics.csv`, example: `Sample_Tag_Metrics.csv`. Sample Tag Metrics", + "help_text": "Type: `file`, default: `$id.$key.sample_tag_metrics.csv`, example: `Sample_Tag_Metrics.csv`. Sample Tag Metrics. Metrics from the sample determination algorithm." + , + "default": "$id.$key.sample_tag_metrics.csv" + } + + + , + "sample_tag_calls": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.sample_tag_calls.csv`, example: `Sample_Tag_Calls.csv`. Sample Tag Calls", + "help_text": "Type: `file`, default: `$id.$key.sample_tag_calls.csv`, example: `Sample_Tag_Calls.csv`. Sample Tag Calls. Assigned Sample Tag for each putative cell" + , + "default": "$id.$key.sample_tag_calls.csv" + } + + + , + "sample_tag_counts": { + "type": + "string", + "description": "Type: List of `file`, default: `$id.$key.sample_tag_counts_*.zip`, example: `Sample_Tag1.zip`, multiple_sep: `\";\"`. Sample Tag Counts", + "help_text": "Type: List of `file`, default: `$id.$key.sample_tag_counts_*.zip`, example: `Sample_Tag1.zip`, multiple_sep: `\";\"`. Sample Tag Counts. Separate data tables and metric summary for cells assigned to each sample tag. Note: For putative cells that could not be assigned a specific Sample Tag, a Multiplet_and_Undetermined.zip file is also output." + , + "default": "$id.$key.sample_tag_counts_*.zip" + } + + + , + "sample_tag_counts_unassigned": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.sample_tag_counts_unassigned.zip`, example: `Multiplet_and_Undetermined.zip`. Sample Tag Counts Unassigned", + "help_text": "Type: `file`, default: `$id.$key.sample_tag_counts_unassigned.zip`, example: `Multiplet_and_Undetermined.zip`. Sample Tag Counts Unassigned. Data table and metric summary for cells that could not be assigned a specific Sample Tag." + , + "default": "$id.$key.sample_tag_counts_unassigned.zip" + } + + +} +}, + + + "vdj outputs" : { + "title": "VDJ Outputs", + "type": "object", + "description": "Outputs when VDJ option selected", + "properties": { + + + "vdj_metrics": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.vdj_metrics.csv`, example: `VDJ_Metrics.csv`. VDJ Metrics", + "help_text": "Type: `file`, default: `$id.$key.vdj_metrics.csv`, example: `VDJ_Metrics.csv`. VDJ Metrics. Overall metrics from the VDJ analysis." + , + "default": "$id.$key.vdj_metrics.csv" + } + + + , + "vdj_per_cell": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.vdj_per_cell.csv`, example: `VDJ_perCell.csv`. VDJ Per Cell", + "help_text": "Type: `file`, default: `$id.$key.vdj_per_cell.csv`, example: `VDJ_perCell.csv`. VDJ Per Cell. Cell specific read and molecule counts, VDJ gene segments, CDR3 sequences, paired chains, and cell type." + , + "default": "$id.$key.vdj_per_cell.csv" + } + + + , + "vdj_per_cell_uncorrected": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.vdj_per_cell_uncorrected.csv`, example: `VDJ_perCell_uncorrected.csv`. VDJ Per Cell Uncorrected", + "help_text": "Type: `file`, default: `$id.$key.vdj_per_cell_uncorrected.csv`, example: `VDJ_perCell_uncorrected.csv`. VDJ Per Cell Uncorrected. Cell specific read and molecule counts, VDJ gene segments, CDR3 sequences, paired chains, and cell type." + , + "default": "$id.$key.vdj_per_cell_uncorrected.csv" + } + + + , + "vdj_dominant_contigs": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.vdj_dominant_contigs.csv`, example: `VDJ_Dominant_Contigs_AIRR.csv`. VDJ Dominant Contigs", + "help_text": "Type: `file`, default: `$id.$key.vdj_dominant_contigs.csv`, example: `VDJ_Dominant_Contigs_AIRR.csv`. VDJ Dominant Contigs. Dominant contig for each cell label chain type combination (putative cells only)." + , + "default": "$id.$key.vdj_dominant_contigs.csv" + } + + + , + "vdj_unfiltered_contigs": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.vdj_unfiltered_contigs.csv`, example: `VDJ_Unfiltered_Contigs_AIRR.csv`. VDJ Unfiltered Contigs", + "help_text": "Type: `file`, default: `$id.$key.vdj_unfiltered_contigs.csv`, example: `VDJ_Unfiltered_Contigs_AIRR.csv`. VDJ Unfiltered Contigs. All contigs that were assembled and annotated successfully (all cells)." + , + "default": "$id.$key.vdj_unfiltered_contigs.csv" + } + + +} +}, + + + "atac-seq outputs" : { + "title": "ATAC-Seq outputs", + "type": "object", + "description": "Outputs when ATAC-Seq option selected", + "properties": { + + + "atac_metrics": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_metrics.csv`, example: `ATAC_Metrics.csv`. ATAC Metrics", + "help_text": "Type: `file`, default: `$id.$key.atac_metrics.csv`, example: `ATAC_Metrics.csv`. ATAC Metrics. Overall metrics from the ATAC-Seq analysis." + , + "default": "$id.$key.atac_metrics.csv" + } + + + , + "atac_metrics_json": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_metrics_json.json`, example: `ATAC_Metrics.json`. ATAC Metrics JSON", + "help_text": "Type: `file`, default: `$id.$key.atac_metrics_json.json`, example: `ATAC_Metrics.json`. ATAC Metrics JSON. Overall metrics from the ATAC-Seq analysis in JSON format." + , + "default": "$id.$key.atac_metrics_json.json" + } + + + , + "atac_fragments": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_fragments.gz`, example: `ATAC_Fragments.bed.gz`. ATAC Fragments", + "help_text": "Type: `file`, default: `$id.$key.atac_fragments.gz`, example: `ATAC_Fragments.bed.gz`. ATAC Fragments. Chromosomal location, cell index, and read support for each fragment detected" + , + "default": "$id.$key.atac_fragments.gz" + } + + + , + "atac_fragments_index": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_fragments_index.tbi`, example: `ATAC_Fragments.bed.gz.tbi`. Index of ATAC Fragments", + "help_text": "Type: `file`, default: `$id.$key.atac_fragments_index.tbi`, example: `ATAC_Fragments.bed.gz.tbi`. Index of ATAC Fragments." + , + "default": "$id.$key.atac_fragments_index.tbi" + } + + + , + "atac_transposase_sites": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_transposase_sites.gz`, example: `ATAC_Transposase_Sites.bed.gz`. ATAC Transposase Sites", + "help_text": "Type: `file`, default: `$id.$key.atac_transposase_sites.gz`, example: `ATAC_Transposase_Sites.bed.gz`. ATAC Transposase Sites. Chromosomal location, cell index, and read support for each transposase site detected" + , + "default": "$id.$key.atac_transposase_sites.gz" + } + + + , + "atac_transposase_sites_index": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_transposase_sites_index.tbi`, example: `ATAC_Transposase_Sites.bed.gz.tbi`. Index of ATAC Transposase Sites", + "help_text": "Type: `file`, default: `$id.$key.atac_transposase_sites_index.tbi`, example: `ATAC_Transposase_Sites.bed.gz.tbi`. Index of ATAC Transposase Sites." + , + "default": "$id.$key.atac_transposase_sites_index.tbi" + } + + + , + "atac_peaks": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_peaks.gz`, example: `ATAC_Peaks.bed.gz`. ATAC Peaks", + "help_text": "Type: `file`, default: `$id.$key.atac_peaks.gz`, example: `ATAC_Peaks.bed.gz`. ATAC Peaks. Peak regions of transposase activity" + , + "default": "$id.$key.atac_peaks.gz" + } + + + , + "atac_peaks_index": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_peaks_index.tbi`, example: `ATAC_Peaks.bed.gz.tbi`. Index of ATAC Peaks", + "help_text": "Type: `file`, default: `$id.$key.atac_peaks_index.tbi`, example: `ATAC_Peaks.bed.gz.tbi`. Index of ATAC Peaks." + , + "default": "$id.$key.atac_peaks_index.tbi" + } + + + , + "atac_peak_annotation": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_peak_annotation.gz`, example: `peak_annotation.tsv.gz`. ATAC Peak Annotation", + "help_text": "Type: `file`, default: `$id.$key.atac_peak_annotation.gz`, example: `peak_annotation.tsv.gz`. ATAC Peak Annotation. Estimated annotation of peak-to-gene connections" + , + "default": "$id.$key.atac_peak_annotation.gz" + } + + + , + "atac_cell_by_peak": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_cell_by_peak.zip`, example: `ATAC_Cell_by_Peak_MEX.zip`. ATAC Cell by Peak", + "help_text": "Type: `file`, default: `$id.$key.atac_cell_by_peak.zip`, example: `ATAC_Cell_by_Peak_MEX.zip`. ATAC Cell by Peak. Peak regions of transposase activity per cell" + , + "default": "$id.$key.atac_cell_by_peak.zip" + } + + + , + "atac_cell_by_peak_unfiltered": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_cell_by_peak_unfiltered.zip`, example: `ATAC_Cell_by_Peak_Unfiltered_MEX.zip`. ATAC Cell by Peak Unfiltered", + "help_text": "Type: `file`, default: `$id.$key.atac_cell_by_peak_unfiltered.zip`, example: `ATAC_Cell_by_Peak_Unfiltered_MEX.zip`. ATAC Cell by Peak Unfiltered. Unfiltered file containing all cell labels with \u003e=1 transposase sites in peaks." + , + "default": "$id.$key.atac_cell_by_peak_unfiltered.zip" + } + + + , + "atac_bam": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_bam.bam`, example: `ATAC.bam`. ATAC BAM", + "help_text": "Type: `file`, default: `$id.$key.atac_bam.bam`, example: `ATAC.bam`. ATAC BAM. Alignment file for R1 and R2 with associated I2 annotations for ATAC-Seq. Only output if the BAM generation flag is set to true." + , + "default": "$id.$key.atac_bam.bam" + } + + + , + "atac_bam_index": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.atac_bam_index.bai`, example: `ATAC.bam.bai`. Index of ATAC BAM", + "help_text": "Type: `file`, default: `$id.$key.atac_bam_index.bai`, example: `ATAC.bam.bai`. Index of ATAC BAM." + , + "default": "$id.$key.atac_bam_index.bai" + } + + +} +}, + + + "abseq cell calling outputs" : { + "title": "AbSeq Cell Calling outputs", + "type": "object", + "description": "Outputs when Cell Calling Abseq is selected", + "properties": { + + + "protein_aggregates_experimental": { + "type": + "string", + "description": "Type: `file`, default: `$id.$key.protein_aggregates_experimental.csv`, example: `Protein_Aggregates_Experimental.csv`. Protein Aggregates Experimental", + "help_text": "Type: `file`, default: `$id.$key.protein_aggregates_experimental.csv`, example: `Protein_Aggregates_Experimental.csv`. Protein Aggregates Experimental" + , + "default": "$id.$key.protein_aggregates_experimental.csv" + } + + +} +}, + + + "putative cell calling settings" : { + "title": "Putative Cell Calling Settings", + "type": "object", + "description": "No description", + "properties": { + + + "cell_calling_data": { + "type": + "string", + "description": "Type: `string`, example: `mRNA`, choices: ``mRNA`, `AbSeq`, `ATAC`, `mRNA_and_ATAC``. Specify the dataset to be used for putative cell calling: mRNA, AbSeq, ATAC, mRNA_and_ATAC\n\nFor putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above", + "help_text": "Type: `string`, example: `mRNA`, choices: ``mRNA`, `AbSeq`, `ATAC`, `mRNA_and_ATAC``. Specify the dataset to be used for putative cell calling: mRNA, AbSeq, ATAC, mRNA_and_ATAC\n\nFor putative cell calling using an AbSeq dataset, please provide an AbSeq_Reference fasta file above.\n\nFor putative cell calling using an ATAC dataset, please provide a WTA+ATAC-Seq Reference_Archive file above.\n\nThe default data for putative cell calling, will be determined the following way:\n\n- If mRNA Reads and ATAC Reads exist: mRNA_and_ATAC\n- If only ATAC Reads exist: ATAC\n- Otherwise: mRNA\n", + "enum": ["mRNA", "AbSeq", "ATAC", "mRNA_and_ATAC"] + + + } + + + , + "cell_calling_bioproduct_algorithm": { + "type": + "string", + "description": "Type: `string`, example: `Basic`, choices: ``Basic`, `Refined``. Specify the bioproduct algorithm to be used for putative cell calling: Basic or Refined\n\nBy default, the Basic algorithm will be used for putative cell calling", + "help_text": "Type: `string`, example: `Basic`, choices: ``Basic`, `Refined``. Specify the bioproduct algorithm to be used for putative cell calling: Basic or Refined\n\nBy default, the Basic algorithm will be used for putative cell calling.\n", + "enum": ["Basic", "Refined"] + + + } + + + , + "cell_calling_atac_algorithm": { + "type": + "string", + "description": "Type: `string`, example: `Basic`, choices: ``Basic`, `Refined``. Specify the ATAC-seq algorithm to be used for putative cell calling: Basic or Refined\n\nBy default, the Basic algorithm will be used for putative cell calling", + "help_text": "Type: `string`, example: `Basic`, choices: ``Basic`, `Refined``. Specify the ATAC-seq algorithm to be used for putative cell calling: Basic or Refined\n\nBy default, the Basic algorithm will be used for putative cell calling.\n", + "enum": ["Basic", "Refined"] + + + } + + + , + "exact_cell_count": { + "type": + "integer", + "description": "Type: `integer`, example: `10000`. Set a specific number (\u003e=1) of cells as putative, based on those with the highest error-corrected read count\n", + "help_text": "Type: `integer`, example: `10000`. Set a specific number (\u003e=1) of cells as putative, based on those with the highest error-corrected read count\n" + + } + + + , + "expected_cell_count": { + "type": + "integer", + "description": "Type: `integer`, example: `20000`. Guide the basic putative cell calling algorithm by providing an estimate of the number of cells expected", + "help_text": "Type: `integer`, example: `20000`. Guide the basic putative cell calling algorithm by providing an estimate of the number of cells expected. Usually this can be the number of cells loaded into the Rhapsody cartridge. If there are multiple inflection points on the second derivative cumulative curve, this will ensure the one selected is near the expected. \n" + + } + + +} +}, + + + "intronic reads settings" : { + "title": "Intronic Reads Settings", + "type": "object", + "description": "No description", + "properties": { + + + "exclude_intronic_reads": { + "type": + "boolean", + "description": "Type: `boolean`, example: `false`. By default, the flag is false, and reads aligned to exons and introns are considered and represented in molecule counts", + "help_text": "Type: `boolean`, example: `false`. By default, the flag is false, and reads aligned to exons and introns are considered and represented in molecule counts. When the flag is set to true, intronic reads will be excluded.\nThe value can be true or false.\n" + + } + + +} +}, + + + "multiplex settings" : { + "title": "Multiplex Settings", + "type": "object", + "description": "No description", + "properties": { + + + "sample_tags_version": { + "type": + "string", + "description": "Type: `string`, example: `human`, choices: ``human`, `mouse`, `flex`, `nuclei_includes_mrna`, `nuclei_atac_only``. Specify the version of the Sample Tags used in the run:\n\n* If Sample Tag Multiplexing was done, specify the appropriate version: human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only\n* If this is an SMK + Nuclei mRNA run or an SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq) run (and not an SMK + ATAC-Seq only run), choose the \"nuclei_includes_mrna\" option", + "help_text": "Type: `string`, example: `human`, choices: ``human`, `mouse`, `flex`, `nuclei_includes_mrna`, `nuclei_atac_only``. Specify the version of the Sample Tags used in the run:\n\n* If Sample Tag Multiplexing was done, specify the appropriate version: human, mouse, flex, nuclei_includes_mrna, nuclei_atac_only\n* If this is an SMK + Nuclei mRNA run or an SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq) run (and not an SMK + ATAC-Seq only run), choose the \"nuclei_includes_mrna\" option.\n* If this is an SMK + ATAC-Seq only run (and not SMK + Multiomic ATAC-Seq (WTA+ATAC-Seq)), choose the \"nuclei_atac_only\" option.\n", + "enum": ["human", "mouse", "flex", "nuclei_includes_mrna", "nuclei_atac_only"] + + + } + + + , + "tag_names": { + "type": + "string", + "description": "Type: List of `string`, example: `4-mySample;9-myOtherSample;6-alsoThisSample`, multiple_sep: `\";\"`. Specify the tag number followed by \u0027-\u0027 and the desired sample name to appear in Sample_Tag_Metrics", + "help_text": "Type: List of `string`, example: `4-mySample;9-myOtherSample;6-alsoThisSample`, multiple_sep: `\";\"`. Specify the tag number followed by \u0027-\u0027 and the desired sample name to appear in Sample_Tag_Metrics.csv\nDo not use the special characters: \u0026, (), [], {}, \u003c\u003e, ?, |\n" + + } + + +} +}, + + + "vdj arguments" : { + "title": "VDJ arguments", + "type": "object", + "description": "No description", + "properties": { + + + "vdj_version": { + "type": + "string", + "description": "Type: `string`, example: `human`, choices: ``human`, `mouse`, `humanBCR`, `humanTCR`, `mouseBCR`, `mouseTCR``. If VDJ was done, specify the appropriate option: human, mouse, humanBCR, humanTCR, mouseBCR, mouseTCR\n", + "help_text": "Type: `string`, example: `human`, choices: ``human`, `mouse`, `humanBCR`, `humanTCR`, `mouseBCR`, `mouseTCR``. If VDJ was done, specify the appropriate option: human, mouse, humanBCR, humanTCR, mouseBCR, mouseTCR\n", + "enum": ["human", "mouse", "humanBCR", "humanTCR", "mouseBCR", "mouseTCR"] + + + } + + +} +}, + + + "atac options" : { + "title": "ATAC options", + "type": "object", + "description": "No description", + "properties": { + + + "predefined_atac_peaks": { + "type": + "string", + "description": "Type: `file`, example: `predefined_peaks.bed`. An optional BED file containing pre-established chromatin accessibility peak regions for generating the ATAC cell-by-peak matrix", + "help_text": "Type: `file`, example: `predefined_peaks.bed`. An optional BED file containing pre-established chromatin accessibility peak regions for generating the ATAC cell-by-peak matrix." + + } + + +} +}, + + + "additional options" : { + "title": "Additional options", + "type": "object", + "description": "No description", + "properties": { + + + "run_name": { + "type": + "string", + "description": "Type: `string`, default: `sample`. Specify a run name to use as the output file base name", + "help_text": "Type: `string`, default: `sample`. Specify a run name to use as the output file base name. Use only letters, numbers, or hyphens. Do not use special characters or spaces.\n" + , + "default": "sample" + } + + + , + "generate_bam": { + "type": + "boolean", + "description": "Type: `boolean`, default: `false`. Specify whether to create the BAM file output\n", + "help_text": "Type: `boolean`, default: `false`. Specify whether to create the BAM file output\n" + , + "default": "False" + } + + + , + "long_reads": { + "type": + "boolean", + "description": "Type: `boolean`. Use STARlong (default: undefined - i", + "help_text": "Type: `boolean`. Use STARlong (default: undefined - i.e. autodetects based on read lengths) - Specify if the STARlong aligner should be used instead of STAR. Set to true if the reads are longer than 650bp.\n" + + } + + +} +}, + + + "advanced options" : { + "title": "Advanced options", + "type": "object", + "description": "NOTE: Only change these if you are really sure about what you are doing\n", + "properties": { + + + "custom_star_params": { + "type": + "string", + "description": "Type: `string`, example: `--alignIntronMax 6000 --outFilterScoreMinOverLread 0.1 --limitOutSJcollapsed 2000000`. Modify STAR alignment parameters - Set this parameter to fully override default STAR mapping parameters used in the pipeline", + "help_text": "Type: `string`, example: `--alignIntronMax 6000 --outFilterScoreMinOverLread 0.1 --limitOutSJcollapsed 2000000`. Modify STAR alignment parameters - Set this parameter to fully override default STAR mapping parameters used in the pipeline.\nFor reference this is the default that is used:\n\n Short Reads: `--outFilterScoreMinOverLread 0 --outFilterMatchNminOverLread 0 --outFilterMultimapScoreRange 0 --clip3pAdapterSeq AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --seedSearchStartLmax 50 --outFilterMatchNmin 25 --limitOutSJcollapsed 2000000`\n Long Reads: Same as Short Reads + `--seedPerReadNmax 10000`\n\nThis applies to fastqs provided in the Reads user input \nDo NOT set any non-mapping related params like `--genomeDir`, `--outSAMtype`, `--outSAMunmapped`, `--readFilesIn`, `--runThreadN`, etc.\nWe use STAR version 2.7.10b\n" + + } + + + , + "custom_bwa_mem2_params": { + "type": + "string", + "description": "Type: `string`, example: `-k 16 -w 200 -r`. Modify bwa-mem2 alignment parameters - Set this parameter to fully override bwa-mem2 mapping parameters used in the pipeline\nThe pipeline does not specify any custom mapping params to bwa-mem2 so program default values are used\nThis applies to fastqs provided in the Reads_ATAC user input \nDo NOT set any non-mapping related params like `-C`, `-t`, etc", + "help_text": "Type: `string`, example: `-k 16 -w 200 -r`. Modify bwa-mem2 alignment parameters - Set this parameter to fully override bwa-mem2 mapping parameters used in the pipeline\nThe pipeline does not specify any custom mapping params to bwa-mem2 so program default values are used\nThis applies to fastqs provided in the Reads_ATAC user input \nDo NOT set any non-mapping related params like `-C`, `-t`, etc.\nWe use bwa-mem2 version 2.2.1\n" + + } + + +} +}, + + + "cwl-runner arguments" : { + "title": "CWL-runner arguments", + "type": "object", + "description": "No description", + "properties": { + + + "parallel": { + "type": + "boolean", + "description": "Type: `boolean`, default: `true`. Run jobs in parallel", + "help_text": "Type: `boolean`, default: `true`. Run jobs in parallel." + , + "default": "True" + } + + + , + "timestamps": { + "type": + "boolean", + "description": "Type: `boolean_true`, default: `false`. Add timestamps to the errors, warnings, and notifications", + "help_text": "Type: `boolean_true`, default: `false`. Add timestamps to the errors, warnings, and notifications." + , + "default": "False" + } + + +} +}, + + + "undocumented arguments" : { + "title": "Undocumented arguments", + "type": "object", + "description": "No description", + "properties": { + + + "abseq_umi": { + "type": + "integer", + "description": "Type: `integer`. ", + "help_text": "Type: `integer`. " + + } + + + , + "target_analysis": { + "type": + "boolean", + "description": "Type: `boolean`. ", + "help_text": "Type: `boolean`. " + + } + + + , + "vdj_jgene_evalue": { + "type": + "number", + "description": "Type: `double`. e-value threshold for J gene", + "help_text": "Type: `double`. e-value threshold for J gene. The e-value threshold for J gene call by IgBlast/PyIR, default is set as 0.001\n" + + } + + + , + "vdj_vgene_evalue": { + "type": + "number", + "description": "Type: `double`. e-value threshold for V gene", + "help_text": "Type: `double`. e-value threshold for V gene. The e-value threshold for V gene call by IgBlast/PyIR, default is set as 0.001\n" + + } + + + , + "write_filtered_reads": { + "type": + "boolean", + "description": "Type: `boolean`. ", + "help_text": "Type: `boolean`. " + + } + + +} +}, + + + "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/references" + }, + + { + "$ref": "#/definitions/multiplex outputs" + }, + + { + "$ref": "#/definitions/vdj outputs" + }, + + { + "$ref": "#/definitions/atac-seq outputs" + }, + + { + "$ref": "#/definitions/abseq cell calling outputs" + }, + + { + "$ref": "#/definitions/putative cell calling settings" + }, + + { + "$ref": "#/definitions/intronic reads settings" + }, + + { + "$ref": "#/definitions/multiplex settings" + }, + + { + "$ref": "#/definitions/vdj arguments" + }, + + { + "$ref": "#/definitions/atac options" + }, + + { + "$ref": "#/definitions/additional options" + }, + + { + "$ref": "#/definitions/advanced options" + }, + + { + "$ref": "#/definitions/cwl-runner arguments" + }, + + { + "$ref": "#/definitions/undocumented arguments" + }, + + { + "$ref": "#/definitions/nextflow input-output arguments" + } +] +} diff --git a/target/nextflow/bedtools/bedtools_bamtofastq/.config.vsh.yaml b/target/nextflow/bedtools/bedtools_bamtofastq/.config.vsh.yaml index 0c587218..15a3e51e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 6bf737b6..1d3dc63b 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 5d89e03b..d4aa90c4 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 6a8a64a8..ab58a24f 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 7335dbae..734a7c86 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 d8196232..204dbd72 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 05555c26..f28da6e2 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 6e9efab5..3e9c9c10 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 709dadd0..cedc294c 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 8d73fca9..e0add720 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 1664e950..8fd7a9a5 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 e0f16402..46e14679 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 6f14bd8d..2a630d8a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 e3b6293d..0eaab91f 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 fccf16f8..e0c2bcc1 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 99af1c40..b9023794 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 281bf61d..aa0e22cf 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 fe4f256a..98f1c610 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 4670f419..727cffe4 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 e1759cf1..60f7acd1 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 0561623e..4a62cc7e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 468197c2..69e5811d 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 d9617a9d..e6ab9835 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 8ff07d24..ca8f6acf 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 7ec38e51..d63fce92 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 6e8e3870..76ecd7ba 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/cutadapt/.config.vsh.yaml b/target/nextflow/cutadapt/.config.vsh.yaml index e9d887b4..ac8589c1 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/cutadapt/main.nf b/target/nextflow/cutadapt/main.nf index 2d23d239..8c77349a 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/falco/.config.vsh.yaml b/target/nextflow/falco/.config.vsh.yaml index a266d519..5fb67fdc 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/falco/main.nf b/target/nextflow/falco/main.nf index 955dcec8..43002669 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/fastp/.config.vsh.yaml b/target/nextflow/fastp/.config.vsh.yaml index 42807a08..be6b5e63 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/fastp/main.nf b/target/nextflow/fastp/main.nf index 5ba2530b..0a54011e 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/fastqc/.config.vsh.yaml b/target/nextflow/fastqc/.config.vsh.yaml index 7c46b27d..562295d9 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/fastqc/main.nf b/target/nextflow/fastqc/main.nf index fab9d35f..bade8607 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/featurecounts/.config.vsh.yaml b/target/nextflow/featurecounts/.config.vsh.yaml index a0d8dd42..dbf5c028 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/featurecounts/main.nf b/target/nextflow/featurecounts/main.nf index 539bd772..286f6b94 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/fq_subsample/.config.vsh.yaml b/target/nextflow/fq_subsample/.config.vsh.yaml index 222a846f..3b585cad 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/fq_subsample/main.nf b/target/nextflow/fq_subsample/main.nf index 53dded1e..ab8a56d1 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/gffread/.config.vsh.yaml b/target/nextflow/gffread/.config.vsh.yaml index 000183fe..4fc713f1 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/gffread/main.nf b/target/nextflow/gffread/main.nf index 43b956fc..89e8647c 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 8e6724e1..d0a8580e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 b90ef6ba..52d6c1cd 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 a9b82ef2..b5de7c5a 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 f06333a9..8fddfb96 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 7ba2350d..a9909b09 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 d64ab9a7..0d35ff87 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/multiqc/.config.vsh.yaml b/target/nextflow/multiqc/.config.vsh.yaml index a512243f..6eabdbe2 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/multiqc/main.nf b/target/nextflow/multiqc/main.nf index de8ac686..f9726bda 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/pear/.config.vsh.yaml b/target/nextflow/pear/.config.vsh.yaml index 9f5d68a0..40e21bb3 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/pear/main.nf b/target/nextflow/pear/main.nf index f89043e8..c2c404ee 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 aa3ba09a..06253225 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 bab5336a..f6dfc7d7 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 5477af57..126b7929 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 76d2fee9..ce1111d9 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 5041e6ba..f0ab6720 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 20834790..3822632b 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 d2105341..4f0bfd0b 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 e5365fd1..e80474d2 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 99396ff7..086525b7 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 0dfc115c..def32c7e 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 62221794..fad135ba 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 dd98b063..3f444ea4 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 8911bb2a..c88c54fe 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 18382cfe..e5a1d43a 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 3d639c8b..c2121e6d 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 9d2157fc..0c8b4b6e 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 47501026..6dfc9a67 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 f0a15082..2cf2daf6 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 cb97bcc4..8746874e 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 8c5a4199..fa090fb6 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 349ae7e2..8cb5e92f 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 03991a80..e12d137f 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 1ee2c7c0..720f084b 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 f25d85ac..9d834d7d 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 a8936142..67527677 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 c19fb9c1..53d0e77e 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 bf459437..5eef09a9 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 b99df522..6c830226 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 c1e0b7ef..95ef29b1 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 253010b0..10148785 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 b1deabb3..50ab4c78 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 71d67a2f..3d5857ad 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox", diff --git a/target/nextflow/sortmerna/.config.vsh.yaml b/target/nextflow/sortmerna/.config.vsh.yaml index 3b2c1480..d5b5d9ac 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" package_config: name: "biobox" version: "main" diff --git a/target/nextflow/sortmerna/main.nf b/target/nextflow/sortmerna/main.nf index 5f558302..5d6f244e 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 5640b42d..87b9468c 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 b3d1b365..06a12deb 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 e70f6c4d..5f539e74 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 a853b34c..17e1b458 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 c0a1a609..b42eb9b5 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 587e01cc..2db9598e 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 7a3e1899..509d1283 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 2ed75d70..b0fd94b2 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "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 3ff8fd0e..4bd5cf9b 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: "38f635ad57ef05550bba3a0864c81627f84f5ad2" - git_remote: "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox" - git_tag: "v0.2.0-2-g38f635a" + git_commit: "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1" + git_remote: "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox" + git_tag: "v0.2.0-3-g7f8bcc2" 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 60b90d29..a70722bc 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" : "38f635ad57ef05550bba3a0864c81627f84f5ad2", - "git_remote" : "https://x-access-token:ghs_wFnCgH6LWyegjU3sAMvKhUKRQxXHxx2DXwds@github.com/viash-hub/biobox", - "git_tag" : "v0.2.0-2-g38f635a" + "git_commit" : "7f8bcc2b3e1ffaac9778b6acb42420b19660d1a1", + "git_remote" : "https://x-access-token:ghs_aSDBedV4vU66pddFDN6d8UEy0ZQApn08RAsh@github.com/viash-hub/biobox", + "git_tag" : "v0.2.0-3-g7f8bcc2" }, "package_config" : { "name" : "biobox",