Files
biobox/target/executable/samtools/samtools_view/samtools_view
CI 7dd88311d4 Build branch main with version main (f3e87e5)
Build pipeline: viash-hub.biobox.main-7qmtp

Source commit: f3e87e58c9

Source message: Bedtools bed12tobed6 (#140)

* Initial commit

* Update test.sh

* help file + n option

* adding n_score option

* small changes

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Jakub Majercik <57993790+jakubmajercik@users.noreply.github.com>
2024-09-02 13:25:01 +00:00

2376 lines
114 KiB
Bash
Executable File

#!/usr/bin/env bash
# samtools_view main
#
# This wrapper script is auto-generated by viash 0.9.0-RC7 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:
# * Emma Rousseau (author, maintainer)
set -e
if [ -z "$VIASH_TEMP" ]; then
VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMPDIR}
VIASH_TEMP=${VIASH_TEMP:-$VIASH_TEMPDIR}
VIASH_TEMP=${VIASH_TEMP:-$VIASH_TMP}
VIASH_TEMP=${VIASH_TEMP:-$TMPDIR}
VIASH_TEMP=${VIASH_TEMP:-$TMP}
VIASH_TEMP=${VIASH_TEMP:-$TEMPDIR}
VIASH_TEMP=${VIASH_TEMP:-$TEMP}
VIASH_TEMP=${VIASH_TEMP:-/tmp}
fi
# define helper functions
# ViashQuote: put quotes around non flag values
# $1 : unquoted string
# return : possibly quoted string
# examples:
# ViashQuote --foo # returns --foo
# ViashQuote bar # returns 'bar'
# Viashquote --foo=bar # returns --foo='bar'
function ViashQuote {
if [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+=.+$ ]]; then
echo "$1" | sed "s#=\(.*\)#='\1'#"
elif [[ "$1" =~ ^-+[a-zA-Z0-9_\-]+$ ]]; then
echo "$1"
else
echo "'$1'"
fi
}
# ViashRemoveFlags: Remove leading flag
# $1 : string with a possible leading flag
# return : string without possible leading flag
# examples:
# ViashRemoveFlags --foo=bar # returns bar
function ViashRemoveFlags {
echo "$1" | sed 's/^--*[a-zA-Z0-9_\-]*=//'
}
# ViashSourceDir: return the path of a bash file, following symlinks
# usage : ViashSourceDir ${BASH_SOURCE[0]}
# $1 : Should always be set to ${BASH_SOURCE[0]}
# returns : The absolute path of the bash file
function ViashSourceDir {
local source="$1"
while [ -h "$source" ]; do
local dir="$( cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd )"
source="$(readlink "$source")"
[[ $source != /* ]] && source="$dir/$source"
done
cd -P "$( dirname "$source" )" >/dev/null 2>&1 && pwd
}
# ViashFindTargetDir: return the path of the '.build.yaml' file, following symlinks
# usage : ViashFindTargetDir 'ScriptPath'
# $1 : The location from where to start the upward search
# returns : The absolute path of the '.build.yaml' file
function ViashFindTargetDir {
local source="$1"
while [[ "$source" != "" && ! -e "$source/.build.yaml" ]]; do
source=${source%/*}
done
echo $source
}
# see https://en.wikipedia.org/wiki/Syslog#Severity_level
VIASH_LOGCODE_EMERGENCY=0
VIASH_LOGCODE_ALERT=1
VIASH_LOGCODE_CRITICAL=2
VIASH_LOGCODE_ERROR=3
VIASH_LOGCODE_WARNING=4
VIASH_LOGCODE_NOTICE=5
VIASH_LOGCODE_INFO=6
VIASH_LOGCODE_DEBUG=7
VIASH_VERBOSITY=$VIASH_LOGCODE_NOTICE
# ViashLog: Log events depending on the verbosity level
# usage: ViashLog 1 alert Oh no something went wrong!
# $1: required verbosity level
# $2: display tag
# $3+: messages to display
# stdout: Your input, prepended by '[$2] '.
function ViashLog {
local required_level="$1"
local display_tag="$2"
shift 2
if [ $VIASH_VERBOSITY -ge $required_level ]; then
>&2 echo "[$display_tag]" "$@"
fi
}
# ViashEmergency: log events when the system is unstable
# usage: ViashEmergency Oh no something went wrong.
# stdout: Your input, prepended by '[emergency] '.
function ViashEmergency {
ViashLog $VIASH_LOGCODE_EMERGENCY emergency "$@"
}
# ViashAlert: log events when actions must be taken immediately (e.g. corrupted system database)
# usage: ViashAlert Oh no something went wrong.
# stdout: Your input, prepended by '[alert] '.
function ViashAlert {
ViashLog $VIASH_LOGCODE_ALERT alert "$@"
}
# ViashCritical: log events when a critical condition occurs
# usage: ViashCritical Oh no something went wrong.
# stdout: Your input, prepended by '[critical] '.
function ViashCritical {
ViashLog $VIASH_LOGCODE_CRITICAL critical "$@"
}
# ViashError: log events when an error condition occurs
# usage: ViashError Oh no something went wrong.
# stdout: Your input, prepended by '[error] '.
function ViashError {
ViashLog $VIASH_LOGCODE_ERROR error "$@"
}
# ViashWarning: log potentially abnormal events
# usage: ViashWarning Something may have gone wrong.
# stdout: Your input, prepended by '[warning] '.
function ViashWarning {
ViashLog $VIASH_LOGCODE_WARNING warning "$@"
}
# ViashNotice: log significant but normal events
# usage: ViashNotice This just happened.
# stdout: Your input, prepended by '[notice] '.
function ViashNotice {
ViashLog $VIASH_LOGCODE_NOTICE notice "$@"
}
# ViashInfo: log normal events
# usage: ViashInfo This just happened.
# stdout: Your input, prepended by '[info] '.
function ViashInfo {
ViashLog $VIASH_LOGCODE_INFO info "$@"
}
# ViashDebug: log all events, for debugging purposes
# usage: ViashDebug This just happened.
# stdout: Your input, prepended by '[debug] '.
function ViashDebug {
ViashLog $VIASH_LOGCODE_DEBUG debug "$@"
}
# find source folder of this component
VIASH_META_RESOURCES_DIR=`ViashSourceDir ${BASH_SOURCE[0]}`
# find the root of the built components & dependencies
VIASH_TARGET_DIR=`ViashFindTargetDir $VIASH_META_RESOURCES_DIR`
# define meta fields
VIASH_META_NAME="samtools_view"
VIASH_META_FUNCTIONALITY_NAME="samtools_view"
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 "samtools_view main"
echo ""
echo "Views and converts SAM/BAM/CRAM files."
echo ""
echo "Inputs:"
echo " --input"
echo " type: file, required parameter, file must exist"
echo " Input SAM, BAM, or CRAM file."
echo ""
echo " -t, --fai_reference"
echo " type: file, file must exist"
echo " A tab-delimited FILE. Each line must contain the reference name in the"
echo " first column"
echo " and the length of the reference in the second column, with one line for"
echo " each distinct"
echo " reference. Any additional fields beyond the second column are ignored."
echo " This file also"
echo " defines the order of the reference sequences in sorting. If you run:"
echo " \`samtools faidx <ref.fa>',"
echo " the resulting index file <ref.fa>.fai can be used as this FILE."
echo ""
echo " -T, --reference"
echo " type: file, file must exist"
echo " A FASTA format reference FILE, optionally compressed by bgzip and"
echo " ideally indexed by samtools faidx."
echo " If an index is not present one will be generated for you, if the"
echo " reference file is local."
echo " If the reference file is not local, but is accessed instead via an"
echo " https://, s3:// or other URL,"
echo " the index file will need to be supplied by the server alongside the"
echo " reference. It is possible to"
echo " have the reference and index files in different locations by supplying"
echo " both to this option separated"
echo " by the string \"##idx##\", for example:"
echo " --reference ftp://x.com/ref.fa##idx##ftp://y.com/index.fa.fai"
echo " However, note that only the location of the reference will be stored in"
echo " the output file header."
echo " If this method is used to make CRAM files, the cram reader may not be"
echo " able to find the index,"
echo " and may not be able to decode the file unless it can get the references"
echo " it needs using a different"
echo " method."
echo ""
echo " -L, --target_file"
echo " type: file, file must exist"
echo " Only output alignments overlapping the input BED FILE [null]."
echo ""
echo " --region_file"
echo " type: file, file must exist"
echo " Use an index and multi-region iterator to only output alignments"
echo " overlapping the input BED FILE."
echo " Equivalent to --use_index --target_file FILE."
echo ""
echo " -N, --qname_file"
echo " type: file, file must exist"
echo " Output only alignments with read names listed in FILE. If FILE starts"
echo " with ^ then the operation is"
echo " negated and only outputs alignment with read groups not listed in FILE."
echo " It is not permissible to mix"
echo " both the filter-in and filter-out style syntax in the same command."
echo ""
echo " -R, --read_group_file"
echo " type: file, file must exist"
echo " Output alignments in read groups listed in FILE [null]. If FILE starts"
echo " with ^ then the operation is"
echo " negated and only outputs alignment with read names not listed in FILE."
echo " It is not permissible to mix"
echo " both the filter-in and filter-out style syntax in the same command. Note"
echo " that records with no RG tag"
echo " will also be output when using this option. This behaviour may change in"
echo " a future release."
echo ""
echo " -M, --use_index"
echo " type: boolean_true"
echo " Use the multi-region iterator on the union of a BED file and"
echo " command-line region arguments."
echo " This avoids re-reading the same regions of files so can sometimes be"
echo " much faster. Note this also"
echo " removes duplicate sequences. Without this a sequence that overlaps"
echo " multiple regions specified on"
echo " the command line will be reported multiple times. The usage of a BED"
echo " file is optional and its path"
echo " has to be preceded by --target_file option."
echo ""
echo "Outputs:"
echo " -o, --output"
echo " type: file, required parameter, output, file must exist"
echo " example: output.bam"
echo " Output to FILE instead of [stdout]."
echo ""
echo " -b, --bam"
echo " type: boolean_true"
echo " Output in the BAM format."
echo ""
echo " -C, --cram"
echo " type: boolean_true"
echo " Output in the CRAM format (requires --reference)."
echo ""
echo " --fast"
echo " type: boolean_true"
echo " Enable fast compression. This also changes the default output format to"
echo " BAM,"
echo " but this can be overridden by the explicit format options or using a"
echo " filename"
echo " with a known suffix."
echo ""
echo " -u, --uncompressed"
echo " type: boolean_true"
echo " Output uncompressed data. This also changes the default output format to"
echo " BAM,"
echo " but this can be overridden by the explicit format options or using a"
echo " filename"
echo " with a known suffix."
echo " This option saves time spent on compression/decompression and is thus"
echo " preferred"
echo " when the output is piped to another samtools command."
echo ""
echo " --with_header"
echo " type: boolean_true"
echo " Include the header in the output."
echo ""
echo " -H, --header_only"
echo " type: boolean_true"
echo " Output the header only."
echo ""
echo " --no_header"
echo " type: boolean_true"
echo " When producing SAM format, output alignment records but not headers."
echo " This is the default; the option can be used to reset the effect of"
echo " --with_header/--header_only."
echo ""
echo " -c, --count"
echo " type: boolean_true"
echo " Instead of printing the alignments, only count them and print the total"
echo " number."
echo " All filter options, such as --require_flags, --excl_flags, and --min_MQ,"
echo " are taken"
echo " into account. The --unmap option is ignored in this mode."
echo ""
echo " -U, --output_unselected"
echo " type: file, file must exist"
echo " Write alignments that are not selected by the various filter options to"
echo " FILE."
echo " When this option is used, all alignments (or all alignments intersecting"
echo " the regions"
echo " specified) are written to either the output file or this file, but never"
echo " both."
echo ""
echo " -p, --unmap"
echo " type: boolean_true"
echo " Set the UNMAP flag on alignments that are not selected by the filter"
echo " options."
echo " These alignments are then written to the normal output. This is not"
echo " compatible"
echo " with --output_unselected."
echo ""
echo " -r, --read_group"
echo " type: string"
echo " Output alignments in read group STR [null]. Note that records with no RG"
echo " tag will also be output"
echo " when using this option. This behaviour may change in a future release."
echo ""
echo " -d, --tag"
echo " type: string"
echo " Only output alignments with tag STR1 and associated value STR2, which"
echo " can be a string or an integer"
echo " [null]."
echo " The value can be omitted, in which case only the tag is considered."
echo " Note that this option does not specify a tag type. For example, use"
echo " --tag XX:42 to select alignments"
echo " with an XX:i:42 field, not --tag XX:i:42."
echo ""
echo " -D, --tag_file"
echo " type: file, file must exist"
echo " Only output alignments with tag STR and associated values listed in"
echo " FILE."
echo ""
echo " -q, --min_MQ"
echo " type: integer"
echo " default: 0"
echo " Skip alignments with MAPQ smaller than INT."
echo ""
echo " -l, --library"
echo " type: string"
echo " Only output alignments in library STR."
echo ""
echo " -m, --min_qlen"
echo " type: integer"
echo " default: 0"
echo " Only output alignments with number of CIGAR bases consuming query"
echo " sequence >= INT."
echo ""
echo " -e, --expr"
echo " type: string"
echo " Only include alignments that match the filter expression STR. The syntax"
echo " for these expressions is"
echo " described in the main samtools."
echo ""
echo " -f, --require_flags"
echo " type: string"
echo " Only output alignments with all bits set in FLAG present in the FLAG"
echo " field. FLAG can be specified"
echo " in hex by beginning with \`0x' (i.e. /^0x[0-9A-F]+/), in octal by"
echo " beginning with \`0' (i.e. /^0[0-7]+/),"
echo " as a decimal number not beginning with '0' or as a comma-separated list"
echo " of flag names."
echo ""
echo " -F, --excl_flags"
echo " type: string"
echo " Do not output alignments with any bits set in FLAG present in the FLAG"
echo " field. FLAG can be specified"
echo " in hex by beginning with \`0x' (i.e. /^0x[0-9A-F]+/), in octal by"
echo " beginning with \`0' (i.e. /^0[0-7]+/),"
echo " as a decimal number not beginning with '0' or as a comma-separated list"
echo " of flag names."
echo ""
echo " -G, --excl_all_flags"
echo " type: integer"
echo " Do not output alignments with all bits set in INT present in the FLAG"
echo " field. This is the opposite of"
echo " --require_flags such that --require_flags 12 --exclude_all_flags 12 is"
echo " the same as no filtering at all."
echo " FLAG can be specified in hex by beginning with \`0x' (i.e."
echo " /^0x[0-9A-F]+/), in octal by beginning with \`0'"
echo " (i.e. /^0[0-7]+/), as a decimal number not beginning with '0' or as a"
echo " comma-separated list of flag names."
echo ""
echo " --rf, --incl_flags"
echo " type: string"
echo " Only output alignments with any bit set in FLAG present in the FLAG"
echo " field. FLAG can be specified in hex"
echo " by beginning with \`0x' (i.e. /^0x[0-9A-F]+/), in octal by beginning with"
echo " \`0' (i.e. /^0[0-7]+/), as a decimal"
echo " number not beginning with '0' or as a comma-separated list of flag"
echo " names."
echo ""
echo " -x, --remove_tag"
echo " type: string"
echo " Read tag(s) to exclude from output (repeatable) [null]. This can be a"
echo " single tag or a comma separated list."
echo " Alternatively the option itself can be repeated multiple times."
echo " If the list starts with a \`^' then it is negated and treated as a"
echo " request to remove all tags except those in STR."
echo " The list may be empty, so --remove_tag ^ will remove all tags."
echo " Note that tags will only be removed from reads that pass filtering."
echo ""
echo " --keep_tag"
echo " type: string"
echo " This keeps only tags listed in STR and is directly equivalent to"
echo " --remove_tag ^STR. Specifying an empty list"
echo " will remove all tags. If both --keep_tag and --remove_tag are specified"
echo " then --keep_tag has precedence."
echo " Note that tags will only be removed from reads that pass filtering."
echo ""
echo " -B, --remove_B"
echo " type: boolean_true"
echo " Collapse the backward CIGAR operation."
echo ""
echo " --add_flags"
echo " type: string"
echo " Adds flag(s) to read. FLAG can be specified in hex by beginning with"
echo " \`0x' (i.e. /^0x[0-9A-F]+/), in octal"
echo " by beginning with \`0' (i.e. /^0[0-7]+/), as a decimal number not"
echo " beginning with '0' or as a comma-separated"
echo " list of flag names."
echo ""
echo " --remove_flags"
echo " type: string"
echo " Remove flag(s) from read. FLAG is specified in the same way as with the"
echo " --add_flags option."
echo ""
echo " --subsample"
echo " type: double"
echo " Output only a proportion of the input alignments, as specified by 0.0 <="
echo " FLOAT <= 1.0, which gives the fraction"
echo " of templates/pairs to be kept. This subsampling acts in the same way on"
echo " all of the alignment records in the same"
echo " template or read pair, so it never keeps a read but not its mate."
echo ""
echo " --subsample_seed"
echo " type: integer"
echo " default: 0"
echo " Subsampling seed used to influence which subset of reads is kept. When"
echo " subsampling data that has previously"
echo " been subsampled, be sure to use a different seed value from those used"
echo " previously; otherwise more reads will"
echo " be retained than expected."
echo ""
echo " -P, --fetch_pairs"
echo " type: boolean_true"
echo " Retrieve pairs even when the mate is outside of the requested region."
echo " Enabling this option also turns on the"
echo " multi-region iterator (-M). A region to search must be specified, either"
echo " on the command-line, or using the"
echo " --target_file option. The input file must be an indexed regular file."
echo " This option first scans the requested region, using the RNEXT and PNEXT"
echo " fields of the records that have the"
echo " PAIRED flag set and pass other filtering options to find where paired"
echo " reads are located. These locations are"
echo " used to build an expanded region list, and a set of QNAMEs to allow from"
echo " the new regions. It will then make"
echo " a second pass, collecting all reads from the originally-specified region"
echo " list together with reads from additional"
echo " locations that match the allowed set of QNAMEs. Any other filtering"
echo " options used will be applied to all reads"
echo " found during this second pass."
echo " As this option links reads using RNEXT and PNEXT, it is important that"
echo " these fields are set accurately. Use"
echo " 'samtools fixmate' to correct them if necessary."
echo " Note that this option does not work with the --count,"
echo " --output-unselected or --unmap options."
echo ""
echo " -X, --customized_index"
echo " type: boolean_true"
echo " Include customized index file as a part of arguments. See EXAMPLES"
echo " section for sample of usage."
echo ""
echo " -z, --sanitize"
echo " type: string"
echo " Perform some sanity checks on the state of SAM record fields, fixing up"
echo " common mistakes made by aligners."
echo " These include soft-clipping alignments when they extend beyond the end"
echo " of the reference, marking records as"
echo " unmapped when they have reference * or position 0, and ensuring unmapped"
echo " alignments have no CIGAR or mapping"
echo " quality for unmapped alignments and no MD, NM, CG or SM tags."
echo " FLAGs is a comma-separated list of keywords chosen from the following"
echo " list."
echo " unmap: The UNMAPPED BAM flag. This is set for reads with position <= 0,"
echo " reference name \"*\" or reads starting"
echo " beyond the end of the reference. Note CIGAR \"*\" is permitted for mapped"
echo " data so does not trigger this."
echo " pos: Position and reference name fields. These may be cleared when a"
echo " sequence is unmapped due to the"
echo " coordinates being beyond the end of the reference. Selecting this may"
echo " change the sort order of the file,"
echo " so it is not a part of the on compound argument."
echo " mqual: Mapping quality. This is set to zero for unmapped reads."
echo " cigar: Modifies CIGAR fields, either by adding soft-clips for reads that"
echo " overlap the end of the reference or"
echo " by clearing it for unmapped reads."
echo " aux: For unmapped data, some auxiliary fields are meaningless and will"
echo " be removed. These include NM, MD, CG and SM."
echo " off: Perform no sanity fixing. This is the default"
echo " on: Sanitize data in a way that guarantees the same sort order. This is"
echo " everything except for pos."
echo " all: All sanitizing options, including pos."
echo ""
echo " --no_PG"
echo " type: boolean_true"
echo " Do not add a @PG line to the header of the output file."
echo ""
echo " --input_fmt_option"
echo " type: string"
echo " Specify a single input file format option in the form of OPTION or"
echo " OPTION=VALUE."
echo ""
echo " -O, --output_fmt"
echo " type: string"
echo " Specify output format (SAM, BAM, CRAM)."
echo ""
echo " --output_fmt_option"
echo " type: string"
echo " Specify a single output file format option in the form of OPTION or"
echo " OPTION=VALUE."
echo ""
echo " --write_index"
echo " type: boolean_true"
echo " Automatically index the output files."
}
# initialise variables
VIASH_MODE='run'
VIASH_ENGINE_ID='docker'
######## Helper functions for setting up Docker images for viash ########
# expects: ViashDockerBuild
# ViashDockerInstallationCheck: check whether Docker is installed correctly
#
# examples:
# ViashDockerInstallationCheck
function ViashDockerInstallationCheck {
ViashDebug "Checking whether Docker is installed"
if [ ! command -v docker &> /dev/null ]; then
ViashCritical "Docker doesn't seem to be installed. See 'https://docs.docker.com/get-docker/' for instructions."
exit 1
fi
ViashDebug "Checking whether the Docker daemon is running"
local save=$-; set +e
local docker_version=$(docker version --format '{{.Client.APIVersion}}' 2> /dev/null)
local out=$?
[[ $save =~ e ]] && set -e
if [ $out -ne 0 ]; then
ViashCritical "Docker daemon does not seem to be running. Try one of the following:"
ViashCritical "- Try running 'dockerd' in the command line"
ViashCritical "- See https://docs.docker.com/config/daemon/"
exit 1
fi
}
# ViashDockerRemoteTagCheck: check whether a Docker image is available
# on a remote. Assumes `docker login` has been performed, if relevant.
#
# $1 : image identifier with format `[registry/]image[:tag]`
# exit code $? : whether or not the image was found
# examples:
# ViashDockerRemoteTagCheck python:latest
# echo $? # returns '0'
# ViashDockerRemoteTagCheck sdaizudceahifu
# echo $? # returns '1'
function ViashDockerRemoteTagCheck {
docker manifest inspect $1 > /dev/null 2> /dev/null
}
# ViashDockerLocalTagCheck: check whether a Docker image is available locally
#
# $1 : image identifier with format `[registry/]image[:tag]`
# exit code $? : whether or not the image was found
# examples:
# docker pull python:latest
# ViashDockerLocalTagCheck python:latest
# echo $? # returns '0'
# ViashDockerLocalTagCheck sdaizudceahifu
# echo $? # returns '1'
function ViashDockerLocalTagCheck {
[ -n "$(docker images -q $1)" ]
}
# ViashDockerPull: pull a Docker image
#
# $1 : image identifier with format `[registry/]image[:tag]`
# exit code $? : whether or not the image was found
# examples:
# ViashDockerPull python:latest
# echo $? # returns '0'
# ViashDockerPull sdaizudceahifu
# echo $? # returns '1'
function ViashDockerPull {
ViashNotice "Checking if Docker image is available at '$1'"
if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then
docker pull $1 && return 0 || return 1
else
local save=$-; set +e
docker pull $1 2> /dev/null > /dev/null
local out=$?
[[ $save =~ e ]] && set -e
if [ $out -ne 0 ]; then
ViashWarning "Could not pull from '$1'. Docker image doesn't exist or is not accessible."
fi
return $out
fi
}
# ViashDockerPush: push a Docker image
#
# $1 : image identifier with format `[registry/]image[:tag]`
# exit code $? : whether or not the image was found
# examples:
# ViashDockerPush python:latest
# echo $? # returns '0'
# ViashDockerPush sdaizudceahifu
# echo $? # returns '1'
function ViashDockerPush {
ViashNotice "Pushing image to '$1'"
local save=$-; set +e
local out
if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then
docker push $1
out=$?
else
docker push $1 2> /dev/null > /dev/null
out=$?
fi
[[ $save =~ e ]] && set -e
if [ $out -eq 0 ]; then
ViashNotice "Container '$1' push succeeded."
else
ViashError "Container '$1' push errored. You might not be logged in or have the necessary permissions."
fi
return $out
}
# ViashDockerPullElseBuild: pull a Docker image, else build it
#
# $1 : image identifier with format `[registry/]image[:tag]`
# ViashDockerBuild : a Bash function which builds a docker image, takes image identifier as argument.
# examples:
# ViashDockerPullElseBuild mynewcomponent
function ViashDockerPullElseBuild {
local save=$-; set +e
ViashDockerPull $1
local out=$?
[[ $save =~ e ]] && set -e
if [ $out -ne 0 ]; then
ViashDockerBuild $@
fi
}
# ViashDockerSetup: create a Docker image, according to specified docker setup strategy
#
# $1 : image identifier with format `[registry/]image[:tag]`
# $2 : docker setup strategy, see DockerSetupStrategy.scala
# examples:
# ViashDockerSetup mynewcomponent alwaysbuild
function ViashDockerSetup {
local image_id="$1"
local setup_strategy="$2"
if [ "$setup_strategy" == "alwaysbuild" -o "$setup_strategy" == "build" -o "$setup_strategy" == "b" ]; then
ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
elif [ "$setup_strategy" == "alwayspull" -o "$setup_strategy" == "pull" -o "$setup_strategy" == "p" ]; then
ViashDockerPull $image_id
elif [ "$setup_strategy" == "alwayspullelsebuild" -o "$setup_strategy" == "pullelsebuild" ]; then
ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
elif [ "$setup_strategy" == "alwayspullelsecachedbuild" -o "$setup_strategy" == "pullelsecachedbuild" ]; then
ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id")
elif [ "$setup_strategy" == "alwayscachedbuild" -o "$setup_strategy" == "cachedbuild" -o "$setup_strategy" == "cb" ]; then
ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id")
elif [[ "$setup_strategy" =~ ^ifneedbe ]]; then
local save=$-; set +e
ViashDockerLocalTagCheck $image_id
local outCheck=$?
[[ $save =~ e ]] && set -e
if [ $outCheck -eq 0 ]; then
ViashInfo "Image $image_id already exists"
elif [ "$setup_strategy" == "ifneedbebuild" ]; then
ViashDockerBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
elif [ "$setup_strategy" == "ifneedbecachedbuild" ]; then
ViashDockerBuild $image_id $(ViashDockerBuildArgs "$engine_id")
elif [ "$setup_strategy" == "ifneedbepull" ]; then
ViashDockerPull $image_id
elif [ "$setup_strategy" == "ifneedbepullelsebuild" ]; then
ViashDockerPullElseBuild $image_id --no-cache $(ViashDockerBuildArgs "$engine_id")
elif [ "$setup_strategy" == "ifneedbepullelsecachedbuild" ]; then
ViashDockerPullElseBuild $image_id $(ViashDockerBuildArgs "$engine_id")
else
ViashError "Unrecognised Docker strategy: $setup_strategy"
exit 1
fi
elif [ "$setup_strategy" == "push" -o "$setup_strategy" == "forcepush" -o "$setup_strategy" == "alwayspush" ]; then
ViashDockerPush "$image_id"
elif [ "$setup_strategy" == "pushifnotpresent" -o "$setup_strategy" == "gentlepush" -o "$setup_strategy" == "maybepush" ]; then
local save=$-; set +e
ViashDockerRemoteTagCheck $image_id
local outCheck=$?
[[ $save =~ e ]] && set -e
if [ $outCheck -eq 0 ]; then
ViashNotice "Container '$image_id' exists, doing nothing."
else
ViashNotice "Container '$image_id' does not yet exist."
ViashDockerPush "$image_id"
fi
elif [ "$setup_strategy" == "donothing" -o "$setup_strategy" == "meh" ]; then
ViashNotice "Skipping setup."
else
ViashError "Unrecognised Docker strategy: $setup_strategy"
exit 1
fi
}
# ViashDockerCheckCommands: Check whether a docker container has the required commands
#
# $1 : image identifier with format `[registry/]image[:tag]`
# $@ : commands to verify being present
# examples:
# ViashDockerCheckCommands bash:4.0 bash ps foo
function ViashDockerCheckCommands {
local image_id="$1"
shift 1
local commands="$@"
local save=$-; set +e
local missing # mark 'missing' as local in advance, otherwise the exit code of the command will be missing and always be '0'
missing=$(docker run --rm --entrypoint=sh "$image_id" -c "for command in $commands; do command -v \$command >/dev/null 2>&1; if [ \$? -ne 0 ]; then echo \$command; exit 1; fi; done")
local outCheck=$?
[[ $save =~ e ]] && set -e
if [ $outCheck -ne 0 ]; then
ViashError "Docker container '$image_id' does not contain command '$missing'."
exit 1
fi
}
# ViashDockerBuild: build a docker image
# $1 : image identifier with format `[registry/]image[:tag]`
# $... : additional arguments to pass to docker build
# $VIASH_META_TEMP_DIR : temporary directory to store dockerfile & optional resources in
# $VIASH_META_NAME : name of the component
# $VIASH_META_RESOURCES_DIR : directory containing the resources
# $VIASH_VERBOSITY : verbosity level
# exit code $? : whether or not the image was built successfully
function ViashDockerBuild {
local image_id="$1"
shift 1
# create temporary directory to store dockerfile & optional resources in
local tmpdir=$(mktemp -d "$VIASH_META_TEMP_DIR/dockerbuild-$VIASH_META_NAME-XXXXXX")
local dockerfile="$tmpdir/Dockerfile"
function clean_up {
rm -rf "$tmpdir"
}
trap clean_up EXIT
# store dockerfile and resources
ViashDockerfile "$VIASH_ENGINE_ID" > "$dockerfile"
# generate the build command
local docker_build_cmd="docker build -t '$image_id' $@ '$VIASH_META_RESOURCES_DIR' -f '$dockerfile'"
# build the container
ViashNotice "Building container '$image_id' with Dockerfile"
ViashInfo "$docker_build_cmd"
local save=$-; set +e
if [ $VIASH_VERBOSITY -ge $VIASH_LOGCODE_INFO ]; then
eval $docker_build_cmd
else
eval $docker_build_cmd &> "$tmpdir/docker_build.log"
fi
# check exit code
local out=$?
[[ $save =~ e ]] && set -e
if [ $out -ne 0 ]; then
ViashError "Error occurred while building container '$image_id'"
if [ $VIASH_VERBOSITY -lt $VIASH_LOGCODE_INFO ]; then
ViashError "Transcript: --------------------------------"
cat "$tmpdir/docker_build.log"
ViashError "End of transcript --------------------------"
fi
exit 1
fi
}
######## End of helper functions for setting up Docker images for viash ########
# ViashDockerFile: print the dockerfile to stdout
# $1 : engine identifier
# return : dockerfile required to run this component
# examples:
# ViashDockerFile
function ViashDockerfile {
local engine_id="$1"
if [[ "$engine_id" == "docker" ]]; then
cat << 'VIASHDOCKER'
FROM quay.io/biocontainers/samtools:1.19.2--h50ea8bc_1
ENTRYPOINT []
RUN samtools --version 2>&1 | grep -E '^(samtools|Using htslib)' | \
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-02T13:10:11Z"
LABEL org.opencontainers.image.source="https://github.com/samtools/samtools"
LABEL org.opencontainers.image.revision="f3e87e58c921a4ef59fe8946edcd066cdfc8de9c"
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 "samtools_view main"
exit
;;
--input)
[ -n "$VIASH_PAR_INPUT" ] && ViashError Bad arguments for option \'--input\': \'$VIASH_PAR_INPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_INPUT="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --input. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--input=*)
[ -n "$VIASH_PAR_INPUT" ] && ViashError Bad arguments for option \'--input=*\': \'$VIASH_PAR_INPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_INPUT=$(ViashRemoveFlags "$1")
shift 1
;;
--fai_reference)
[ -n "$VIASH_PAR_FAI_REFERENCE" ] && ViashError Bad arguments for option \'--fai_reference\': \'$VIASH_PAR_FAI_REFERENCE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_FAI_REFERENCE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --fai_reference. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--fai_reference=*)
[ -n "$VIASH_PAR_FAI_REFERENCE" ] && ViashError Bad arguments for option \'--fai_reference=*\': \'$VIASH_PAR_FAI_REFERENCE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_FAI_REFERENCE=$(ViashRemoveFlags "$1")
shift 1
;;
-t)
[ -n "$VIASH_PAR_FAI_REFERENCE" ] && ViashError Bad arguments for option \'-t\': \'$VIASH_PAR_FAI_REFERENCE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_FAI_REFERENCE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -t. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--reference)
[ -n "$VIASH_PAR_REFERENCE" ] && ViashError Bad arguments for option \'--reference\': \'$VIASH_PAR_REFERENCE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REFERENCE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --reference. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--reference=*)
[ -n "$VIASH_PAR_REFERENCE" ] && ViashError Bad arguments for option \'--reference=*\': \'$VIASH_PAR_REFERENCE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REFERENCE=$(ViashRemoveFlags "$1")
shift 1
;;
-T)
[ -n "$VIASH_PAR_REFERENCE" ] && ViashError Bad arguments for option \'-T\': \'$VIASH_PAR_REFERENCE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REFERENCE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -T. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--target_file)
[ -n "$VIASH_PAR_TARGET_FILE" ] && ViashError Bad arguments for option \'--target_file\': \'$VIASH_PAR_TARGET_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TARGET_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --target_file. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--target_file=*)
[ -n "$VIASH_PAR_TARGET_FILE" ] && ViashError Bad arguments for option \'--target_file=*\': \'$VIASH_PAR_TARGET_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TARGET_FILE=$(ViashRemoveFlags "$1")
shift 1
;;
-L)
[ -n "$VIASH_PAR_TARGET_FILE" ] && ViashError Bad arguments for option \'-L\': \'$VIASH_PAR_TARGET_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TARGET_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -L. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--region_file)
[ -n "$VIASH_PAR_REGION_FILE" ] && ViashError Bad arguments for option \'--region_file\': \'$VIASH_PAR_REGION_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REGION_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --region_file. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--region_file=*)
[ -n "$VIASH_PAR_REGION_FILE" ] && ViashError Bad arguments for option \'--region_file=*\': \'$VIASH_PAR_REGION_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REGION_FILE=$(ViashRemoveFlags "$1")
shift 1
;;
--qname_file)
[ -n "$VIASH_PAR_QNAME_FILE" ] && ViashError Bad arguments for option \'--qname_file\': \'$VIASH_PAR_QNAME_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_QNAME_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --qname_file. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--qname_file=*)
[ -n "$VIASH_PAR_QNAME_FILE" ] && ViashError Bad arguments for option \'--qname_file=*\': \'$VIASH_PAR_QNAME_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_QNAME_FILE=$(ViashRemoveFlags "$1")
shift 1
;;
-N)
[ -n "$VIASH_PAR_QNAME_FILE" ] && ViashError Bad arguments for option \'-N\': \'$VIASH_PAR_QNAME_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_QNAME_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -N. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--read_group_file)
[ -n "$VIASH_PAR_READ_GROUP_FILE" ] && ViashError Bad arguments for option \'--read_group_file\': \'$VIASH_PAR_READ_GROUP_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_READ_GROUP_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --read_group_file. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--read_group_file=*)
[ -n "$VIASH_PAR_READ_GROUP_FILE" ] && ViashError Bad arguments for option \'--read_group_file=*\': \'$VIASH_PAR_READ_GROUP_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_READ_GROUP_FILE=$(ViashRemoveFlags "$1")
shift 1
;;
-R)
[ -n "$VIASH_PAR_READ_GROUP_FILE" ] && ViashError Bad arguments for option \'-R\': \'$VIASH_PAR_READ_GROUP_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_READ_GROUP_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -R. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--use_index)
[ -n "$VIASH_PAR_USE_INDEX" ] && ViashError Bad arguments for option \'--use_index\': \'$VIASH_PAR_USE_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_USE_INDEX=true
shift 1
;;
-M)
[ -n "$VIASH_PAR_USE_INDEX" ] && ViashError Bad arguments for option \'-M\': \'$VIASH_PAR_USE_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_USE_INDEX=true
shift 1
;;
--output)
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --output. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--output=*)
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output=*\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT=$(ViashRemoveFlags "$1")
shift 1
;;
-o)
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'-o\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -o. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--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=true
shift 1
;;
-b)
[ -n "$VIASH_PAR_BAM" ] && ViashError Bad arguments for option \'-b\': \'$VIASH_PAR_BAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_BAM=true
shift 1
;;
--cram)
[ -n "$VIASH_PAR_CRAM" ] && ViashError Bad arguments for option \'--cram\': \'$VIASH_PAR_CRAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_CRAM=true
shift 1
;;
-C)
[ -n "$VIASH_PAR_CRAM" ] && ViashError Bad arguments for option \'-C\': \'$VIASH_PAR_CRAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_CRAM=true
shift 1
;;
--fast)
[ -n "$VIASH_PAR_FAST" ] && ViashError Bad arguments for option \'--fast\': \'$VIASH_PAR_FAST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_FAST=true
shift 1
;;
--uncompressed)
[ -n "$VIASH_PAR_UNCOMPRESSED" ] && ViashError Bad arguments for option \'--uncompressed\': \'$VIASH_PAR_UNCOMPRESSED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_UNCOMPRESSED=true
shift 1
;;
-u)
[ -n "$VIASH_PAR_UNCOMPRESSED" ] && ViashError Bad arguments for option \'-u\': \'$VIASH_PAR_UNCOMPRESSED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_UNCOMPRESSED=true
shift 1
;;
--with_header)
[ -n "$VIASH_PAR_WITH_HEADER" ] && ViashError Bad arguments for option \'--with_header\': \'$VIASH_PAR_WITH_HEADER\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_WITH_HEADER=true
shift 1
;;
--header_only)
[ -n "$VIASH_PAR_HEADER_ONLY" ] && ViashError Bad arguments for option \'--header_only\': \'$VIASH_PAR_HEADER_ONLY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_HEADER_ONLY=true
shift 1
;;
-H)
[ -n "$VIASH_PAR_HEADER_ONLY" ] && ViashError Bad arguments for option \'-H\': \'$VIASH_PAR_HEADER_ONLY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_HEADER_ONLY=true
shift 1
;;
--no_header)
[ -n "$VIASH_PAR_NO_HEADER" ] && ViashError Bad arguments for option \'--no_header\': \'$VIASH_PAR_NO_HEADER\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_NO_HEADER=true
shift 1
;;
--count)
[ -n "$VIASH_PAR_COUNT" ] && ViashError Bad arguments for option \'--count\': \'$VIASH_PAR_COUNT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_COUNT=true
shift 1
;;
-c)
[ -n "$VIASH_PAR_COUNT" ] && ViashError Bad arguments for option \'-c\': \'$VIASH_PAR_COUNT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_COUNT=true
shift 1
;;
--output_unselected)
[ -n "$VIASH_PAR_OUTPUT_UNSELECTED" ] && ViashError Bad arguments for option \'--output_unselected\': \'$VIASH_PAR_OUTPUT_UNSELECTED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_UNSELECTED="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --output_unselected. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--output_unselected=*)
[ -n "$VIASH_PAR_OUTPUT_UNSELECTED" ] && ViashError Bad arguments for option \'--output_unselected=*\': \'$VIASH_PAR_OUTPUT_UNSELECTED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_UNSELECTED=$(ViashRemoveFlags "$1")
shift 1
;;
-U)
[ -n "$VIASH_PAR_OUTPUT_UNSELECTED" ] && ViashError Bad arguments for option \'-U\': \'$VIASH_PAR_OUTPUT_UNSELECTED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_UNSELECTED="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -U. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--unmap)
[ -n "$VIASH_PAR_UNMAP" ] && ViashError Bad arguments for option \'--unmap\': \'$VIASH_PAR_UNMAP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_UNMAP=true
shift 1
;;
-p)
[ -n "$VIASH_PAR_UNMAP" ] && ViashError Bad arguments for option \'-p\': \'$VIASH_PAR_UNMAP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_UNMAP=true
shift 1
;;
--read_group)
[ -n "$VIASH_PAR_READ_GROUP" ] && ViashError Bad arguments for option \'--read_group\': \'$VIASH_PAR_READ_GROUP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_READ_GROUP="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --read_group. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--read_group=*)
[ -n "$VIASH_PAR_READ_GROUP" ] && ViashError Bad arguments for option \'--read_group=*\': \'$VIASH_PAR_READ_GROUP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_READ_GROUP=$(ViashRemoveFlags "$1")
shift 1
;;
-r)
[ -n "$VIASH_PAR_READ_GROUP" ] && ViashError Bad arguments for option \'-r\': \'$VIASH_PAR_READ_GROUP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_READ_GROUP="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -r. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--tag)
[ -n "$VIASH_PAR_TAG" ] && ViashError Bad arguments for option \'--tag\': \'$VIASH_PAR_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TAG="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --tag. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--tag=*)
[ -n "$VIASH_PAR_TAG" ] && ViashError Bad arguments for option \'--tag=*\': \'$VIASH_PAR_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TAG=$(ViashRemoveFlags "$1")
shift 1
;;
-d)
[ -n "$VIASH_PAR_TAG" ] && ViashError Bad arguments for option \'-d\': \'$VIASH_PAR_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TAG="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -d. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--tag_file)
[ -n "$VIASH_PAR_TAG_FILE" ] && ViashError Bad arguments for option \'--tag_file\': \'$VIASH_PAR_TAG_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TAG_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --tag_file. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--tag_file=*)
[ -n "$VIASH_PAR_TAG_FILE" ] && ViashError Bad arguments for option \'--tag_file=*\': \'$VIASH_PAR_TAG_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TAG_FILE=$(ViashRemoveFlags "$1")
shift 1
;;
-D)
[ -n "$VIASH_PAR_TAG_FILE" ] && ViashError Bad arguments for option \'-D\': \'$VIASH_PAR_TAG_FILE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_TAG_FILE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -D. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--min_MQ)
[ -n "$VIASH_PAR_MIN_MQ" ] && ViashError Bad arguments for option \'--min_MQ\': \'$VIASH_PAR_MIN_MQ\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_MIN_MQ="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --min_MQ. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--min_MQ=*)
[ -n "$VIASH_PAR_MIN_MQ" ] && ViashError Bad arguments for option \'--min_MQ=*\': \'$VIASH_PAR_MIN_MQ\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_MIN_MQ=$(ViashRemoveFlags "$1")
shift 1
;;
-q)
[ -n "$VIASH_PAR_MIN_MQ" ] && ViashError Bad arguments for option \'-q\': \'$VIASH_PAR_MIN_MQ\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_MIN_MQ="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -q. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--library)
[ -n "$VIASH_PAR_LIBRARY" ] && ViashError Bad arguments for option \'--library\': \'$VIASH_PAR_LIBRARY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_LIBRARY="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --library. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--library=*)
[ -n "$VIASH_PAR_LIBRARY" ] && ViashError Bad arguments for option \'--library=*\': \'$VIASH_PAR_LIBRARY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_LIBRARY=$(ViashRemoveFlags "$1")
shift 1
;;
-l)
[ -n "$VIASH_PAR_LIBRARY" ] && ViashError Bad arguments for option \'-l\': \'$VIASH_PAR_LIBRARY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_LIBRARY="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -l. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--min_qlen)
[ -n "$VIASH_PAR_MIN_QLEN" ] && ViashError Bad arguments for option \'--min_qlen\': \'$VIASH_PAR_MIN_QLEN\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_MIN_QLEN="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --min_qlen. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--min_qlen=*)
[ -n "$VIASH_PAR_MIN_QLEN" ] && ViashError Bad arguments for option \'--min_qlen=*\': \'$VIASH_PAR_MIN_QLEN\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_MIN_QLEN=$(ViashRemoveFlags "$1")
shift 1
;;
-m)
[ -n "$VIASH_PAR_MIN_QLEN" ] && ViashError Bad arguments for option \'-m\': \'$VIASH_PAR_MIN_QLEN\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_MIN_QLEN="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -m. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--expr)
[ -n "$VIASH_PAR_EXPR" ] && ViashError Bad arguments for option \'--expr\': \'$VIASH_PAR_EXPR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXPR="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --expr. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--expr=*)
[ -n "$VIASH_PAR_EXPR" ] && ViashError Bad arguments for option \'--expr=*\': \'$VIASH_PAR_EXPR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXPR=$(ViashRemoveFlags "$1")
shift 1
;;
-e)
[ -n "$VIASH_PAR_EXPR" ] && ViashError Bad arguments for option \'-e\': \'$VIASH_PAR_EXPR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXPR="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -e. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--require_flags)
[ -n "$VIASH_PAR_REQUIRE_FLAGS" ] && ViashError Bad arguments for option \'--require_flags\': \'$VIASH_PAR_REQUIRE_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REQUIRE_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --require_flags. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--require_flags=*)
[ -n "$VIASH_PAR_REQUIRE_FLAGS" ] && ViashError Bad arguments for option \'--require_flags=*\': \'$VIASH_PAR_REQUIRE_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REQUIRE_FLAGS=$(ViashRemoveFlags "$1")
shift 1
;;
-f)
[ -n "$VIASH_PAR_REQUIRE_FLAGS" ] && ViashError Bad arguments for option \'-f\': \'$VIASH_PAR_REQUIRE_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REQUIRE_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -f. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--excl_flags)
[ -n "$VIASH_PAR_EXCL_FLAGS" ] && ViashError Bad arguments for option \'--excl_flags\': \'$VIASH_PAR_EXCL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXCL_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --excl_flags. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--excl_flags=*)
[ -n "$VIASH_PAR_EXCL_FLAGS" ] && ViashError Bad arguments for option \'--excl_flags=*\': \'$VIASH_PAR_EXCL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXCL_FLAGS=$(ViashRemoveFlags "$1")
shift 1
;;
-F)
[ -n "$VIASH_PAR_EXCL_FLAGS" ] && ViashError Bad arguments for option \'-F\': \'$VIASH_PAR_EXCL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXCL_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -F. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--excl_all_flags)
[ -n "$VIASH_PAR_EXCL_ALL_FLAGS" ] && ViashError Bad arguments for option \'--excl_all_flags\': \'$VIASH_PAR_EXCL_ALL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXCL_ALL_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --excl_all_flags. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--excl_all_flags=*)
[ -n "$VIASH_PAR_EXCL_ALL_FLAGS" ] && ViashError Bad arguments for option \'--excl_all_flags=*\': \'$VIASH_PAR_EXCL_ALL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXCL_ALL_FLAGS=$(ViashRemoveFlags "$1")
shift 1
;;
-G)
[ -n "$VIASH_PAR_EXCL_ALL_FLAGS" ] && ViashError Bad arguments for option \'-G\': \'$VIASH_PAR_EXCL_ALL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_EXCL_ALL_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -G. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--incl_flags)
[ -n "$VIASH_PAR_INCL_FLAGS" ] && ViashError Bad arguments for option \'--incl_flags\': \'$VIASH_PAR_INCL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_INCL_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --incl_flags. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--incl_flags=*)
[ -n "$VIASH_PAR_INCL_FLAGS" ] && ViashError Bad arguments for option \'--incl_flags=*\': \'$VIASH_PAR_INCL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_INCL_FLAGS=$(ViashRemoveFlags "$1")
shift 1
;;
--rf)
[ -n "$VIASH_PAR_INCL_FLAGS" ] && ViashError Bad arguments for option \'--rf\': \'$VIASH_PAR_INCL_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_INCL_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --rf. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--remove_tag)
[ -n "$VIASH_PAR_REMOVE_TAG" ] && ViashError Bad arguments for option \'--remove_tag\': \'$VIASH_PAR_REMOVE_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REMOVE_TAG="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --remove_tag. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--remove_tag=*)
[ -n "$VIASH_PAR_REMOVE_TAG" ] && ViashError Bad arguments for option \'--remove_tag=*\': \'$VIASH_PAR_REMOVE_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REMOVE_TAG=$(ViashRemoveFlags "$1")
shift 1
;;
-x)
[ -n "$VIASH_PAR_REMOVE_TAG" ] && ViashError Bad arguments for option \'-x\': \'$VIASH_PAR_REMOVE_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REMOVE_TAG="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -x. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--keep_tag)
[ -n "$VIASH_PAR_KEEP_TAG" ] && ViashError Bad arguments for option \'--keep_tag\': \'$VIASH_PAR_KEEP_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_KEEP_TAG="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --keep_tag. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--keep_tag=*)
[ -n "$VIASH_PAR_KEEP_TAG" ] && ViashError Bad arguments for option \'--keep_tag=*\': \'$VIASH_PAR_KEEP_TAG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_KEEP_TAG=$(ViashRemoveFlags "$1")
shift 1
;;
--remove_B)
[ -n "$VIASH_PAR_REMOVE_B" ] && ViashError Bad arguments for option \'--remove_B\': \'$VIASH_PAR_REMOVE_B\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REMOVE_B=true
shift 1
;;
-B)
[ -n "$VIASH_PAR_REMOVE_B" ] && ViashError Bad arguments for option \'-B\': \'$VIASH_PAR_REMOVE_B\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REMOVE_B=true
shift 1
;;
--add_flags)
[ -n "$VIASH_PAR_ADD_FLAGS" ] && ViashError Bad arguments for option \'--add_flags\': \'$VIASH_PAR_ADD_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_ADD_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --add_flags. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--add_flags=*)
[ -n "$VIASH_PAR_ADD_FLAGS" ] && ViashError Bad arguments for option \'--add_flags=*\': \'$VIASH_PAR_ADD_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_ADD_FLAGS=$(ViashRemoveFlags "$1")
shift 1
;;
--remove_flags)
[ -n "$VIASH_PAR_REMOVE_FLAGS" ] && ViashError Bad arguments for option \'--remove_flags\': \'$VIASH_PAR_REMOVE_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REMOVE_FLAGS="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --remove_flags. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--remove_flags=*)
[ -n "$VIASH_PAR_REMOVE_FLAGS" ] && ViashError Bad arguments for option \'--remove_flags=*\': \'$VIASH_PAR_REMOVE_FLAGS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_REMOVE_FLAGS=$(ViashRemoveFlags "$1")
shift 1
;;
--subsample)
[ -n "$VIASH_PAR_SUBSAMPLE" ] && ViashError Bad arguments for option \'--subsample\': \'$VIASH_PAR_SUBSAMPLE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_SUBSAMPLE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --subsample. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--subsample=*)
[ -n "$VIASH_PAR_SUBSAMPLE" ] && ViashError Bad arguments for option \'--subsample=*\': \'$VIASH_PAR_SUBSAMPLE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_SUBSAMPLE=$(ViashRemoveFlags "$1")
shift 1
;;
--subsample_seed)
[ -n "$VIASH_PAR_SUBSAMPLE_SEED" ] && ViashError Bad arguments for option \'--subsample_seed\': \'$VIASH_PAR_SUBSAMPLE_SEED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_SUBSAMPLE_SEED="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --subsample_seed. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--subsample_seed=*)
[ -n "$VIASH_PAR_SUBSAMPLE_SEED" ] && ViashError Bad arguments for option \'--subsample_seed=*\': \'$VIASH_PAR_SUBSAMPLE_SEED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_SUBSAMPLE_SEED=$(ViashRemoveFlags "$1")
shift 1
;;
--fetch_pairs)
[ -n "$VIASH_PAR_FETCH_PAIRS" ] && ViashError Bad arguments for option \'--fetch_pairs\': \'$VIASH_PAR_FETCH_PAIRS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_FETCH_PAIRS=true
shift 1
;;
-P)
[ -n "$VIASH_PAR_FETCH_PAIRS" ] && ViashError Bad arguments for option \'-P\': \'$VIASH_PAR_FETCH_PAIRS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_FETCH_PAIRS=true
shift 1
;;
--customized_index)
[ -n "$VIASH_PAR_CUSTOMIZED_INDEX" ] && ViashError Bad arguments for option \'--customized_index\': \'$VIASH_PAR_CUSTOMIZED_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_CUSTOMIZED_INDEX=true
shift 1
;;
-X)
[ -n "$VIASH_PAR_CUSTOMIZED_INDEX" ] && ViashError Bad arguments for option \'-X\': \'$VIASH_PAR_CUSTOMIZED_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_CUSTOMIZED_INDEX=true
shift 1
;;
--sanitize)
[ -n "$VIASH_PAR_SANITIZE" ] && ViashError Bad arguments for option \'--sanitize\': \'$VIASH_PAR_SANITIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_SANITIZE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --sanitize. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--sanitize=*)
[ -n "$VIASH_PAR_SANITIZE" ] && ViashError Bad arguments for option \'--sanitize=*\': \'$VIASH_PAR_SANITIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_SANITIZE=$(ViashRemoveFlags "$1")
shift 1
;;
-z)
[ -n "$VIASH_PAR_SANITIZE" ] && ViashError Bad arguments for option \'-z\': \'$VIASH_PAR_SANITIZE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_SANITIZE="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -z. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--no_PG)
[ -n "$VIASH_PAR_NO_PG" ] && ViashError Bad arguments for option \'--no_PG\': \'$VIASH_PAR_NO_PG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_NO_PG=true
shift 1
;;
--input_fmt_option)
[ -n "$VIASH_PAR_INPUT_FMT_OPTION" ] && ViashError Bad arguments for option \'--input_fmt_option\': \'$VIASH_PAR_INPUT_FMT_OPTION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_INPUT_FMT_OPTION="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --input_fmt_option. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--input_fmt_option=*)
[ -n "$VIASH_PAR_INPUT_FMT_OPTION" ] && ViashError Bad arguments for option \'--input_fmt_option=*\': \'$VIASH_PAR_INPUT_FMT_OPTION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_INPUT_FMT_OPTION=$(ViashRemoveFlags "$1")
shift 1
;;
--output_fmt)
[ -n "$VIASH_PAR_OUTPUT_FMT" ] && ViashError Bad arguments for option \'--output_fmt\': \'$VIASH_PAR_OUTPUT_FMT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_FMT="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --output_fmt. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--output_fmt=*)
[ -n "$VIASH_PAR_OUTPUT_FMT" ] && ViashError Bad arguments for option \'--output_fmt=*\': \'$VIASH_PAR_OUTPUT_FMT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_FMT=$(ViashRemoveFlags "$1")
shift 1
;;
-O)
[ -n "$VIASH_PAR_OUTPUT_FMT" ] && ViashError Bad arguments for option \'-O\': \'$VIASH_PAR_OUTPUT_FMT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_FMT="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to -O. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--output_fmt_option)
[ -n "$VIASH_PAR_OUTPUT_FMT_OPTION" ] && ViashError Bad arguments for option \'--output_fmt_option\': \'$VIASH_PAR_OUTPUT_FMT_OPTION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_FMT_OPTION="$2"
[ $# -lt 2 ] && ViashError Not enough arguments passed to --output_fmt_option. Use "--help" to get more information on the parameters. && exit 1
shift 2
;;
--output_fmt_option=*)
[ -n "$VIASH_PAR_OUTPUT_FMT_OPTION" ] && ViashError Bad arguments for option \'--output_fmt_option=*\': \'$VIASH_PAR_OUTPUT_FMT_OPTION\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_OUTPUT_FMT_OPTION=$(ViashRemoveFlags "$1")
shift 1
;;
--write_index)
[ -n "$VIASH_PAR_WRITE_INDEX" ] && ViashError Bad arguments for option \'--write_index\': \'$VIASH_PAR_WRITE_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
VIASH_PAR_WRITE_INDEX=true
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/samtools/samtools_view: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_INPUT+x} ]; then
ViashError '--input' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_PAR_OUTPUT+x} ]; then
ViashError '--output' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_META_NAME+x} ]; then
ViashError 'name' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then
ViashError 'functionality_name' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_META_RESOURCES_DIR+x} ]; then
ViashError 'resources_dir' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_META_EXECUTABLE+x} ]; then
ViashError 'executable' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_META_CONFIG+x} ]; then
ViashError 'config' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
if [ -z ${VIASH_META_TEMP_DIR+x} ]; then
ViashError 'temp_dir' is a required argument. Use "--help" to get more information on the parameters.
exit 1
fi
# filling in defaults
if [ -z ${VIASH_PAR_USE_INDEX+x} ]; then
VIASH_PAR_USE_INDEX="false"
fi
if [ -z ${VIASH_PAR_BAM+x} ]; then
VIASH_PAR_BAM="false"
fi
if [ -z ${VIASH_PAR_CRAM+x} ]; then
VIASH_PAR_CRAM="false"
fi
if [ -z ${VIASH_PAR_FAST+x} ]; then
VIASH_PAR_FAST="false"
fi
if [ -z ${VIASH_PAR_UNCOMPRESSED+x} ]; then
VIASH_PAR_UNCOMPRESSED="false"
fi
if [ -z ${VIASH_PAR_WITH_HEADER+x} ]; then
VIASH_PAR_WITH_HEADER="false"
fi
if [ -z ${VIASH_PAR_HEADER_ONLY+x} ]; then
VIASH_PAR_HEADER_ONLY="false"
fi
if [ -z ${VIASH_PAR_NO_HEADER+x} ]; then
VIASH_PAR_NO_HEADER="false"
fi
if [ -z ${VIASH_PAR_COUNT+x} ]; then
VIASH_PAR_COUNT="false"
fi
if [ -z ${VIASH_PAR_UNMAP+x} ]; then
VIASH_PAR_UNMAP="false"
fi
if [ -z ${VIASH_PAR_MIN_MQ+x} ]; then
VIASH_PAR_MIN_MQ="0"
fi
if [ -z ${VIASH_PAR_MIN_QLEN+x} ]; then
VIASH_PAR_MIN_QLEN="0"
fi
if [ -z ${VIASH_PAR_REMOVE_B+x} ]; then
VIASH_PAR_REMOVE_B="false"
fi
if [ -z ${VIASH_PAR_SUBSAMPLE_SEED+x} ]; then
VIASH_PAR_SUBSAMPLE_SEED="0"
fi
if [ -z ${VIASH_PAR_FETCH_PAIRS+x} ]; then
VIASH_PAR_FETCH_PAIRS="false"
fi
if [ -z ${VIASH_PAR_CUSTOMIZED_INDEX+x} ]; then
VIASH_PAR_CUSTOMIZED_INDEX="false"
fi
if [ -z ${VIASH_PAR_NO_PG+x} ]; then
VIASH_PAR_NO_PG="false"
fi
if [ -z ${VIASH_PAR_WRITE_INDEX+x} ]; then
VIASH_PAR_WRITE_INDEX="false"
fi
# check whether required files exist
if [ ! -z "$VIASH_PAR_INPUT" ] && [ ! -e "$VIASH_PAR_INPUT" ]; then
ViashError "Input file '$VIASH_PAR_INPUT' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_FAI_REFERENCE" ] && [ ! -e "$VIASH_PAR_FAI_REFERENCE" ]; then
ViashError "Input file '$VIASH_PAR_FAI_REFERENCE' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_REFERENCE" ] && [ ! -e "$VIASH_PAR_REFERENCE" ]; then
ViashError "Input file '$VIASH_PAR_REFERENCE' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_TARGET_FILE" ] && [ ! -e "$VIASH_PAR_TARGET_FILE" ]; then
ViashError "Input file '$VIASH_PAR_TARGET_FILE' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_REGION_FILE" ] && [ ! -e "$VIASH_PAR_REGION_FILE" ]; then
ViashError "Input file '$VIASH_PAR_REGION_FILE' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_QNAME_FILE" ] && [ ! -e "$VIASH_PAR_QNAME_FILE" ]; then
ViashError "Input file '$VIASH_PAR_QNAME_FILE' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_READ_GROUP_FILE" ] && [ ! -e "$VIASH_PAR_READ_GROUP_FILE" ]; then
ViashError "Input file '$VIASH_PAR_READ_GROUP_FILE' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_OUTPUT_UNSELECTED" ] && [ ! -e "$VIASH_PAR_OUTPUT_UNSELECTED" ]; then
ViashError "Input file '$VIASH_PAR_OUTPUT_UNSELECTED' does not exist."
exit 1
fi
if [ ! -z "$VIASH_PAR_TAG_FILE" ] && [ ! -e "$VIASH_PAR_TAG_FILE" ]; then
ViashError "Input file '$VIASH_PAR_TAG_FILE' does not exist."
exit 1
fi
# check whether parameters values are of the right type
if [[ -n "$VIASH_PAR_USE_INDEX" ]]; then
if ! [[ "$VIASH_PAR_USE_INDEX" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--use_index' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_BAM" ]]; then
if ! [[ "$VIASH_PAR_BAM" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--bam' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_CRAM" ]]; then
if ! [[ "$VIASH_PAR_CRAM" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--cram' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_FAST" ]]; then
if ! [[ "$VIASH_PAR_FAST" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--fast' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_UNCOMPRESSED" ]]; then
if ! [[ "$VIASH_PAR_UNCOMPRESSED" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--uncompressed' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_WITH_HEADER" ]]; then
if ! [[ "$VIASH_PAR_WITH_HEADER" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--with_header' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_HEADER_ONLY" ]]; then
if ! [[ "$VIASH_PAR_HEADER_ONLY" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--header_only' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_NO_HEADER" ]]; then
if ! [[ "$VIASH_PAR_NO_HEADER" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--no_header' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_COUNT" ]]; then
if ! [[ "$VIASH_PAR_COUNT" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--count' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_UNMAP" ]]; then
if ! [[ "$VIASH_PAR_UNMAP" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--unmap' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_MIN_MQ" ]]; then
if ! [[ "$VIASH_PAR_MIN_MQ" =~ ^[-+]?[0-9]+$ ]]; then
ViashError '--min_MQ' has to be an integer. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_MIN_QLEN" ]]; then
if ! [[ "$VIASH_PAR_MIN_QLEN" =~ ^[-+]?[0-9]+$ ]]; then
ViashError '--min_qlen' has to be an integer. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_EXCL_ALL_FLAGS" ]]; then
if ! [[ "$VIASH_PAR_EXCL_ALL_FLAGS" =~ ^[-+]?[0-9]+$ ]]; then
ViashError '--excl_all_flags' has to be an integer. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_REMOVE_B" ]]; then
if ! [[ "$VIASH_PAR_REMOVE_B" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--remove_B' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_SUBSAMPLE" ]]; then
if ! [[ "$VIASH_PAR_SUBSAMPLE" =~ ^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$ ]]; then
ViashError '--subsample' has to be a double. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_SUBSAMPLE_SEED" ]]; then
if ! [[ "$VIASH_PAR_SUBSAMPLE_SEED" =~ ^[-+]?[0-9]+$ ]]; then
ViashError '--subsample_seed' has to be an integer. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_FETCH_PAIRS" ]]; then
if ! [[ "$VIASH_PAR_FETCH_PAIRS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--fetch_pairs' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_CUSTOMIZED_INDEX" ]]; then
if ! [[ "$VIASH_PAR_CUSTOMIZED_INDEX" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--customized_index' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_NO_PG" ]]; then
if ! [[ "$VIASH_PAR_NO_PG" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--no_PG' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_PAR_WRITE_INDEX" ]]; then
if ! [[ "$VIASH_PAR_WRITE_INDEX" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
ViashError '--write_index' has to be a boolean_true. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_CPUS" ]]; then
if ! [[ "$VIASH_META_CPUS" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'cpus' has to be an integer. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_B" ]]; then
if ! [[ "$VIASH_META_MEMORY_B" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_b' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_KB" ]]; then
if ! [[ "$VIASH_META_MEMORY_KB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_kb' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_MB" ]]; then
if ! [[ "$VIASH_META_MEMORY_MB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_mb' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_GB" ]]; then
if ! [[ "$VIASH_META_MEMORY_GB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_gb' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_TB" ]]; then
if ! [[ "$VIASH_META_MEMORY_TB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_tb' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_PB" ]]; then
if ! [[ "$VIASH_META_MEMORY_PB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_pb' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_KIB" ]]; then
if ! [[ "$VIASH_META_MEMORY_KIB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_kib' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_MIB" ]]; then
if ! [[ "$VIASH_META_MEMORY_MIB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_mib' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_GIB" ]]; then
if ! [[ "$VIASH_META_MEMORY_GIB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_gib' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_TIB" ]]; then
if ! [[ "$VIASH_META_MEMORY_TIB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_tib' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
if [[ -n "$VIASH_META_MEMORY_PIB" ]]; then
if ! [[ "$VIASH_META_MEMORY_PIB" =~ ^[-+]?[0-9]+$ ]]; then
ViashError 'memory_pib' has to be a long. Use "--help" to get more information on the parameters.
exit 1
fi
fi
# create parent directories of output files, if so desired
if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -d "$(dirname "$VIASH_PAR_OUTPUT")" ]; then
mkdir -p "$(dirname "$VIASH_PAR_OUTPUT")"
fi
if [ "$VIASH_ENGINE_ID" == "native" ] ; then
if [ "$VIASH_MODE" == "run" ]; then
VIASH_CMD="bash"
else
ViashError "Engine '$VIASH_ENGINE_ID' does not support mode '$VIASH_MODE'."
exit 1
fi
fi
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
# detect volumes from file arguments
VIASH_CHOWN_VARS=()
if [ ! -z "$VIASH_PAR_INPUT" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_INPUT")" )
VIASH_PAR_INPUT=$(ViashDockerAutodetectMount "$VIASH_PAR_INPUT")
fi
if [ ! -z "$VIASH_PAR_FAI_REFERENCE" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_FAI_REFERENCE")" )
VIASH_PAR_FAI_REFERENCE=$(ViashDockerAutodetectMount "$VIASH_PAR_FAI_REFERENCE")
fi
if [ ! -z "$VIASH_PAR_REFERENCE" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_REFERENCE")" )
VIASH_PAR_REFERENCE=$(ViashDockerAutodetectMount "$VIASH_PAR_REFERENCE")
fi
if [ ! -z "$VIASH_PAR_TARGET_FILE" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_TARGET_FILE")" )
VIASH_PAR_TARGET_FILE=$(ViashDockerAutodetectMount "$VIASH_PAR_TARGET_FILE")
fi
if [ ! -z "$VIASH_PAR_REGION_FILE" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_REGION_FILE")" )
VIASH_PAR_REGION_FILE=$(ViashDockerAutodetectMount "$VIASH_PAR_REGION_FILE")
fi
if [ ! -z "$VIASH_PAR_QNAME_FILE" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_QNAME_FILE")" )
VIASH_PAR_QNAME_FILE=$(ViashDockerAutodetectMount "$VIASH_PAR_QNAME_FILE")
fi
if [ ! -z "$VIASH_PAR_READ_GROUP_FILE" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_READ_GROUP_FILE")" )
VIASH_PAR_READ_GROUP_FILE=$(ViashDockerAutodetectMount "$VIASH_PAR_READ_GROUP_FILE")
fi
if [ ! -z "$VIASH_PAR_OUTPUT" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT")" )
VIASH_PAR_OUTPUT=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT")
VIASH_CHOWN_VARS+=( "$VIASH_PAR_OUTPUT" )
fi
if [ ! -z "$VIASH_PAR_OUTPUT_UNSELECTED" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_OUTPUT_UNSELECTED")" )
VIASH_PAR_OUTPUT_UNSELECTED=$(ViashDockerAutodetectMount "$VIASH_PAR_OUTPUT_UNSELECTED")
fi
if [ ! -z "$VIASH_PAR_TAG_FILE" ]; then
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_TAG_FILE")" )
VIASH_PAR_TAG_FILE=$(ViashDockerAutodetectMount "$VIASH_PAR_TAG_FILE")
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-samtools_view-XXXXXX").sh
function clean_up {
rm "\$tempscript"
}
function interrupt {
echo -e "\nCTRL-C Pressed..."
exit 1
}
trap clean_up EXIT
trap interrupt INT SIGINT
cat > "\$tempscript" << 'VIASHMAIN'
#!/bin/bash
## VIASH START
# The following code has been auto-generated by Viash.
$( if [ ! -z ${VIASH_PAR_INPUT+x} ]; then echo "${VIASH_PAR_INPUT}" | sed "s#'#'\"'\"'#g;s#.*#par_input='&'#" ; else echo "# par_input="; fi )
$( if [ ! -z ${VIASH_PAR_FAI_REFERENCE+x} ]; then echo "${VIASH_PAR_FAI_REFERENCE}" | sed "s#'#'\"'\"'#g;s#.*#par_fai_reference='&'#" ; else echo "# par_fai_reference="; fi )
$( if [ ! -z ${VIASH_PAR_REFERENCE+x} ]; then echo "${VIASH_PAR_REFERENCE}" | sed "s#'#'\"'\"'#g;s#.*#par_reference='&'#" ; else echo "# par_reference="; fi )
$( if [ ! -z ${VIASH_PAR_TARGET_FILE+x} ]; then echo "${VIASH_PAR_TARGET_FILE}" | sed "s#'#'\"'\"'#g;s#.*#par_target_file='&'#" ; else echo "# par_target_file="; fi )
$( if [ ! -z ${VIASH_PAR_REGION_FILE+x} ]; then echo "${VIASH_PAR_REGION_FILE}" | sed "s#'#'\"'\"'#g;s#.*#par_region_file='&'#" ; else echo "# par_region_file="; fi )
$( if [ ! -z ${VIASH_PAR_QNAME_FILE+x} ]; then echo "${VIASH_PAR_QNAME_FILE}" | sed "s#'#'\"'\"'#g;s#.*#par_qname_file='&'#" ; else echo "# par_qname_file="; fi )
$( if [ ! -z ${VIASH_PAR_READ_GROUP_FILE+x} ]; then echo "${VIASH_PAR_READ_GROUP_FILE}" | sed "s#'#'\"'\"'#g;s#.*#par_read_group_file='&'#" ; else echo "# par_read_group_file="; fi )
$( if [ ! -z ${VIASH_PAR_USE_INDEX+x} ]; then echo "${VIASH_PAR_USE_INDEX}" | sed "s#'#'\"'\"'#g;s#.*#par_use_index='&'#" ; else echo "# par_use_index="; fi )
$( if [ ! -z ${VIASH_PAR_OUTPUT+x} ]; then echo "${VIASH_PAR_OUTPUT}" | sed "s#'#'\"'\"'#g;s#.*#par_output='&'#" ; else echo "# par_output="; fi )
$( if [ ! -z ${VIASH_PAR_BAM+x} ]; then echo "${VIASH_PAR_BAM}" | sed "s#'#'\"'\"'#g;s#.*#par_bam='&'#" ; else echo "# par_bam="; fi )
$( if [ ! -z ${VIASH_PAR_CRAM+x} ]; then echo "${VIASH_PAR_CRAM}" | sed "s#'#'\"'\"'#g;s#.*#par_cram='&'#" ; else echo "# par_cram="; fi )
$( if [ ! -z ${VIASH_PAR_FAST+x} ]; then echo "${VIASH_PAR_FAST}" | sed "s#'#'\"'\"'#g;s#.*#par_fast='&'#" ; else echo "# par_fast="; fi )
$( if [ ! -z ${VIASH_PAR_UNCOMPRESSED+x} ]; then echo "${VIASH_PAR_UNCOMPRESSED}" | sed "s#'#'\"'\"'#g;s#.*#par_uncompressed='&'#" ; else echo "# par_uncompressed="; fi )
$( if [ ! -z ${VIASH_PAR_WITH_HEADER+x} ]; then echo "${VIASH_PAR_WITH_HEADER}" | sed "s#'#'\"'\"'#g;s#.*#par_with_header='&'#" ; else echo "# par_with_header="; fi )
$( if [ ! -z ${VIASH_PAR_HEADER_ONLY+x} ]; then echo "${VIASH_PAR_HEADER_ONLY}" | sed "s#'#'\"'\"'#g;s#.*#par_header_only='&'#" ; else echo "# par_header_only="; fi )
$( if [ ! -z ${VIASH_PAR_NO_HEADER+x} ]; then echo "${VIASH_PAR_NO_HEADER}" | sed "s#'#'\"'\"'#g;s#.*#par_no_header='&'#" ; else echo "# par_no_header="; fi )
$( if [ ! -z ${VIASH_PAR_COUNT+x} ]; then echo "${VIASH_PAR_COUNT}" | sed "s#'#'\"'\"'#g;s#.*#par_count='&'#" ; else echo "# par_count="; fi )
$( if [ ! -z ${VIASH_PAR_OUTPUT_UNSELECTED+x} ]; then echo "${VIASH_PAR_OUTPUT_UNSELECTED}" | sed "s#'#'\"'\"'#g;s#.*#par_output_unselected='&'#" ; else echo "# par_output_unselected="; fi )
$( if [ ! -z ${VIASH_PAR_UNMAP+x} ]; then echo "${VIASH_PAR_UNMAP}" | sed "s#'#'\"'\"'#g;s#.*#par_unmap='&'#" ; else echo "# par_unmap="; fi )
$( if [ ! -z ${VIASH_PAR_READ_GROUP+x} ]; then echo "${VIASH_PAR_READ_GROUP}" | sed "s#'#'\"'\"'#g;s#.*#par_read_group='&'#" ; else echo "# par_read_group="; fi )
$( if [ ! -z ${VIASH_PAR_TAG+x} ]; then echo "${VIASH_PAR_TAG}" | sed "s#'#'\"'\"'#g;s#.*#par_tag='&'#" ; else echo "# par_tag="; fi )
$( if [ ! -z ${VIASH_PAR_TAG_FILE+x} ]; then echo "${VIASH_PAR_TAG_FILE}" | sed "s#'#'\"'\"'#g;s#.*#par_tag_file='&'#" ; else echo "# par_tag_file="; fi )
$( if [ ! -z ${VIASH_PAR_MIN_MQ+x} ]; then echo "${VIASH_PAR_MIN_MQ}" | sed "s#'#'\"'\"'#g;s#.*#par_min_MQ='&'#" ; else echo "# par_min_MQ="; fi )
$( if [ ! -z ${VIASH_PAR_LIBRARY+x} ]; then echo "${VIASH_PAR_LIBRARY}" | sed "s#'#'\"'\"'#g;s#.*#par_library='&'#" ; else echo "# par_library="; fi )
$( if [ ! -z ${VIASH_PAR_MIN_QLEN+x} ]; then echo "${VIASH_PAR_MIN_QLEN}" | sed "s#'#'\"'\"'#g;s#.*#par_min_qlen='&'#" ; else echo "# par_min_qlen="; fi )
$( if [ ! -z ${VIASH_PAR_EXPR+x} ]; then echo "${VIASH_PAR_EXPR}" | sed "s#'#'\"'\"'#g;s#.*#par_expr='&'#" ; else echo "# par_expr="; fi )
$( if [ ! -z ${VIASH_PAR_REQUIRE_FLAGS+x} ]; then echo "${VIASH_PAR_REQUIRE_FLAGS}" | sed "s#'#'\"'\"'#g;s#.*#par_require_flags='&'#" ; else echo "# par_require_flags="; fi )
$( if [ ! -z ${VIASH_PAR_EXCL_FLAGS+x} ]; then echo "${VIASH_PAR_EXCL_FLAGS}" | sed "s#'#'\"'\"'#g;s#.*#par_excl_flags='&'#" ; else echo "# par_excl_flags="; fi )
$( if [ ! -z ${VIASH_PAR_EXCL_ALL_FLAGS+x} ]; then echo "${VIASH_PAR_EXCL_ALL_FLAGS}" | sed "s#'#'\"'\"'#g;s#.*#par_excl_all_flags='&'#" ; else echo "# par_excl_all_flags="; fi )
$( if [ ! -z ${VIASH_PAR_INCL_FLAGS+x} ]; then echo "${VIASH_PAR_INCL_FLAGS}" | sed "s#'#'\"'\"'#g;s#.*#par_incl_flags='&'#" ; else echo "# par_incl_flags="; fi )
$( if [ ! -z ${VIASH_PAR_REMOVE_TAG+x} ]; then echo "${VIASH_PAR_REMOVE_TAG}" | sed "s#'#'\"'\"'#g;s#.*#par_remove_tag='&'#" ; else echo "# par_remove_tag="; fi )
$( if [ ! -z ${VIASH_PAR_KEEP_TAG+x} ]; then echo "${VIASH_PAR_KEEP_TAG}" | sed "s#'#'\"'\"'#g;s#.*#par_keep_tag='&'#" ; else echo "# par_keep_tag="; fi )
$( if [ ! -z ${VIASH_PAR_REMOVE_B+x} ]; then echo "${VIASH_PAR_REMOVE_B}" | sed "s#'#'\"'\"'#g;s#.*#par_remove_B='&'#" ; else echo "# par_remove_B="; fi )
$( if [ ! -z ${VIASH_PAR_ADD_FLAGS+x} ]; then echo "${VIASH_PAR_ADD_FLAGS}" | sed "s#'#'\"'\"'#g;s#.*#par_add_flags='&'#" ; else echo "# par_add_flags="; fi )
$( if [ ! -z ${VIASH_PAR_REMOVE_FLAGS+x} ]; then echo "${VIASH_PAR_REMOVE_FLAGS}" | sed "s#'#'\"'\"'#g;s#.*#par_remove_flags='&'#" ; else echo "# par_remove_flags="; fi )
$( if [ ! -z ${VIASH_PAR_SUBSAMPLE+x} ]; then echo "${VIASH_PAR_SUBSAMPLE}" | sed "s#'#'\"'\"'#g;s#.*#par_subsample='&'#" ; else echo "# par_subsample="; fi )
$( if [ ! -z ${VIASH_PAR_SUBSAMPLE_SEED+x} ]; then echo "${VIASH_PAR_SUBSAMPLE_SEED}" | sed "s#'#'\"'\"'#g;s#.*#par_subsample_seed='&'#" ; else echo "# par_subsample_seed="; fi )
$( if [ ! -z ${VIASH_PAR_FETCH_PAIRS+x} ]; then echo "${VIASH_PAR_FETCH_PAIRS}" | sed "s#'#'\"'\"'#g;s#.*#par_fetch_pairs='&'#" ; else echo "# par_fetch_pairs="; fi )
$( if [ ! -z ${VIASH_PAR_CUSTOMIZED_INDEX+x} ]; then echo "${VIASH_PAR_CUSTOMIZED_INDEX}" | sed "s#'#'\"'\"'#g;s#.*#par_customized_index='&'#" ; else echo "# par_customized_index="; fi )
$( if [ ! -z ${VIASH_PAR_SANITIZE+x} ]; then echo "${VIASH_PAR_SANITIZE}" | sed "s#'#'\"'\"'#g;s#.*#par_sanitize='&'#" ; else echo "# par_sanitize="; fi )
$( if [ ! -z ${VIASH_PAR_NO_PG+x} ]; then echo "${VIASH_PAR_NO_PG}" | sed "s#'#'\"'\"'#g;s#.*#par_no_PG='&'#" ; else echo "# par_no_PG="; fi )
$( if [ ! -z ${VIASH_PAR_INPUT_FMT_OPTION+x} ]; then echo "${VIASH_PAR_INPUT_FMT_OPTION}" | sed "s#'#'\"'\"'#g;s#.*#par_input_fmt_option='&'#" ; else echo "# par_input_fmt_option="; fi )
$( if [ ! -z ${VIASH_PAR_OUTPUT_FMT+x} ]; then echo "${VIASH_PAR_OUTPUT_FMT}" | sed "s#'#'\"'\"'#g;s#.*#par_output_fmt='&'#" ; else echo "# par_output_fmt="; fi )
$( if [ ! -z ${VIASH_PAR_OUTPUT_FMT_OPTION+x} ]; then echo "${VIASH_PAR_OUTPUT_FMT_OPTION}" | sed "s#'#'\"'\"'#g;s#.*#par_output_fmt_option='&'#" ; else echo "# par_output_fmt_option="; fi )
$( if [ ! -z ${VIASH_PAR_WRITE_INDEX+x} ]; then echo "${VIASH_PAR_WRITE_INDEX}" | sed "s#'#'\"'\"'#g;s#.*#par_write_index='&'#" ; else echo "# par_write_index="; fi )
$( if [ ! -z ${VIASH_META_NAME+x} ]; then echo "${VIASH_META_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_name='&'#" ; else echo "# meta_name="; fi )
$( if [ ! -z ${VIASH_META_FUNCTIONALITY_NAME+x} ]; then echo "${VIASH_META_FUNCTIONALITY_NAME}" | sed "s#'#'\"'\"'#g;s#.*#meta_functionality_name='&'#" ; else echo "# meta_functionality_name="; fi )
$( if [ ! -z ${VIASH_META_RESOURCES_DIR+x} ]; then echo "${VIASH_META_RESOURCES_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_resources_dir='&'#" ; else echo "# meta_resources_dir="; fi )
$( if [ ! -z ${VIASH_META_EXECUTABLE+x} ]; then echo "${VIASH_META_EXECUTABLE}" | sed "s#'#'\"'\"'#g;s#.*#meta_executable='&'#" ; else echo "# meta_executable="; fi )
$( if [ ! -z ${VIASH_META_CONFIG+x} ]; then echo "${VIASH_META_CONFIG}" | sed "s#'#'\"'\"'#g;s#.*#meta_config='&'#" ; else echo "# meta_config="; fi )
$( if [ ! -z ${VIASH_META_TEMP_DIR+x} ]; then echo "${VIASH_META_TEMP_DIR}" | sed "s#'#'\"'\"'#g;s#.*#meta_temp_dir='&'#" ; else echo "# meta_temp_dir="; fi )
$( if [ ! -z ${VIASH_META_CPUS+x} ]; then echo "${VIASH_META_CPUS}" | sed "s#'#'\"'\"'#g;s#.*#meta_cpus='&'#" ; else echo "# meta_cpus="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_B+x} ]; then echo "${VIASH_META_MEMORY_B}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_b='&'#" ; else echo "# meta_memory_b="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_KB+x} ]; then echo "${VIASH_META_MEMORY_KB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kb='&'#" ; else echo "# meta_memory_kb="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_MB+x} ]; then echo "${VIASH_META_MEMORY_MB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mb='&'#" ; else echo "# meta_memory_mb="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_GB+x} ]; then echo "${VIASH_META_MEMORY_GB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gb='&'#" ; else echo "# meta_memory_gb="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_TB+x} ]; then echo "${VIASH_META_MEMORY_TB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tb='&'#" ; else echo "# meta_memory_tb="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_PB+x} ]; then echo "${VIASH_META_MEMORY_PB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pb='&'#" ; else echo "# meta_memory_pb="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_KIB+x} ]; then echo "${VIASH_META_MEMORY_KIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_kib='&'#" ; else echo "# meta_memory_kib="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_MIB+x} ]; then echo "${VIASH_META_MEMORY_MIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_mib='&'#" ; else echo "# meta_memory_mib="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_GIB+x} ]; then echo "${VIASH_META_MEMORY_GIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_gib='&'#" ; else echo "# meta_memory_gib="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_TIB+x} ]; then echo "${VIASH_META_MEMORY_TIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_tib='&'#" ; else echo "# meta_memory_tib="; fi )
$( if [ ! -z ${VIASH_META_MEMORY_PIB+x} ]; then echo "${VIASH_META_MEMORY_PIB}" | sed "s#'#'\"'\"'#g;s#.*#meta_memory_pib='&'#" ; else echo "# meta_memory_pib="; fi )
## VIASH END
set -e
unset_if_false=(
par_bam
par_cram
par_fast
par_uncompressed
par_with_header
par_header_only
par_no_header
par_count
par_unmap
par_use_index
par_fetch_pairs
par_customized_index
par_no_PG
par_write_index
par_remove_B
)
for par in \${unset_if_false[@]}; do
test_val="\${!par}"
[[ "\$test_val" == "false" ]] && unset \$par
done
samtools view \\
\${par_bam:+-b} \\
\${par_cram:+-C} \\
\${par_fast:+--fast} \\
\${par_uncompressed:+-u} \\
\${par_with_header:+--with-header} \\
\${par_header_only:+-H} \\
\${par_no_header:+--no-header} \\
\${par_count:+-c} \\
\${par_output:+-o "\$par_output"} \\
\${par_output_unselected:+-U "\$par_output_unselected"} \\
\${par_unmap:+-p "\$par_unmap"} \\
\${par_fetch_pairs:+-P "\$par_fetch_pairs"} \\
\${par_fai_reference:+-t "\$par_fai_reference"} \\
\${par_use_index:+-M "\$par_use_index"} \\
\${par_region_file:+--region-file "\$par_region_file"} \\
\${par_customized_index:+-X} \\
\${par_target_file:+-L "\$par_target_file"} \\
\${par_qname_file:+-N "\$par_qname_file"} \\
\${par_read_group:+-r "\$par_read_group"} \\
\${par_read_group_file:+-R "\$par_read_group_file"} \\
\${par_tag:+-d "\$par_tag"} \\
\${par_tag_file:+-D "\$par_tag_file"} \\
\${par_min_MQ:+-q "\$par_min_MQ"} \\
\${par_library:+-l "\$par_library"} \\
\${par_min_qlen:+-m "\$par_min_qlen"} \\
\${par_expr:+-e "\$par_expr"} \\
\${par_require_flags:+-f "\$par_require_flags"} \\
\${par_excl_flags:+-F "\$par_excl_flags"} \\
\${par_incl_flags:+--rf "\$par_incl_flags"} \\
\${par_excl_all_flags:+-G "\$par_excl_all_flags"} \\
\${par_subsample:+--subsample "\$par_subsample"} \\
\${par_subsample_seed:+--subsample-seed "\$par_subsample_seed"} \\
\${par_add_flags:+--add-flags "\$par_add_flags"} \\
\${par_remove_flags:+--remove-flags "\$par_remove_flags"} \\
\${par_remove_tag:+-x "\$par_remove_tag"} \\
\${par_keep_tag:+--keep-tag "\$par_keep_tag"} \\
\${par_remove_B:+-B} \\
\${par_sanitize:+-z "\$par_sanitize"} \\
\${par_input_fmt_option:+--input-fmt-option "\$par_input_fmt_option"} \\
\${par_output_fmt:+-O "\$par_output_fmt"} \\
\${par_output_fmt_option:+--output-fmt-option "\$par_output_fmt_option"} \\
\${par_reference:+-T "\$par_reference"} \\
\${par_write_index:+--write-index} \\
\${par_no_PG:+--no-PG} \\
"\$par_input"
exit 0
VIASHMAIN
bash "\$tempscript" &
wait "\$!"
VIASHEOF
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
# strip viash automount from file paths
if [ ! -z "$VIASH_PAR_INPUT" ]; then
VIASH_PAR_INPUT=$(ViashDockerStripAutomount "$VIASH_PAR_INPUT")
fi
if [ ! -z "$VIASH_PAR_FAI_REFERENCE" ]; then
VIASH_PAR_FAI_REFERENCE=$(ViashDockerStripAutomount "$VIASH_PAR_FAI_REFERENCE")
fi
if [ ! -z "$VIASH_PAR_REFERENCE" ]; then
VIASH_PAR_REFERENCE=$(ViashDockerStripAutomount "$VIASH_PAR_REFERENCE")
fi
if [ ! -z "$VIASH_PAR_TARGET_FILE" ]; then
VIASH_PAR_TARGET_FILE=$(ViashDockerStripAutomount "$VIASH_PAR_TARGET_FILE")
fi
if [ ! -z "$VIASH_PAR_REGION_FILE" ]; then
VIASH_PAR_REGION_FILE=$(ViashDockerStripAutomount "$VIASH_PAR_REGION_FILE")
fi
if [ ! -z "$VIASH_PAR_QNAME_FILE" ]; then
VIASH_PAR_QNAME_FILE=$(ViashDockerStripAutomount "$VIASH_PAR_QNAME_FILE")
fi
if [ ! -z "$VIASH_PAR_READ_GROUP_FILE" ]; then
VIASH_PAR_READ_GROUP_FILE=$(ViashDockerStripAutomount "$VIASH_PAR_READ_GROUP_FILE")
fi
if [ ! -z "$VIASH_PAR_OUTPUT" ]; then
VIASH_PAR_OUTPUT=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT")
fi
if [ ! -z "$VIASH_PAR_OUTPUT_UNSELECTED" ]; then
VIASH_PAR_OUTPUT_UNSELECTED=$(ViashDockerStripAutomount "$VIASH_PAR_OUTPUT_UNSELECTED")
fi
if [ ! -z "$VIASH_PAR_TAG_FILE" ]; then
VIASH_PAR_TAG_FILE=$(ViashDockerStripAutomount "$VIASH_PAR_TAG_FILE")
fi
if [ ! -z "$VIASH_META_RESOURCES_DIR" ]; then
VIASH_META_RESOURCES_DIR=$(ViashDockerStripAutomount "$VIASH_META_RESOURCES_DIR")
fi
if [ ! -z "$VIASH_META_EXECUTABLE" ]; then
VIASH_META_EXECUTABLE=$(ViashDockerStripAutomount "$VIASH_META_EXECUTABLE")
fi
if [ ! -z "$VIASH_META_CONFIG" ]; then
VIASH_META_CONFIG=$(ViashDockerStripAutomount "$VIASH_META_CONFIG")
fi
if [ ! -z "$VIASH_META_TEMP_DIR" ]; then
VIASH_META_TEMP_DIR=$(ViashDockerStripAutomount "$VIASH_META_TEMP_DIR")
fi
fi
# check whether required files exist
if [ ! -z "$VIASH_PAR_OUTPUT" ] && [ ! -e "$VIASH_PAR_OUTPUT" ]; then
ViashError "Output file '$VIASH_PAR_OUTPUT' does not exist."
exit 1
fi
exit 0