Build pipeline: viash-hub.biobox.main-4vvfj
Source commit: 320d044fe4
Source message: Sortmerna (#146)
2271 lines
98 KiB
Bash
Executable File
2271 lines
98 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
# sortmerna 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.
|
||
|
||
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="sortmerna"
|
||
VIASH_META_FUNCTIONALITY_NAME="sortmerna"
|
||
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 "sortmerna main"
|
||
echo ""
|
||
echo "Local sequence alignment tool for filtering, mapping and clustering. The main"
|
||
echo "application of SortMeRNA is filtering rRNA from metatranscriptomic data."
|
||
echo ""
|
||
echo "Input:"
|
||
echo " --paired"
|
||
echo " type: boolean_true"
|
||
echo " Reads are paired-end. If a single reads file is provided, use this"
|
||
echo " option"
|
||
echo " to indicate the file contains interleaved paired reads when neither"
|
||
echo " 'paired_in' | 'paired_out' | 'out2' | 'sout' are specified."
|
||
echo ""
|
||
echo " --input"
|
||
echo " type: file, multiple values allowed, file must exist"
|
||
echo " Input fastq"
|
||
echo ""
|
||
echo " --ref"
|
||
echo " type: file, multiple values allowed, file must exist"
|
||
echo " Reference fasta file(s) for rRNA database."
|
||
echo ""
|
||
echo " --ribo_database_manifest"
|
||
echo " type: file, file must exist"
|
||
echo " Text file containing paths to fasta files (one per line) that will be"
|
||
echo " used to create the database for SortMeRNA."
|
||
echo ""
|
||
echo "Output:"
|
||
echo " --log"
|
||
echo " type: file, output"
|
||
echo " example: \$id.sortmerna.log"
|
||
echo " Sortmerna log file."
|
||
echo ""
|
||
echo " --aligned, --output"
|
||
echo " type: string"
|
||
echo " Directory and file prefix for aligned output. The appropriate extension:"
|
||
echo " (fasta|fastq|blast|sam|etc) is automatically added."
|
||
echo " If 'dir' is not specified, the output is created in the WORKDIR/out/."
|
||
echo " If 'pfx' is not specified, the prefix 'aligned' is used."
|
||
echo ""
|
||
echo " --other"
|
||
echo " type: string"
|
||
echo " Create Non-aligned reads output file with this path/prefix. Must be used"
|
||
echo " with fastx."
|
||
echo ""
|
||
echo "Options:"
|
||
echo " --kvdb"
|
||
echo " type: string"
|
||
echo " Path to directory of the key-value database file, used for storing the"
|
||
echo " alignment results."
|
||
echo ""
|
||
echo " --idx_dir"
|
||
echo " type: string"
|
||
echo " Path to the directory for storing the reference index files."
|
||
echo ""
|
||
echo " --readb"
|
||
echo " type: string"
|
||
echo " Path to the directory for storing pre-processed reads."
|
||
echo ""
|
||
echo " --fastx"
|
||
echo " type: boolean_true"
|
||
echo " Output aligned reads into FASTA/FASTQ file"
|
||
echo ""
|
||
echo " --sam"
|
||
echo " type: boolean_true"
|
||
echo " Output SAM alignment for aligned reads."
|
||
echo ""
|
||
echo " --sq"
|
||
echo " type: boolean_true"
|
||
echo " Add SQ tags to the SAM file"
|
||
echo ""
|
||
echo " --blast"
|
||
echo " type: string"
|
||
echo " choices: [ 0, 1, 1 cigar, 1 cigar qcov, 1 cigar qcov qstrand ]"
|
||
echo " Blast options:"
|
||
echo " * '0' - pairwise"
|
||
echo " * '1' - tabular(Blast - m 8 format)"
|
||
echo " * '1 cigar' - tabular + column for CIGAR"
|
||
echo " * '1 cigar qcov' - tabular + columns for CIGAR and query"
|
||
echo " coverage"
|
||
echo " * '1 cigar qcov qstrand' - tabular + columns for CIGAR, query coverage"
|
||
echo " and strand"
|
||
echo ""
|
||
echo " --num_alignments"
|
||
echo " type: integer"
|
||
echo " example: 0"
|
||
echo " Report first INT alignments per read reaching E-value. If Int = 0, all"
|
||
echo " alignments will be output. Default: '0'"
|
||
echo ""
|
||
echo " --min_lis"
|
||
echo " type: integer"
|
||
echo " example: 2"
|
||
echo " search all alignments having the first INT longest LIS. LIS stands for"
|
||
echo " Longest Increasing Subsequence, it is"
|
||
echo " computed using seeds’ positions to expand hits into longer matches prior"
|
||
echo " to Smith-Waterman alignment. Default: '2'."
|
||
echo ""
|
||
echo " --print_all_reads"
|
||
echo " type: boolean_true"
|
||
echo " output null alignment strings for non-aligned reads to SAM and/or BLAST"
|
||
echo " tabular files."
|
||
echo ""
|
||
echo " --paired_in"
|
||
echo " type: boolean_true"
|
||
echo " In the case where a pair of reads is aligned with a score above the"
|
||
echo " threshold, the output of the reads is controlled"
|
||
echo " by the following options:"
|
||
echo " * --paired_in and --paired_out are both false: Only one read per pair is"
|
||
echo " output to the aligned fasta file."
|
||
echo " * --paired_in is true and --paired_out is false: Both reads of the pair"
|
||
echo " are output to the aligned fasta file."
|
||
echo " * --paired_in is false and --paired_out is true: Both reads are output"
|
||
echo " the the other fasta file (if it is specified)."
|
||
echo ""
|
||
echo " --paired_out"
|
||
echo " type: boolean_true"
|
||
echo " See description of --paired_in."
|
||
echo ""
|
||
echo " --out2"
|
||
echo " type: boolean_true"
|
||
echo " Output paired reads into separate files. Must be used with '--fastx'. If"
|
||
echo " a single reads file is provided, this options"
|
||
echo " implies interleaved paired reads. When used with 'sout', four (4) output"
|
||
echo " files for aligned reads will be generated:"
|
||
echo " 'aligned-paired-fwd, aligned-paired-rev, aligned-singleton-fwd,"
|
||
echo " aligned-singleton-rev'. If 'other' option is also used,"
|
||
echo " eight (8) output files will be generated."
|
||
echo ""
|
||
echo " --sout"
|
||
echo " type: boolean_true"
|
||
echo " Separate paired and singleton aligned reads. Must be used with"
|
||
echo " '--fastx'. If a single reads file is provided,"
|
||
echo " this options implies interleaved paired reads. Cannot be used with"
|
||
echo " '--paired_in' or '--paired_out'."
|
||
echo ""
|
||
echo " --zip_out"
|
||
echo " type: string"
|
||
echo " example: -1"
|
||
echo " choices: [ 1, true, t, yes, y, 0, false, f, no, n, -1 ]"
|
||
echo " Compress the output files. The possible values are:"
|
||
echo " * '1/true/t/yes/y'"
|
||
echo " * '0/false/f/no/n'"
|
||
echo " *'-1' (the same format as input - default)"
|
||
echo " The values are Not case sensitive."
|
||
echo ""
|
||
echo " --match"
|
||
echo " type: integer"
|
||
echo " example: 2"
|
||
echo " Smith-Waterman score for a match (positive integer). Default: '2'."
|
||
echo ""
|
||
echo " --mismatch"
|
||
echo " type: integer"
|
||
echo " example: -3"
|
||
echo " Smith-Waterman penalty for a mismatch (negative integer). Default: '-3'."
|
||
echo ""
|
||
echo " --gap_open"
|
||
echo " type: integer"
|
||
echo " example: 5"
|
||
echo " Smith-Waterman penalty for introducing a gap (positive integer)."
|
||
echo " Default: '5'."
|
||
echo ""
|
||
echo " --gap_ext"
|
||
echo " type: integer"
|
||
echo " example: 2"
|
||
echo " Smith-Waterman penalty for extending a gap (positive integer). Default:"
|
||
echo " '2'."
|
||
echo ""
|
||
echo " --N"
|
||
echo " type: integer"
|
||
echo " example: -1"
|
||
echo " Smith-Waterman penalty for ambiguous letters (N’s) scored as --mismatch."
|
||
echo " Default: '-1'.\\"
|
||
echo ""
|
||
echo " --a"
|
||
echo " type: integer"
|
||
echo " example: 1"
|
||
echo " Number of threads to use. Default: '1'."
|
||
echo ""
|
||
echo " --e"
|
||
echo " type: double"
|
||
echo " example: 1.0"
|
||
echo " E-value threshold. Default: '1'."
|
||
echo ""
|
||
echo " --F"
|
||
echo " type: boolean_true"
|
||
echo " Search only the forward strand."
|
||
echo ""
|
||
echo " --R"
|
||
echo " type: boolean_true"
|
||
echo " Search only the reverse-complementary strand."
|
||
echo ""
|
||
echo " --num_alignment"
|
||
echo " type: integer"
|
||
echo " example: -1"
|
||
echo " Report first INT alignments per read reaching E-value (--num_alignments"
|
||
echo " 0 signifies all alignments will be output)."
|
||
echo " Default: '-1'"
|
||
echo ""
|
||
echo " --best"
|
||
echo " type: integer"
|
||
echo " example: 1"
|
||
echo " Report INT best alignments per read reaching E-value by searching"
|
||
echo " --min_lis INT candidate alignments (--best 0"
|
||
echo " signifies all candidate alignments will be searched) Default: '1'."
|
||
echo ""
|
||
echo " -v, --verbose"
|
||
echo " type: boolean_true"
|
||
echo " Verbose output."
|
||
echo ""
|
||
echo "OTU picking options:"
|
||
echo " --id"
|
||
echo " type: double"
|
||
echo " example: 0.97"
|
||
echo " %id similarity threshold (the alignment must still pass the E-value"
|
||
echo " threshold). Default: '0.97'."
|
||
echo ""
|
||
echo " --coverage"
|
||
echo " type: double"
|
||
echo " example: 0.97"
|
||
echo " %query coverage threshold (the alignment must still pass the E-value"
|
||
echo " threshold). Default: '0.97'."
|
||
echo ""
|
||
echo " --de_novo"
|
||
echo " type: boolean_true"
|
||
echo " FASTA/FASTQ file for reads matching database < %id off (set using --id)"
|
||
echo " and < %cov (set using --coverage)"
|
||
echo " (alignment must still pass the E-value threshold)."
|
||
echo ""
|
||
echo " --otu_map"
|
||
echo " type: boolean_true"
|
||
echo " Output OTU map (input to QIIME’s make_otu_table.py)."
|
||
echo ""
|
||
echo "Advanced options:"
|
||
echo " --num_seed"
|
||
echo " type: integer"
|
||
echo " example: 2"
|
||
echo " Number of seeds matched before searching for candidate LIS. Default:"
|
||
echo " '2'."
|
||
echo ""
|
||
echo " --passes"
|
||
echo " type: integer, multiple values allowed"
|
||
echo " Three intervals at which to place the seed on the read L,L/2,3 (L is the"
|
||
echo " seed length set in ./indexdb_rna)."
|
||
echo ""
|
||
echo " --edge"
|
||
echo " type: string"
|
||
echo " example: 4"
|
||
echo " The number (or percentage if followed by %) of nucleotides to add to"
|
||
echo " each edge of the alignment region on the"
|
||
echo " reference sequence before performing Smith-Waterman alignment. Default:"
|
||
echo " '4'."
|
||
echo ""
|
||
echo " --full_search"
|
||
echo " type: boolean_true"
|
||
echo " Search for all 0-error and 1-error seed off matches in the index rather"
|
||
echo " than stopping after finding a 0-error match"
|
||
echo " (<1% gain in sensitivity with up four-fold decrease in speed)."
|
||
echo ""
|
||
echo "Indexing Options:"
|
||
echo " --index"
|
||
echo " type: integer"
|
||
echo " example: 2"
|
||
echo " choices: [ 0, 1, 2 ]"
|
||
echo " Create index files for the reference database. By default when this"
|
||
echo " option is not used, the program checks the"
|
||
echo " reference index and builds it if not already existing."
|
||
echo " This can be changed by using '-index' as follows:"
|
||
echo " * '-index 0' - skip indexing. If the index does not exist, the program"
|
||
echo " will terminate"
|
||
echo " and warn to build the index prior performing the"
|
||
echo " alignment"
|
||
echo " * '-index 1' - only perform the indexing and terminate"
|
||
echo " * '-index 2' - the default behaviour, the same as when not using this"
|
||
echo " option at all"
|
||
echo ""
|
||
echo " -L"
|
||
echo " type: double"
|
||
echo " example: 18.0"
|
||
echo " Indexing seed length. Default: '18'"
|
||
echo ""
|
||
echo " --interval"
|
||
echo " type: integer"
|
||
echo " example: 1"
|
||
echo " Index every Nth L-mer in the reference database. Default: '1'"
|
||
echo ""
|
||
echo " --max_pos"
|
||
echo " type: integer"
|
||
echo " example: 1000"
|
||
echo " Maximum number of positions to store for each unique L-mer. Set to 0 to"
|
||
echo " store all positions. Default: '1000'"
|
||
}
|
||
|
||
# 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 ubuntu:22.04
|
||
ENTRYPOINT []
|
||
RUN apt-get update && \
|
||
apt-get install -y --no-install-recommends gzip cmake g++ wget && \
|
||
apt-get clean && \
|
||
wget --no-check-certificate https://github.com/sortmerna/sortmerna/releases/download/v4.3.6/sortmerna-4.3.6-Linux.sh && \
|
||
bash sortmerna-4.3.6-Linux.sh --skip-license
|
||
|
||
LABEL org.opencontainers.image.description="Companion container for running component sortmerna"
|
||
LABEL org.opencontainers.image.created="2024-09-09T06:53:31Z"
|
||
LABEL org.opencontainers.image.source="https://github.com/sortmerna/sortmerna"
|
||
LABEL org.opencontainers.image.revision="320d044fe45e565fbc9772640ebf6f39c5584b4a"
|
||
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 "sortmerna main"
|
||
exit
|
||
;;
|
||
--paired)
|
||
[ -n "$VIASH_PAR_PAIRED" ] && ViashError Bad arguments for option \'--paired\': \'$VIASH_PAR_PAIRED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_PAIRED=true
|
||
shift 1
|
||
;;
|
||
--input)
|
||
if [ -z "$VIASH_PAR_INPUT" ]; then
|
||
VIASH_PAR_INPUT="$2"
|
||
else
|
||
VIASH_PAR_INPUT="$VIASH_PAR_INPUT;""$2"
|
||
fi
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --input. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--input=*)
|
||
if [ -z "$VIASH_PAR_INPUT" ]; then
|
||
VIASH_PAR_INPUT=$(ViashRemoveFlags "$1")
|
||
else
|
||
VIASH_PAR_INPUT="$VIASH_PAR_INPUT;"$(ViashRemoveFlags "$1")
|
||
fi
|
||
shift 1
|
||
;;
|
||
--ref)
|
||
if [ -z "$VIASH_PAR_REF" ]; then
|
||
VIASH_PAR_REF="$2"
|
||
else
|
||
VIASH_PAR_REF="$VIASH_PAR_REF;""$2"
|
||
fi
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --ref. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--ref=*)
|
||
if [ -z "$VIASH_PAR_REF" ]; then
|
||
VIASH_PAR_REF=$(ViashRemoveFlags "$1")
|
||
else
|
||
VIASH_PAR_REF="$VIASH_PAR_REF;"$(ViashRemoveFlags "$1")
|
||
fi
|
||
shift 1
|
||
;;
|
||
--ribo_database_manifest)
|
||
[ -n "$VIASH_PAR_RIBO_DATABASE_MANIFEST" ] && ViashError Bad arguments for option \'--ribo_database_manifest\': \'$VIASH_PAR_RIBO_DATABASE_MANIFEST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_RIBO_DATABASE_MANIFEST="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --ribo_database_manifest. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--ribo_database_manifest=*)
|
||
[ -n "$VIASH_PAR_RIBO_DATABASE_MANIFEST" ] && ViashError Bad arguments for option \'--ribo_database_manifest=*\': \'$VIASH_PAR_RIBO_DATABASE_MANIFEST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_RIBO_DATABASE_MANIFEST=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--log)
|
||
[ -n "$VIASH_PAR_LOG" ] && ViashError Bad arguments for option \'--log\': \'$VIASH_PAR_LOG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_LOG="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --log. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--log=*)
|
||
[ -n "$VIASH_PAR_LOG" ] && ViashError Bad arguments for option \'--log=*\': \'$VIASH_PAR_LOG\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_LOG=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--output)
|
||
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_OUTPUT="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --output. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--output=*)
|
||
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--output=*\': \'$VIASH_PAR_OUTPUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_OUTPUT=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--aligned)
|
||
[ -n "$VIASH_PAR_OUTPUT" ] && ViashError Bad arguments for option \'--aligned\': \'$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 --aligned. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--other)
|
||
[ -n "$VIASH_PAR_OTHER" ] && ViashError Bad arguments for option \'--other\': \'$VIASH_PAR_OTHER\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_OTHER="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --other. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--other=*)
|
||
[ -n "$VIASH_PAR_OTHER" ] && ViashError Bad arguments for option \'--other=*\': \'$VIASH_PAR_OTHER\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_OTHER=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--kvdb)
|
||
[ -n "$VIASH_PAR_KVDB" ] && ViashError Bad arguments for option \'--kvdb\': \'$VIASH_PAR_KVDB\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_KVDB="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --kvdb. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--kvdb=*)
|
||
[ -n "$VIASH_PAR_KVDB" ] && ViashError Bad arguments for option \'--kvdb=*\': \'$VIASH_PAR_KVDB\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_KVDB=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--idx_dir)
|
||
[ -n "$VIASH_PAR_IDX_DIR" ] && ViashError Bad arguments for option \'--idx_dir\': \'$VIASH_PAR_IDX_DIR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_IDX_DIR="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --idx_dir. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--idx_dir=*)
|
||
[ -n "$VIASH_PAR_IDX_DIR" ] && ViashError Bad arguments for option \'--idx_dir=*\': \'$VIASH_PAR_IDX_DIR\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_IDX_DIR=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--readb)
|
||
[ -n "$VIASH_PAR_READB" ] && ViashError Bad arguments for option \'--readb\': \'$VIASH_PAR_READB\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_READB="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --readb. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--readb=*)
|
||
[ -n "$VIASH_PAR_READB" ] && ViashError Bad arguments for option \'--readb=*\': \'$VIASH_PAR_READB\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_READB=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--fastx)
|
||
[ -n "$VIASH_PAR_FASTX" ] && ViashError Bad arguments for option \'--fastx\': \'$VIASH_PAR_FASTX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_FASTX=true
|
||
shift 1
|
||
;;
|
||
--sam)
|
||
[ -n "$VIASH_PAR_SAM" ] && ViashError Bad arguments for option \'--sam\': \'$VIASH_PAR_SAM\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_SAM=true
|
||
shift 1
|
||
;;
|
||
--sq)
|
||
[ -n "$VIASH_PAR_SQ" ] && ViashError Bad arguments for option \'--sq\': \'$VIASH_PAR_SQ\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_SQ=true
|
||
shift 1
|
||
;;
|
||
--blast)
|
||
[ -n "$VIASH_PAR_BLAST" ] && ViashError Bad arguments for option \'--blast\': \'$VIASH_PAR_BLAST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_BLAST="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --blast. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--blast=*)
|
||
[ -n "$VIASH_PAR_BLAST" ] && ViashError Bad arguments for option \'--blast=*\': \'$VIASH_PAR_BLAST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_BLAST=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--num_alignments)
|
||
[ -n "$VIASH_PAR_NUM_ALIGNMENTS" ] && ViashError Bad arguments for option \'--num_alignments\': \'$VIASH_PAR_NUM_ALIGNMENTS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_NUM_ALIGNMENTS="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --num_alignments. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--num_alignments=*)
|
||
[ -n "$VIASH_PAR_NUM_ALIGNMENTS" ] && ViashError Bad arguments for option \'--num_alignments=*\': \'$VIASH_PAR_NUM_ALIGNMENTS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_NUM_ALIGNMENTS=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--min_lis)
|
||
[ -n "$VIASH_PAR_MIN_LIS" ] && ViashError Bad arguments for option \'--min_lis\': \'$VIASH_PAR_MIN_LIS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MIN_LIS="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --min_lis. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--min_lis=*)
|
||
[ -n "$VIASH_PAR_MIN_LIS" ] && ViashError Bad arguments for option \'--min_lis=*\': \'$VIASH_PAR_MIN_LIS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MIN_LIS=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--print_all_reads)
|
||
[ -n "$VIASH_PAR_PRINT_ALL_READS" ] && ViashError Bad arguments for option \'--print_all_reads\': \'$VIASH_PAR_PRINT_ALL_READS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_PRINT_ALL_READS=true
|
||
shift 1
|
||
;;
|
||
--paired_in)
|
||
[ -n "$VIASH_PAR_PAIRED_IN" ] && ViashError Bad arguments for option \'--paired_in\': \'$VIASH_PAR_PAIRED_IN\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_PAIRED_IN=true
|
||
shift 1
|
||
;;
|
||
--paired_out)
|
||
[ -n "$VIASH_PAR_PAIRED_OUT" ] && ViashError Bad arguments for option \'--paired_out\': \'$VIASH_PAR_PAIRED_OUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_PAIRED_OUT=true
|
||
shift 1
|
||
;;
|
||
--out2)
|
||
[ -n "$VIASH_PAR_OUT2" ] && ViashError Bad arguments for option \'--out2\': \'$VIASH_PAR_OUT2\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_OUT2=true
|
||
shift 1
|
||
;;
|
||
--sout)
|
||
[ -n "$VIASH_PAR_SOUT" ] && ViashError Bad arguments for option \'--sout\': \'$VIASH_PAR_SOUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_SOUT=true
|
||
shift 1
|
||
;;
|
||
--zip_out)
|
||
[ -n "$VIASH_PAR_ZIP_OUT" ] && ViashError Bad arguments for option \'--zip_out\': \'$VIASH_PAR_ZIP_OUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_ZIP_OUT="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --zip_out. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--zip_out=*)
|
||
[ -n "$VIASH_PAR_ZIP_OUT" ] && ViashError Bad arguments for option \'--zip_out=*\': \'$VIASH_PAR_ZIP_OUT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_ZIP_OUT=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--match)
|
||
[ -n "$VIASH_PAR_MATCH" ] && ViashError Bad arguments for option \'--match\': \'$VIASH_PAR_MATCH\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MATCH="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --match. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--match=*)
|
||
[ -n "$VIASH_PAR_MATCH" ] && ViashError Bad arguments for option \'--match=*\': \'$VIASH_PAR_MATCH\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MATCH=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--mismatch)
|
||
[ -n "$VIASH_PAR_MISMATCH" ] && ViashError Bad arguments for option \'--mismatch\': \'$VIASH_PAR_MISMATCH\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MISMATCH="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --mismatch. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--mismatch=*)
|
||
[ -n "$VIASH_PAR_MISMATCH" ] && ViashError Bad arguments for option \'--mismatch=*\': \'$VIASH_PAR_MISMATCH\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MISMATCH=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--gap_open)
|
||
[ -n "$VIASH_PAR_GAP_OPEN" ] && ViashError Bad arguments for option \'--gap_open\': \'$VIASH_PAR_GAP_OPEN\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_GAP_OPEN="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --gap_open. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--gap_open=*)
|
||
[ -n "$VIASH_PAR_GAP_OPEN" ] && ViashError Bad arguments for option \'--gap_open=*\': \'$VIASH_PAR_GAP_OPEN\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_GAP_OPEN=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--gap_ext)
|
||
[ -n "$VIASH_PAR_GAP_EXT" ] && ViashError Bad arguments for option \'--gap_ext\': \'$VIASH_PAR_GAP_EXT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_GAP_EXT="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --gap_ext. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--gap_ext=*)
|
||
[ -n "$VIASH_PAR_GAP_EXT" ] && ViashError Bad arguments for option \'--gap_ext=*\': \'$VIASH_PAR_GAP_EXT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_GAP_EXT=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--N)
|
||
[ -n "$VIASH_PAR_N" ] && ViashError Bad arguments for option \'--N\': \'$VIASH_PAR_N\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_N="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --N. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--N=*)
|
||
[ -n "$VIASH_PAR_N" ] && ViashError Bad arguments for option \'--N=*\': \'$VIASH_PAR_N\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_N=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--a)
|
||
[ -n "$VIASH_PAR_A" ] && ViashError Bad arguments for option \'--a\': \'$VIASH_PAR_A\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_A="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --a. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--a=*)
|
||
[ -n "$VIASH_PAR_A" ] && ViashError Bad arguments for option \'--a=*\': \'$VIASH_PAR_A\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_A=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--e)
|
||
[ -n "$VIASH_PAR_E" ] && ViashError Bad arguments for option \'--e\': \'$VIASH_PAR_E\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_E="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --e. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--e=*)
|
||
[ -n "$VIASH_PAR_E" ] && ViashError Bad arguments for option \'--e=*\': \'$VIASH_PAR_E\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_E=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--F)
|
||
[ -n "$VIASH_PAR_F" ] && ViashError Bad arguments for option \'--F\': \'$VIASH_PAR_F\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_F=true
|
||
shift 1
|
||
;;
|
||
--R)
|
||
[ -n "$VIASH_PAR_R" ] && ViashError Bad arguments for option \'--R\': \'$VIASH_PAR_R\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_R=true
|
||
shift 1
|
||
;;
|
||
--num_alignment)
|
||
[ -n "$VIASH_PAR_NUM_ALIGNMENT" ] && ViashError Bad arguments for option \'--num_alignment\': \'$VIASH_PAR_NUM_ALIGNMENT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_NUM_ALIGNMENT="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --num_alignment. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--num_alignment=*)
|
||
[ -n "$VIASH_PAR_NUM_ALIGNMENT" ] && ViashError Bad arguments for option \'--num_alignment=*\': \'$VIASH_PAR_NUM_ALIGNMENT\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_NUM_ALIGNMENT=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--best)
|
||
[ -n "$VIASH_PAR_BEST" ] && ViashError Bad arguments for option \'--best\': \'$VIASH_PAR_BEST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_BEST="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --best. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--best=*)
|
||
[ -n "$VIASH_PAR_BEST" ] && ViashError Bad arguments for option \'--best=*\': \'$VIASH_PAR_BEST\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_BEST=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--verbose)
|
||
[ -n "$VIASH_PAR_VERBOSE" ] && ViashError Bad arguments for option \'--verbose\': \'$VIASH_PAR_VERBOSE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_VERBOSE=true
|
||
shift 1
|
||
;;
|
||
-v)
|
||
[ -n "$VIASH_PAR_VERBOSE" ] && ViashError Bad arguments for option \'-v\': \'$VIASH_PAR_VERBOSE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_VERBOSE=true
|
||
shift 1
|
||
;;
|
||
--id)
|
||
[ -n "$VIASH_PAR_ID" ] && ViashError Bad arguments for option \'--id\': \'$VIASH_PAR_ID\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_ID="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --id. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--id=*)
|
||
[ -n "$VIASH_PAR_ID" ] && ViashError Bad arguments for option \'--id=*\': \'$VIASH_PAR_ID\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_ID=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--coverage)
|
||
[ -n "$VIASH_PAR_COVERAGE" ] && ViashError Bad arguments for option \'--coverage\': \'$VIASH_PAR_COVERAGE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_COVERAGE="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --coverage. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--coverage=*)
|
||
[ -n "$VIASH_PAR_COVERAGE" ] && ViashError Bad arguments for option \'--coverage=*\': \'$VIASH_PAR_COVERAGE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_COVERAGE=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--de_novo)
|
||
[ -n "$VIASH_PAR_DE_NOVO" ] && ViashError Bad arguments for option \'--de_novo\': \'$VIASH_PAR_DE_NOVO\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_DE_NOVO=true
|
||
shift 1
|
||
;;
|
||
--otu_map)
|
||
[ -n "$VIASH_PAR_OTU_MAP" ] && ViashError Bad arguments for option \'--otu_map\': \'$VIASH_PAR_OTU_MAP\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_OTU_MAP=true
|
||
shift 1
|
||
;;
|
||
--num_seed)
|
||
[ -n "$VIASH_PAR_NUM_SEED" ] && ViashError Bad arguments for option \'--num_seed\': \'$VIASH_PAR_NUM_SEED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_NUM_SEED="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --num_seed. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--num_seed=*)
|
||
[ -n "$VIASH_PAR_NUM_SEED" ] && ViashError Bad arguments for option \'--num_seed=*\': \'$VIASH_PAR_NUM_SEED\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_NUM_SEED=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--passes)
|
||
if [ -z "$VIASH_PAR_PASSES" ]; then
|
||
VIASH_PAR_PASSES="$2"
|
||
else
|
||
VIASH_PAR_PASSES="$VIASH_PAR_PASSES;""$2"
|
||
fi
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --passes. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--passes=*)
|
||
if [ -z "$VIASH_PAR_PASSES" ]; then
|
||
VIASH_PAR_PASSES=$(ViashRemoveFlags "$1")
|
||
else
|
||
VIASH_PAR_PASSES="$VIASH_PAR_PASSES;"$(ViashRemoveFlags "$1")
|
||
fi
|
||
shift 1
|
||
;;
|
||
--edge)
|
||
[ -n "$VIASH_PAR_EDGE" ] && ViashError Bad arguments for option \'--edge\': \'$VIASH_PAR_EDGE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_EDGE="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --edge. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--edge=*)
|
||
[ -n "$VIASH_PAR_EDGE" ] && ViashError Bad arguments for option \'--edge=*\': \'$VIASH_PAR_EDGE\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_EDGE=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--full_search)
|
||
[ -n "$VIASH_PAR_FULL_SEARCH" ] && ViashError Bad arguments for option \'--full_search\': \'$VIASH_PAR_FULL_SEARCH\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_FULL_SEARCH=true
|
||
shift 1
|
||
;;
|
||
--index)
|
||
[ -n "$VIASH_PAR_INDEX" ] && ViashError Bad arguments for option \'--index\': \'$VIASH_PAR_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_INDEX="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --index. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--index=*)
|
||
[ -n "$VIASH_PAR_INDEX" ] && ViashError Bad arguments for option \'--index=*\': \'$VIASH_PAR_INDEX\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_INDEX=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
-L)
|
||
[ -n "$VIASH_PAR_L" ] && ViashError Bad arguments for option \'-L\': \'$VIASH_PAR_L\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_L="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to -L. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--interval)
|
||
[ -n "$VIASH_PAR_INTERVAL" ] && ViashError Bad arguments for option \'--interval\': \'$VIASH_PAR_INTERVAL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_INTERVAL="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --interval. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--interval=*)
|
||
[ -n "$VIASH_PAR_INTERVAL" ] && ViashError Bad arguments for option \'--interval=*\': \'$VIASH_PAR_INTERVAL\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_INTERVAL=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
--max_pos)
|
||
[ -n "$VIASH_PAR_MAX_POS" ] && ViashError Bad arguments for option \'--max_pos\': \'$VIASH_PAR_MAX_POS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MAX_POS="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to --max_pos. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
--max_pos=*)
|
||
[ -n "$VIASH_PAR_MAX_POS" ] && ViashError Bad arguments for option \'--max_pos=*\': \'$VIASH_PAR_MAX_POS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_PAR_MAX_POS=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
---engine)
|
||
VIASH_ENGINE_ID="$2"
|
||
shift 2
|
||
;;
|
||
---engine=*)
|
||
VIASH_ENGINE_ID="$(ViashRemoveFlags "$1")"
|
||
shift 1
|
||
;;
|
||
---setup)
|
||
VIASH_MODE='setup'
|
||
VIASH_SETUP_STRATEGY="$2"
|
||
shift 2
|
||
;;
|
||
---setup=*)
|
||
VIASH_MODE='setup'
|
||
VIASH_SETUP_STRATEGY="$(ViashRemoveFlags "$1")"
|
||
shift 1
|
||
;;
|
||
---dockerfile)
|
||
VIASH_MODE='dockerfile'
|
||
shift 1
|
||
;;
|
||
---docker_run_args)
|
||
VIASH_DOCKER_RUN_ARGS+=("$2")
|
||
shift 2
|
||
;;
|
||
---docker_run_args=*)
|
||
VIASH_DOCKER_RUN_ARGS+=("$(ViashRemoveFlags "$1")")
|
||
shift 1
|
||
;;
|
||
---docker_image_id)
|
||
VIASH_MODE='docker_image_id'
|
||
shift 1
|
||
;;
|
||
---debug)
|
||
VIASH_MODE='debug'
|
||
shift 1
|
||
;;
|
||
---cpus)
|
||
[ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_META_CPUS="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to ---cpus. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
---cpus=*)
|
||
[ -n "$VIASH_META_CPUS" ] && ViashError Bad arguments for option \'---cpus=*\': \'$VIASH_META_CPUS\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_META_CPUS=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
---memory)
|
||
[ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_META_MEMORY="$2"
|
||
[ $# -lt 2 ] && ViashError Not enough arguments passed to ---memory. Use "--help" to get more information on the parameters. && exit 1
|
||
shift 2
|
||
;;
|
||
---memory=*)
|
||
[ -n "$VIASH_META_MEMORY" ] && ViashError Bad arguments for option \'---memory=*\': \'$VIASH_META_MEMORY\' \& \'$2\' - you should provide exactly one argument for this option. && exit 1
|
||
VIASH_META_MEMORY=$(ViashRemoveFlags "$1")
|
||
shift 1
|
||
;;
|
||
*) # positional arg or unknown option
|
||
# since the positional args will be eval'd, can we always quote, instead of using ViashQuote
|
||
VIASH_POSITIONAL_ARGS="$VIASH_POSITIONAL_ARGS '$1'"
|
||
[[ $1 == -* ]] && ViashWarning $1 looks like a parameter but is not a defined parameter and will instead be treated as a positional argument. Use "--help" to get more information on the parameters.
|
||
shift # past argument
|
||
;;
|
||
esac
|
||
done
|
||
|
||
# parse positional parameters
|
||
eval set -- $VIASH_POSITIONAL_ARGS
|
||
|
||
|
||
if [ "$VIASH_ENGINE_ID" == "native" ] ; then
|
||
VIASH_ENGINE_TYPE='native'
|
||
elif [ "$VIASH_ENGINE_ID" == "docker" ] ; then
|
||
VIASH_ENGINE_TYPE='docker'
|
||
else
|
||
ViashError "Engine '$VIASH_ENGINE_ID' is not recognized. Options are: docker, native."
|
||
exit 1
|
||
fi
|
||
|
||
if [[ "$VIASH_ENGINE_TYPE" == "docker" ]]; then
|
||
# check if docker is installed properly
|
||
ViashDockerInstallationCheck
|
||
|
||
# determine docker image id
|
||
if [[ "$VIASH_ENGINE_ID" == 'docker' ]]; then
|
||
VIASH_DOCKER_IMAGE_ID='images.viash-hub.com/vsh/biobox/sortmerna: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_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_PAIRED+x} ]; then
|
||
VIASH_PAR_PAIRED="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_FASTX+x} ]; then
|
||
VIASH_PAR_FASTX="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_SAM+x} ]; then
|
||
VIASH_PAR_SAM="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_SQ+x} ]; then
|
||
VIASH_PAR_SQ="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_PRINT_ALL_READS+x} ]; then
|
||
VIASH_PAR_PRINT_ALL_READS="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_PAIRED_IN+x} ]; then
|
||
VIASH_PAR_PAIRED_IN="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_PAIRED_OUT+x} ]; then
|
||
VIASH_PAR_PAIRED_OUT="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_OUT2+x} ]; then
|
||
VIASH_PAR_OUT2="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_SOUT+x} ]; then
|
||
VIASH_PAR_SOUT="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_F+x} ]; then
|
||
VIASH_PAR_F="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_R+x} ]; then
|
||
VIASH_PAR_R="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_VERBOSE+x} ]; then
|
||
VIASH_PAR_VERBOSE="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_DE_NOVO+x} ]; then
|
||
VIASH_PAR_DE_NOVO="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_OTU_MAP+x} ]; then
|
||
VIASH_PAR_OTU_MAP="false"
|
||
fi
|
||
if [ -z ${VIASH_PAR_FULL_SEARCH+x} ]; then
|
||
VIASH_PAR_FULL_SEARCH="false"
|
||
fi
|
||
|
||
# check whether required files exist
|
||
if [ ! -z "$VIASH_PAR_INPUT" ]; then
|
||
IFS=';'
|
||
set -f
|
||
for file in $VIASH_PAR_INPUT; do
|
||
unset IFS
|
||
if [ ! -e "$file" ]; then
|
||
ViashError "Input file '$file' does not exist."
|
||
exit 1
|
||
fi
|
||
done
|
||
set +f
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_REF" ]; then
|
||
IFS=';'
|
||
set -f
|
||
for file in $VIASH_PAR_REF; do
|
||
unset IFS
|
||
if [ ! -e "$file" ]; then
|
||
ViashError "Input file '$file' does not exist."
|
||
exit 1
|
||
fi
|
||
done
|
||
set +f
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_RIBO_DATABASE_MANIFEST" ] && [ ! -e "$VIASH_PAR_RIBO_DATABASE_MANIFEST" ]; then
|
||
ViashError "Input file '$VIASH_PAR_RIBO_DATABASE_MANIFEST' does not exist."
|
||
exit 1
|
||
fi
|
||
|
||
# check whether parameters values are of the right type
|
||
if [[ -n "$VIASH_PAR_PAIRED" ]]; then
|
||
if ! [[ "$VIASH_PAR_PAIRED" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--paired' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_FASTX" ]]; then
|
||
if ! [[ "$VIASH_PAR_FASTX" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--fastx' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_SAM" ]]; then
|
||
if ! [[ "$VIASH_PAR_SAM" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--sam' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_SQ" ]]; then
|
||
if ! [[ "$VIASH_PAR_SQ" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--sq' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_NUM_ALIGNMENTS" ]]; then
|
||
if ! [[ "$VIASH_PAR_NUM_ALIGNMENTS" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--num_alignments' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_MIN_LIS" ]]; then
|
||
if ! [[ "$VIASH_PAR_MIN_LIS" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--min_lis' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_PRINT_ALL_READS" ]]; then
|
||
if ! [[ "$VIASH_PAR_PRINT_ALL_READS" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--print_all_reads' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_PAIRED_IN" ]]; then
|
||
if ! [[ "$VIASH_PAR_PAIRED_IN" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--paired_in' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_PAIRED_OUT" ]]; then
|
||
if ! [[ "$VIASH_PAR_PAIRED_OUT" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--paired_out' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_OUT2" ]]; then
|
||
if ! [[ "$VIASH_PAR_OUT2" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--out2' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_SOUT" ]]; then
|
||
if ! [[ "$VIASH_PAR_SOUT" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--sout' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_MATCH" ]]; then
|
||
if ! [[ "$VIASH_PAR_MATCH" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--match' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_MISMATCH" ]]; then
|
||
if ! [[ "$VIASH_PAR_MISMATCH" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--mismatch' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_GAP_OPEN" ]]; then
|
||
if ! [[ "$VIASH_PAR_GAP_OPEN" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--gap_open' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_GAP_EXT" ]]; then
|
||
if ! [[ "$VIASH_PAR_GAP_EXT" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--gap_ext' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_N" ]]; then
|
||
if ! [[ "$VIASH_PAR_N" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--N' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_A" ]]; then
|
||
if ! [[ "$VIASH_PAR_A" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--a' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_E" ]]; then
|
||
if ! [[ "$VIASH_PAR_E" =~ ^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$ ]]; then
|
||
ViashError '--e' has to be a double. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_F" ]]; then
|
||
if ! [[ "$VIASH_PAR_F" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--F' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_R" ]]; then
|
||
if ! [[ "$VIASH_PAR_R" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--R' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_NUM_ALIGNMENT" ]]; then
|
||
if ! [[ "$VIASH_PAR_NUM_ALIGNMENT" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--num_alignment' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_BEST" ]]; then
|
||
if ! [[ "$VIASH_PAR_BEST" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--best' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_VERBOSE" ]]; then
|
||
if ! [[ "$VIASH_PAR_VERBOSE" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--verbose' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_ID" ]]; then
|
||
if ! [[ "$VIASH_PAR_ID" =~ ^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$ ]]; then
|
||
ViashError '--id' has to be a double. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_COVERAGE" ]]; then
|
||
if ! [[ "$VIASH_PAR_COVERAGE" =~ ^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$ ]]; then
|
||
ViashError '--coverage' has to be a double. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_DE_NOVO" ]]; then
|
||
if ! [[ "$VIASH_PAR_DE_NOVO" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--de_novo' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_OTU_MAP" ]]; then
|
||
if ! [[ "$VIASH_PAR_OTU_MAP" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--otu_map' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_NUM_SEED" ]]; then
|
||
if ! [[ "$VIASH_PAR_NUM_SEED" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--num_seed' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [ -n "$VIASH_PAR_PASSES" ]; then
|
||
IFS=';'
|
||
set -f
|
||
for val in $VIASH_PAR_PASSES; do
|
||
if ! [[ "${val}" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--passes' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
done
|
||
set +f
|
||
unset IFS
|
||
fi
|
||
|
||
if [[ -n "$VIASH_PAR_FULL_SEARCH" ]]; then
|
||
if ! [[ "$VIASH_PAR_FULL_SEARCH" =~ ^(true|True|TRUE|false|False|FALSE|yes|Yes|YES|no|No|NO)$ ]]; then
|
||
ViashError '--full_search' has to be a boolean_true. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_INDEX" ]]; then
|
||
if ! [[ "$VIASH_PAR_INDEX" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--index' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_L" ]]; then
|
||
if ! [[ "$VIASH_PAR_L" =~ ^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$ ]]; then
|
||
ViashError '-L' has to be a double. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_INTERVAL" ]]; then
|
||
if ! [[ "$VIASH_PAR_INTERVAL" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--interval' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_PAR_MAX_POS" ]]; then
|
||
if ! [[ "$VIASH_PAR_MAX_POS" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError '--max_pos' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_CPUS" ]]; then
|
||
if ! [[ "$VIASH_META_CPUS" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'cpus' has to be an integer. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_B" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_B" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_b' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_KB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_KB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_kb' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_MB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_MB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_mb' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_GB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_GB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_gb' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_TB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_TB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_tb' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_PB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_PB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_pb' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_KIB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_KIB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_kib' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_MIB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_MIB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_mib' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_GIB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_GIB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_gib' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_TIB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_TIB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_tib' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
if [[ -n "$VIASH_META_MEMORY_PIB" ]]; then
|
||
if ! [[ "$VIASH_META_MEMORY_PIB" =~ ^[-+]?[0-9]+$ ]]; then
|
||
ViashError 'memory_pib' has to be a long. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# check whether value is belongs to a set of choices
|
||
if [ ! -z "$VIASH_PAR_BLAST" ]; then
|
||
VIASH_PAR_BLAST_CHOICES=("0;1;1 cigar;1 cigar qcov;1 cigar qcov qstrand")
|
||
IFS=';'
|
||
set -f
|
||
if ! [[ ";${VIASH_PAR_BLAST_CHOICES[*]};" =~ ";$VIASH_PAR_BLAST;" ]]; then
|
||
ViashError '--blast' specified value of \'$VIASH_PAR_BLAST\' is not in the list of allowed values. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
set +f
|
||
unset IFS
|
||
fi
|
||
|
||
if [ ! -z "$VIASH_PAR_ZIP_OUT" ]; then
|
||
VIASH_PAR_ZIP_OUT_CHOICES=("1;true;t;yes;y;0;false;f;no;n;-1")
|
||
IFS=';'
|
||
set -f
|
||
if ! [[ ";${VIASH_PAR_ZIP_OUT_CHOICES[*]};" =~ ";$VIASH_PAR_ZIP_OUT;" ]]; then
|
||
ViashError '--zip_out' specified value of \'$VIASH_PAR_ZIP_OUT\' is not in the list of allowed values. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
set +f
|
||
unset IFS
|
||
fi
|
||
|
||
if [ ! -z "$VIASH_PAR_INDEX" ]; then
|
||
VIASH_PAR_INDEX_CHOICES=("0;1;2")
|
||
IFS=';'
|
||
set -f
|
||
if ! [[ ";${VIASH_PAR_INDEX_CHOICES[*]};" =~ ";$VIASH_PAR_INDEX;" ]]; then
|
||
ViashError '--index' specified value of \'$VIASH_PAR_INDEX\' is not in the list of allowed values. Use "--help" to get more information on the parameters.
|
||
exit 1
|
||
fi
|
||
set +f
|
||
unset IFS
|
||
fi
|
||
|
||
# create parent directories of output files, if so desired
|
||
if [ ! -z "$VIASH_PAR_LOG" ] && [ ! -d "$(dirname "$VIASH_PAR_LOG")" ]; then
|
||
mkdir -p "$(dirname "$VIASH_PAR_LOG")"
|
||
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_TEST_INPUT=()
|
||
IFS=';'
|
||
for var in $VIASH_PAR_INPUT; do
|
||
unset IFS
|
||
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" )
|
||
var=$(ViashDockerAutodetectMount "$var")
|
||
VIASH_TEST_INPUT+=( "$var" )
|
||
done
|
||
VIASH_PAR_INPUT=$(IFS=';' ; echo "${VIASH_TEST_INPUT[*]}")
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_REF" ]; then
|
||
VIASH_TEST_REF=()
|
||
IFS=';'
|
||
for var in $VIASH_PAR_REF; do
|
||
unset IFS
|
||
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$var")" )
|
||
var=$(ViashDockerAutodetectMount "$var")
|
||
VIASH_TEST_REF+=( "$var" )
|
||
done
|
||
VIASH_PAR_REF=$(IFS=';' ; echo "${VIASH_TEST_REF[*]}")
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_RIBO_DATABASE_MANIFEST" ]; then
|
||
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_RIBO_DATABASE_MANIFEST")" )
|
||
VIASH_PAR_RIBO_DATABASE_MANIFEST=$(ViashDockerAutodetectMount "$VIASH_PAR_RIBO_DATABASE_MANIFEST")
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_LOG" ]; then
|
||
VIASH_DIRECTORY_MOUNTS+=( "$(ViashDockerAutodetectMountArg "$VIASH_PAR_LOG")" )
|
||
VIASH_PAR_LOG=$(ViashDockerAutodetectMount "$VIASH_PAR_LOG")
|
||
VIASH_CHOWN_VARS+=( "$VIASH_PAR_LOG" )
|
||
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-sortmerna-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_PAIRED+x} ]; then echo "${VIASH_PAR_PAIRED}" | sed "s#'#'\"'\"'#g;s#.*#par_paired='&'#" ; else echo "# par_paired="; fi )
|
||
$( 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_REF+x} ]; then echo "${VIASH_PAR_REF}" | sed "s#'#'\"'\"'#g;s#.*#par_ref='&'#" ; else echo "# par_ref="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_RIBO_DATABASE_MANIFEST+x} ]; then echo "${VIASH_PAR_RIBO_DATABASE_MANIFEST}" | sed "s#'#'\"'\"'#g;s#.*#par_ribo_database_manifest='&'#" ; else echo "# par_ribo_database_manifest="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_LOG+x} ]; then echo "${VIASH_PAR_LOG}" | sed "s#'#'\"'\"'#g;s#.*#par_log='&'#" ; else echo "# par_log="; 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_OTHER+x} ]; then echo "${VIASH_PAR_OTHER}" | sed "s#'#'\"'\"'#g;s#.*#par_other='&'#" ; else echo "# par_other="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_KVDB+x} ]; then echo "${VIASH_PAR_KVDB}" | sed "s#'#'\"'\"'#g;s#.*#par_kvdb='&'#" ; else echo "# par_kvdb="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_IDX_DIR+x} ]; then echo "${VIASH_PAR_IDX_DIR}" | sed "s#'#'\"'\"'#g;s#.*#par_idx_dir='&'#" ; else echo "# par_idx_dir="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_READB+x} ]; then echo "${VIASH_PAR_READB}" | sed "s#'#'\"'\"'#g;s#.*#par_readb='&'#" ; else echo "# par_readb="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_FASTX+x} ]; then echo "${VIASH_PAR_FASTX}" | sed "s#'#'\"'\"'#g;s#.*#par_fastx='&'#" ; else echo "# par_fastx="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_SAM+x} ]; then echo "${VIASH_PAR_SAM}" | sed "s#'#'\"'\"'#g;s#.*#par_sam='&'#" ; else echo "# par_sam="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_SQ+x} ]; then echo "${VIASH_PAR_SQ}" | sed "s#'#'\"'\"'#g;s#.*#par_sq='&'#" ; else echo "# par_sq="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_BLAST+x} ]; then echo "${VIASH_PAR_BLAST}" | sed "s#'#'\"'\"'#g;s#.*#par_blast='&'#" ; else echo "# par_blast="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_NUM_ALIGNMENTS+x} ]; then echo "${VIASH_PAR_NUM_ALIGNMENTS}" | sed "s#'#'\"'\"'#g;s#.*#par_num_alignments='&'#" ; else echo "# par_num_alignments="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_MIN_LIS+x} ]; then echo "${VIASH_PAR_MIN_LIS}" | sed "s#'#'\"'\"'#g;s#.*#par_min_lis='&'#" ; else echo "# par_min_lis="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_PRINT_ALL_READS+x} ]; then echo "${VIASH_PAR_PRINT_ALL_READS}" | sed "s#'#'\"'\"'#g;s#.*#par_print_all_reads='&'#" ; else echo "# par_print_all_reads="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_PAIRED_IN+x} ]; then echo "${VIASH_PAR_PAIRED_IN}" | sed "s#'#'\"'\"'#g;s#.*#par_paired_in='&'#" ; else echo "# par_paired_in="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_PAIRED_OUT+x} ]; then echo "${VIASH_PAR_PAIRED_OUT}" | sed "s#'#'\"'\"'#g;s#.*#par_paired_out='&'#" ; else echo "# par_paired_out="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_OUT2+x} ]; then echo "${VIASH_PAR_OUT2}" | sed "s#'#'\"'\"'#g;s#.*#par_out2='&'#" ; else echo "# par_out2="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_SOUT+x} ]; then echo "${VIASH_PAR_SOUT}" | sed "s#'#'\"'\"'#g;s#.*#par_sout='&'#" ; else echo "# par_sout="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_ZIP_OUT+x} ]; then echo "${VIASH_PAR_ZIP_OUT}" | sed "s#'#'\"'\"'#g;s#.*#par_zip_out='&'#" ; else echo "# par_zip_out="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_MATCH+x} ]; then echo "${VIASH_PAR_MATCH}" | sed "s#'#'\"'\"'#g;s#.*#par_match='&'#" ; else echo "# par_match="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_MISMATCH+x} ]; then echo "${VIASH_PAR_MISMATCH}" | sed "s#'#'\"'\"'#g;s#.*#par_mismatch='&'#" ; else echo "# par_mismatch="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_GAP_OPEN+x} ]; then echo "${VIASH_PAR_GAP_OPEN}" | sed "s#'#'\"'\"'#g;s#.*#par_gap_open='&'#" ; else echo "# par_gap_open="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_GAP_EXT+x} ]; then echo "${VIASH_PAR_GAP_EXT}" | sed "s#'#'\"'\"'#g;s#.*#par_gap_ext='&'#" ; else echo "# par_gap_ext="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_N+x} ]; then echo "${VIASH_PAR_N}" | sed "s#'#'\"'\"'#g;s#.*#par_N='&'#" ; else echo "# par_N="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_A+x} ]; then echo "${VIASH_PAR_A}" | sed "s#'#'\"'\"'#g;s#.*#par_a='&'#" ; else echo "# par_a="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_E+x} ]; then echo "${VIASH_PAR_E}" | sed "s#'#'\"'\"'#g;s#.*#par_e='&'#" ; else echo "# par_e="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_F+x} ]; then echo "${VIASH_PAR_F}" | sed "s#'#'\"'\"'#g;s#.*#par_F='&'#" ; else echo "# par_F="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_R+x} ]; then echo "${VIASH_PAR_R}" | sed "s#'#'\"'\"'#g;s#.*#par_R='&'#" ; else echo "# par_R="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_NUM_ALIGNMENT+x} ]; then echo "${VIASH_PAR_NUM_ALIGNMENT}" | sed "s#'#'\"'\"'#g;s#.*#par_num_alignment='&'#" ; else echo "# par_num_alignment="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_BEST+x} ]; then echo "${VIASH_PAR_BEST}" | sed "s#'#'\"'\"'#g;s#.*#par_best='&'#" ; else echo "# par_best="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_VERBOSE+x} ]; then echo "${VIASH_PAR_VERBOSE}" | sed "s#'#'\"'\"'#g;s#.*#par_verbose='&'#" ; else echo "# par_verbose="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_ID+x} ]; then echo "${VIASH_PAR_ID}" | sed "s#'#'\"'\"'#g;s#.*#par_id='&'#" ; else echo "# par_id="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_COVERAGE+x} ]; then echo "${VIASH_PAR_COVERAGE}" | sed "s#'#'\"'\"'#g;s#.*#par_coverage='&'#" ; else echo "# par_coverage="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_DE_NOVO+x} ]; then echo "${VIASH_PAR_DE_NOVO}" | sed "s#'#'\"'\"'#g;s#.*#par_de_novo='&'#" ; else echo "# par_de_novo="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_OTU_MAP+x} ]; then echo "${VIASH_PAR_OTU_MAP}" | sed "s#'#'\"'\"'#g;s#.*#par_otu_map='&'#" ; else echo "# par_otu_map="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_NUM_SEED+x} ]; then echo "${VIASH_PAR_NUM_SEED}" | sed "s#'#'\"'\"'#g;s#.*#par_num_seed='&'#" ; else echo "# par_num_seed="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_PASSES+x} ]; then echo "${VIASH_PAR_PASSES}" | sed "s#'#'\"'\"'#g;s#.*#par_passes='&'#" ; else echo "# par_passes="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_EDGE+x} ]; then echo "${VIASH_PAR_EDGE}" | sed "s#'#'\"'\"'#g;s#.*#par_edge='&'#" ; else echo "# par_edge="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_FULL_SEARCH+x} ]; then echo "${VIASH_PAR_FULL_SEARCH}" | sed "s#'#'\"'\"'#g;s#.*#par_full_search='&'#" ; else echo "# par_full_search="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_INDEX+x} ]; then echo "${VIASH_PAR_INDEX}" | sed "s#'#'\"'\"'#g;s#.*#par_index='&'#" ; else echo "# par_index="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_L+x} ]; then echo "${VIASH_PAR_L}" | sed "s#'#'\"'\"'#g;s#.*#par_L='&'#" ; else echo "# par_L="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_INTERVAL+x} ]; then echo "${VIASH_PAR_INTERVAL}" | sed "s#'#'\"'\"'#g;s#.*#par_interval='&'#" ; else echo "# par_interval="; fi )
|
||
$( if [ ! -z ${VIASH_PAR_MAX_POS+x} ]; then echo "${VIASH_PAR_MAX_POS}" | sed "s#'#'\"'\"'#g;s#.*#par_max_pos='&'#" ; else echo "# par_max_pos="; 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 -eo pipefail
|
||
|
||
unset_if_false=( par_fastx par_sq par_fastx par_print_all_reads par_paired_in par_paired_out
|
||
par_F par_R par_verbose par_de_novo par_otu_map par_full_search par_out2
|
||
par_sout par_sam par_paired )
|
||
|
||
|
||
for var in "\${unset_if_false[@]}"; do
|
||
if [ "\${!var}" == "false" ]; then
|
||
unset \$var
|
||
fi
|
||
done
|
||
|
||
reads=()
|
||
IFS=";" read -ra input <<< "\$par_input"
|
||
if [ "\${#input[@]}" -eq 2 ]; then
|
||
reads="--reads \${input[0]} --reads \${input[1]}"
|
||
# set paired to true in case it's not
|
||
par_paired=true
|
||
else
|
||
reads="--reads \${input[0]}"
|
||
par_paired=false
|
||
fi
|
||
|
||
refs=()
|
||
|
||
# check if references are input normally or through a manifest file
|
||
if [[ ! -z "\$par_ribo_database_manifest" ]]; then
|
||
while IFS= read -r path || [[ -n \$path ]]; do
|
||
refs=\$refs" --ref \$path"
|
||
done < \$par_ribo_database_manifest
|
||
|
||
elif [[ ! -z "\$par_ref" ]]; then
|
||
IFS=";" read -ra ref <<< "\$par_ref"
|
||
# check if length is 2 and par_paired is set to true
|
||
if [[ "\${#ref[@]}" -eq 2 && "\$par_paired" == "true" ]]; then
|
||
refs="--ref \${ref[0]} --ref \${ref[1]}"
|
||
# check if length is 1 and par_paired is set to false
|
||
elif [[ "\${#ref[@]}" -eq 1 && "\$par_paired" == "false" ]]; then
|
||
refs="--ref \$par_ref"
|
||
else # if one reference provided but paired is set to true:
|
||
echo "Two reference fasta files are required for paired-end reads"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo "No reference fasta file(s) provided"
|
||
exit 1
|
||
fi
|
||
|
||
|
||
sortmerna \\
|
||
\$refs \\
|
||
\$reads \\
|
||
--workdir . \\
|
||
\${par_output:+--aligned "\${par_output}"} \\
|
||
\${par_fastx:+--fastx} \\
|
||
\${par_other:+--other "\${par_other}"} \\
|
||
\${par_kvdb:+--kvdb "\${par_kvdb}"} \\
|
||
\${par_idx_dir:+--idx-dir "\${par_idx_dir}"} \\
|
||
\${par_readb:+--readb "\${par_readb}"} \\
|
||
\${par_sam:+--sam} \\
|
||
\${par_sq:+--sq} \\
|
||
\${par_blast:+--blast "\${par_blast}"} \\
|
||
\${par_num_alignments:+--num_alignments "\${par_num_alignments}"} \\
|
||
\${par_min_lis:+--min_lis "\${par_min_lis}"} \\
|
||
\${par_print_all_reads:+--print_all_reads} \\
|
||
\${par_paired_in:+--paired_in} \\
|
||
\${par_paired_out:+--paired_out} \\
|
||
\${par_out2:+--out2} \\
|
||
\${par_sout:+--sout} \\
|
||
\${par_zip_out:+--zip-out "\${par_zip_out}"} \\
|
||
\${par_match:+--match "\${par_match}"} \\
|
||
\${par_mismatch:+--mismatch "\${par_mismatch}"} \\
|
||
\${par_gap_open:+--gap_open "\${par_gap_open}"} \\
|
||
\${par_gap_ext:+--gap_ext "\${par_gap_ext}"} \\
|
||
\${par_N:+-N "\${par_N}"} \\
|
||
\${par_a:+-a "\${par_a}"} \\
|
||
\${par_e:+-e "\${par_e}"} \\
|
||
\${par_F:+-F} \\
|
||
\${par_R:+-R} \\
|
||
\${par_num_alignment:+--num_alignment "\${par_num_alignment}"} \\
|
||
\${par_best:+--best "\${par_best}"} \\
|
||
\${par_verbose:+--verbose} \\
|
||
\${par_id:+--id "\${par_id}"} \\
|
||
\${par_coverage:+--coverage "\${par_coverage}"} \\
|
||
\${par_de_novo:+--de_novo} \\
|
||
\${par_otu_map:+--otu_map} \\
|
||
\${par_num_seed:+--num_seed "\${par_num_seed}"} \\
|
||
\${par_passes:+--passes "\${par_passes}"} \\
|
||
\${par_edge:+--edge "\${par_edge}"} \\
|
||
\${par_full_search:+--full_search} \\
|
||
\${par_index:+--index "\${par_index}"} \\
|
||
\${par_L:+-L \$par_L} \\
|
||
\${par_interval:+--interval "\${par_interval}"} \\
|
||
\${par_max_pos:+--max_pos "\${par_max_pos}"}
|
||
|
||
|
||
if [ ! -z \$par_log ]; then
|
||
mv "\${par_output}.log" \$par_log
|
||
fi
|
||
|
||
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
|
||
unset VIASH_TEST_INPUT
|
||
IFS=';'
|
||
for var in $VIASH_PAR_INPUT; do
|
||
unset IFS
|
||
if [ -z "$VIASH_TEST_INPUT" ]; then
|
||
VIASH_TEST_INPUT="$(ViashDockerStripAutomount "$var")"
|
||
else
|
||
VIASH_TEST_INPUT="$VIASH_TEST_INPUT;""$(ViashDockerStripAutomount "$var")"
|
||
fi
|
||
done
|
||
VIASH_PAR_INPUT="$VIASH_TEST_INPUT"
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_REF" ]; then
|
||
unset VIASH_TEST_REF
|
||
IFS=';'
|
||
for var in $VIASH_PAR_REF; do
|
||
unset IFS
|
||
if [ -z "$VIASH_TEST_REF" ]; then
|
||
VIASH_TEST_REF="$(ViashDockerStripAutomount "$var")"
|
||
else
|
||
VIASH_TEST_REF="$VIASH_TEST_REF;""$(ViashDockerStripAutomount "$var")"
|
||
fi
|
||
done
|
||
VIASH_PAR_REF="$VIASH_TEST_REF"
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_RIBO_DATABASE_MANIFEST" ]; then
|
||
VIASH_PAR_RIBO_DATABASE_MANIFEST=$(ViashDockerStripAutomount "$VIASH_PAR_RIBO_DATABASE_MANIFEST")
|
||
fi
|
||
if [ ! -z "$VIASH_PAR_LOG" ]; then
|
||
VIASH_PAR_LOG=$(ViashDockerStripAutomount "$VIASH_PAR_LOG")
|
||
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
|
||
|
||
|
||
exit 0
|