#!/bin/bash
### ---
### name: 'GERMLINE_CNV:ProcessBatch (1)'
### container: '292967571998.dkr.ecr.us-west-2.amazonaws.com/sarek/altera_cnv:0.4.0'
### outputs:
### - 'counts_1.parquet'
### - 'sample_metrics_1.parquet'
### - 'ploidy_1.parquet'
### - 'A2375WFLT3_1__sex_calls.parquet'
### - 'A2375WFLT3_1__sex_calls.png'
### ...
set -e
set -u
NXF_DEBUG=${NXF_DEBUG:=0}; [[ $NXF_DEBUG > 1 ]] && set -x
NXF_ENTRY=${1:-nxf_main}
nxf_tree() {
local pid=$1
declare -a ALL_CHILDREN
while read P PP;do
ALL_CHILDREN[$PP]+=" $P"
done < <(ps -e -o pid= -o ppid=)
pstat() {
local x_pid=$1
local STATUS=$(2> /dev/null < /proc/$1/status grep -E 'Vm|ctxt')
if [ $? = 0 ]; then
local x_vsz=$(echo "$STATUS" | grep VmSize | awk '{print $2}' || echo -n '0')
local x_rss=$(echo "$STATUS" | grep VmRSS | awk '{print $2}' || echo -n '0')
local x_peak=$(echo "$STATUS" | grep -E 'VmPeak|VmHWM' | sed 's/^.*:\s*//' | sed 's/[\sa-zA-Z]*$//' | tr '\n' ' ' || echo -n '0 0')
local x_pmem=$(awk -v rss=$x_rss -v mem_tot=$mem_tot 'BEGIN {printf "%.0f", rss/mem_tot*100*10}' || echo -n '0')
local vol_ctxt=$(echo "$STATUS" | grep '\bvoluntary_ctxt_switches' | awk '{print $2}' || echo -n '0')
local inv_ctxt=$(echo "$STATUS" | grep '\bnonvoluntary_ctxt_switches' | awk '{print $2}' || echo -n '0')
cpu_stat[x_pid]="$x_pid $x_pmem $x_vsz $x_rss $x_peak $vol_ctxt $inv_ctxt"
fi
}
pwalk() {
pstat $1
for i in ${ALL_CHILDREN[$1]:=}; do pwalk $i; done
}
pwalk $1
}
nxf_stat() {
cpu_stat=()
nxf_tree $1
declare -a sum=(0 0 0 0 0 0 0 0)
local pid
local i
for pid in "${!cpu_stat[@]}"; do
local row=(${cpu_stat[pid]})
[ $NXF_DEBUG = 1 ] && echo "++ stat mem=${row[*]}"
for i in "${!row[@]}"; do
if [ $i != 0 ]; then
sum[i]=$((sum[i]+row[i]))
fi
done
done
[ $NXF_DEBUG = 1 ] && echo -e "++ stat SUM=${sum[*]}"
for i in {1..7}; do
if [ ${sum[i]} -lt ${cpu_peak[i]} ]; then
sum[i]=${cpu_peak[i]}
else
cpu_peak[i]=${sum[i]}
fi
done
[ $NXF_DEBUG = 1 ] && echo -e "++ stat PEAK=${sum[*]}\n"
nxf_stat_ret=(${sum[*]})
}
nxf_mem_watch() {
set -o pipefail
local pid=$1
local trace_file=.command.trace
local count=0;
declare -a cpu_stat=(0 0 0 0 0 0 0 0)
declare -a cpu_peak=(0 0 0 0 0 0 0 0)
local mem_tot=$(< /proc/meminfo grep MemTotal | awk '{print $2}')
local timeout
local DONE
local STOP=''
[ $NXF_DEBUG = 1 ] && nxf_sleep 0.2 && ps fx
while true; do
nxf_stat $pid
if [ $count -lt 10 ]; then timeout=1;
elif [ $count -lt 120 ]; then timeout=5;
else timeout=30;
fi
read -t $timeout -r DONE || true
[[ $DONE ]] && break
if [ ! -e /proc/$pid ]; then
[ ! $STOP ] && STOP=$(nxf_date)
[ $(($(nxf_date)-STOP)) -gt 10000 ] && break
fi
count=$((count+1))
done
printf "%s\n" \
"%mem=${nxf_stat_ret[1]}" \
"vmem=${nxf_stat_ret[2]}" \
"rss=${nxf_stat_ret[3]}" \
"peak_vmem=${nxf_stat_ret[4]}" \
"peak_rss=${nxf_stat_ret[5]}" \
"vol_ctxt=${nxf_stat_ret[6]}" \
"inv_ctxt=${nxf_stat_ret[7]}" >> "$trace_file" || >&2 echo "Error: Failed to append to file: $trace_file"
}
nxf_write_trace() {
printf "%s\n" \
"nextflow.trace/v2" \
"realtime=$wall_time" \
"%cpu=$ucpu" \
"cpu_model=$cpu_model" \
"rchar=${io_stat1[0]}" \
"wchar=${io_stat1[1]}" \
"syscr=${io_stat1[2]}" \
"syscw=${io_stat1[3]}" \
"read_bytes=${io_stat1[4]}" \
"write_bytes=${io_stat1[5]}" >| "$trace_file" || >&2 echo "Error: Failed to write to file: $trace_file"
}
nxf_trace_mac() {
local start_millis=$(nxf_date)
/bin/bash -Ceuo pipefail .command.sh
local end_millis=$(nxf_date)
local wall_time=$((end_millis-start_millis))
local ucpu=''
local cpu_model=''
local io_stat1=('' '' '' '' '' '')
nxf_write_trace
}
nxf_fd() {
local FD=11
while [ -e /proc/$$/fd/$FD ]; do FD=$((FD+1)); done
echo $FD
}
nxf_trace_linux() {
local pid=$$
command -v ps &>/dev/null || { >&2 echo "Command 'ps' required by nextflow to collect task metrics cannot be found"; exit 1; }
local num_cpus=$(< /proc/cpuinfo grep '^processor' -c)
local cpu_model=$(< /proc/cpuinfo grep '^model name' | head -n 1 | awk 'BEGIN{FS="\t: "} { print $2 }')
local tot_time0=$(grep '^cpu ' /proc/stat | awk '{sum=$2+$3+$4+$5+$6+$7+$8+$9; printf "%.0f",sum}')
local cpu_time0=$(2> /dev/null < /proc/$pid/stat awk '{printf "%.0f", ($16+$17)*10 }' || echo -n 'X')
local io_stat0=($(2> /dev/null < /proc/$pid/io sed 's/^.*:\s*//' | head -n 6 | tr '\n' ' ' || echo -n '0 0 0 0 0 0'))
local start_millis=$(nxf_date)
trap 'kill $mem_proc' ERR
/bin/bash -Ceuo pipefail .command.sh &
local task=$!
mem_fd=$(nxf_fd)
eval "exec $mem_fd> >(nxf_mem_watch $task)"
local mem_proc=$!
wait $task
local end_millis=$(nxf_date)
local tot_time1=$(grep '^cpu ' /proc/stat | awk '{sum=$2+$3+$4+$5+$6+$7+$8+$9; printf "%.0f",sum}')
local cpu_time1=$(2> /dev/null < /proc/$pid/stat awk '{printf "%.0f", ($16+$17)*10 }' || echo -n 'X')
local ucpu=$(awk -v p1=$cpu_time1 -v p0=$cpu_time0 -v t1=$tot_time1 -v t0=$tot_time0 -v n=$num_cpus 'BEGIN { pct=(p1-p0)/(t1-t0)*100*n; printf("%.0f", pct>0 ? pct : 0) }' )
local io_stat1=($(2> /dev/null < /proc/$pid/io sed 's/^.*:\s*//' | head -n 6 | tr '\n' ' ' || echo -n '0 0 0 0 0 0'))
local i
for i in {0..5}; do
io_stat1[i]=$((io_stat1[i]-io_stat0[i]))
done
local wall_time=$((end_millis-start_millis))
[ $NXF_DEBUG = 1 ] && echo "+++ STATS %CPU=$ucpu TIME=$wall_time I/O=${io_stat1[*]}"
printf "%s\n" \
"nextflow.trace/v2" \
"realtime=$wall_time" \
"%cpu=$ucpu" \
"cpu_model=$cpu_model" \
"rchar=${io_stat1[0]}" \
"wchar=${io_stat1[1]}" \
"syscr=${io_stat1[2]}" \
"syscw=${io_stat1[3]}" \
"read_bytes=${io_stat1[4]}" \
"write_bytes=${io_stat1[5]}" >| "$trace_file" || >&2 echo "Error: Failed to write to file: $trace_file"
[ -e /proc/$mem_proc ] && eval "echo 'DONE' >&$mem_fd" || true
wait $mem_proc 2>/dev/null || true
while [ -e /proc/$mem_proc ]; do nxf_sleep 0.1; done
}
nxf_trace() {
local trace_file=.command.trace
touch $trace_file
if [[ $(uname) = Darwin ]]; then
nxf_trace_mac
else
nxf_trace_linux
fi
}
# bash helper functions
nxf_cp_retry() {
local max_attempts=1
local timeout=10
local attempt=0
local exitCode=0
while (( $attempt < $max_attempts ))
do
if "$@"
then
return 0
else
exitCode=$?
fi
if [[ $exitCode == 0 ]]
then
break
fi
nxf_sleep $timeout
attempt=$(( attempt + 1 ))
timeout=$(( timeout * 2 ))
done
}
nxf_parallel() {
IFS=$'\n'
local cmd=("$@")
local cpus=$(nproc 2>/dev/null || < /proc/cpuinfo grep '^process' -c)
local max=$(if (( cpus>4 )); then echo 4; else echo $cpus; fi)
local i=0
local pid=()
(
set +u
while ((i<${#cmd[@]})); do
local copy=()
for x in "${pid[@]}"; do
# if the process exist, keep in the 'copy' array, otherwise wait on it to capture the exit code
# see https://github.com/nextflow-io/nextflow/pull/4050
[[ -e /proc/$x ]] && copy+=($x) || wait $x
done
pid=("${copy[@]}")
if ((${#pid[@]}>=$max)); then
nxf_sleep 0.2
else
eval "${cmd[$i]}" &
pid+=($!)
((i+=1))
fi
done
for p in "${pid[@]}"; do
wait $p
done
)
unset IFS
}
# aws helper for s5cmd
nxf_s3_upload() {
local name=$1
local s3path=$2
if [[ "$name" == - ]]; then
local tmp=$(nxf_mktemp)
cp /dev/stdin $tmp/$name
/opt/s5cmd/bin/s5cmd --log error cp --storage-class STANDARD $tmp/$name "$s3path"
elif [[ -d "$name" ]]; then
/opt/s5cmd/bin/s5cmd --log error cp --storage-class STANDARD "$name/" "$s3path/$name/"
else
/opt/s5cmd/bin/s5cmd --log error cp --storage-class STANDARD "$name" "$s3path/$name"
fi
}
nxf_s3_download() {
local source=$1
local target=$2
echo " Downloading: $source"
local file_name=$(basename $1)
local is_dir=$(/opt/s5cmd/bin/s5cmd ls $source | grep -F "DIR ${file_name}/" -c)
if [[ $is_dir == 1 ]]; then
/opt/s5cmd/bin/s5cmd --log error cp "$source/*" "$target"
else
/opt/s5cmd/bin/s5cmd --log error cp "$source" "$target"
fi
}
nxf_sleep() {
sleep $1 2>/dev/null || sleep 1;
}
nxf_date() {
local ts=$(date +%s%3N);
if [[ ${#ts} == 10 ]]; then echo ${ts}000
elif [[ $ts == *%3N ]]; then echo ${ts/\%3N/000}
elif [[ $ts == *3N ]]; then echo ${ts/3N/000}
elif [[ ${#ts} == 13 ]]; then echo $ts
else echo "Unexpected timestamp value: $ts"; exit 1
fi
}
nxf_env() {
echo '============= task environment ============='
env | sort | sed "s/\(.*\)AWS\(.*\)=\(.\{6\}\).*/\1AWS\2=\3xxxxxxxxxxxxx/"
echo '============= task output =================='
}
nxf_kill() {
declare -a children
while read P PP;do
children[$PP]+=" $P"
done < <(ps -e -o pid= -o ppid=)
kill_all() {
[[ $1 != $$ ]] && kill $1 2>/dev/null || true
for i in ${children[$1]:=}; do kill_all $i; done
}
kill_all $1
}
nxf_mktemp() {
local base=${1:-/tmp}
mkdir -p "$base"
if [[ $(uname) = Darwin ]]; then mktemp -d $base/nxf.XXXXXXXXXX
else TMPDIR="$base" mktemp -d -t nxf.XXXXXXXXXX
fi
}
nxf_fs_copy() {
local source=$1
local target=$2
local basedir=$(dirname $1)
mkdir -p $target/$basedir
cp -fRL $source $target/$basedir
}
nxf_fs_move() {
local source=$1
local target=$2
local basedir=$(dirname $1)
mkdir -p $target/$basedir
mv -f $source $target/$basedir
}
nxf_fs_rsync() {
rsync -rRl $1 $2
}
nxf_fs_rclone() {
rclone copyto $1 $2/$1
}
nxf_fs_fcp() {
fcp $1 $2/$1
}
on_exit() {
local last_err=$?
local exit_status=${nxf_main_ret:=0}
[[ ${exit_status} -eq 0 && ${nxf_unstage_ret:=0} -ne 0 ]] && exit_status=${nxf_unstage_ret:=0}
[[ ${exit_status} -eq 0 && ${last_err} -ne 0 ]] && exit_status=${last_err}
printf -- $exit_status | nxf_s3_upload - s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c/.exitcode || true
set +u
rm -rf $NXF_SCRATCH || true
exit $exit_status
}
on_term() {
set +e
[[ "$pid" ]] && nxf_kill $pid
}
nxf_launch() {
/bin/bash -Ceuo pipefail .command.run nxf_trace
}
nxf_stage() {
true
# stage input files
downloads=(true)
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/cc/331969e3d4d18645536789c09a2cff/HG02882_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02882_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d4/249955bac3ae674fbb3148f9bcf43e/HG02555_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02555_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/85/4c84a8e446664fd820bd23bf970f31/HG01956_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG01956_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/5f/bc1a308883fcf0fd47173e8ad4957a/HG03063_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03063_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ed/52687c8ad20bf7d63a141d24672374/HG03095_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03095_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f5/046e5602d771ad98a33488bd7f0551/HG02111_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02111_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/21/4ddb422369a9dd41e239e49ee19247/HG02549_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02549_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ab/c9c38a28dc7b173192465e216ad959/HG01108_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG01108_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/15/f3094e9a7755b8a2281e47c1a337cd/HG01248_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG01248_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/06/3c94a7ae73b828aa7a3d1d3fbf8c8b/HG03099_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03099_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/17/8796ad273f306f5d26ba07ad2946d7/HG02315_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02315_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/cb/8f836decf6651bbbc8633f5cf93b45/HG02330_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02330_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/84/fcccae1e7f7035d768c565ab6d9d45/HG02878_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02878_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/03/65bb6a526c277a3f398020249accdb/HG02879_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02879_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/10/bf8b3017ef9bd27a152b0e7fb593fe/HG02323_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02323_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/24/383079454cd4bcb4ef2ce7b25fb2ee/HG02323_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02323_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/81/103eb3f412ab102f84a6e73439ed5e/HG02330_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02330_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f0/8b43c9f3ab27259ebbaa595206975f/HG02878_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02878_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1c/f9de2f3fb4f0ac2a1cbd55b9633fa9/HG01242_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG01242_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/bb/e54d6516826fbd1b8e39c8b38c4447/HG02952_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02952_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-platform-sandbox/platform_projects/altera_cnv/altera_v3_panel.bed altera_v3_panel.bed")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/48/ab194a9a394548cc3c794569975eef/HG03202_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03202_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/27/4e040ba931089341e60b462d58d793/HG01956_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG01956_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d2/dc4853d63e80685db11ef695180401/HG02882_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02882_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c/.command.sh .command.sh")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/54/e3799076b013be351419dfec31fe19/HG01248_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG01248_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e4/0bbaf2cc72ba42167139a1620d45a2/HG03073_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG03073_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/dc/a8045d917f772a06d8df54da9a1106/HG02676_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02676_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/69/35b715732bb04b0ccf579e1db00067/HG03099_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03099_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/28/2705e3645c8a34d3e31f80fd306dd6/HG02799_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02799_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e8/9dd790b5020d5d1251c2d8efa3762c/HG03136_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03136_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c7/3698bb40fe60572f4db85778b07373/HG02111_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02111_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/93/e3b4f49f047f1c78dd2da4396f150d/HG02497_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02497_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/14/74017b5679af4dfa6cc7b426baf54a/HG02419_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02419_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/aa/1ad23f68eb3ada01ffb83f78a658c7/HG02419_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02419_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e5/0e632374a7fa15a5979551030eace5/HG02982_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02982_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f5/220ed214f793e2a123a49e793dc9b6/HG01242_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG01242_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1b/0a9038d98d2f388d3ff9341e3d5765/HG02946_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02946_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/07/b5c3931e2af3c8c8afed463cbdcc3d/HG02799_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02799_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/75/358b70ac7305a2156ef55a378f2986/HG03063_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03063_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/70/7dd19065d1c82bac4687bb7042719a/HG02946_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02946_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/fe/44b18f732e8418f71c70806eb8ff15/HG02952_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02952_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/31/7e18afb89e873d8f6e4d728108340d/HG02799_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02799_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/67/cb5d3064038be8ba3000f6162306d3/HG03085_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03085_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e8/3fb00af178b74ac401188352a0d062/HG03025_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03025_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f5/f4d6225f53ec3365a46aaf75908428/HG03095_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03095_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d4/9898970530a5de7cc39e4c382eb17d/HG03073_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03073_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/4c/8039dd5ed0d4b35a60058a09bbc5b9/HG03202_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03202_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b0/812e814b4abdb100263c2d743e59bb/HG02982_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02982_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/93/1fbd49d033ed4eced44767b84d875b/HG02323_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02323_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/02/eefd4bcab315814c6a58bb25e4084d/HG03025_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03025_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b6/01e0b44400120cc1fca6a24ccaf22e/HG02676_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02676_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/28/9b6d43f8a4d9cc312d33e4ed63f0dc/HG03136_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03136_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8e/689f26ef16866012d51407e6191d7c/HG02878_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02878_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/56/c36c8970db196a75488d56e846012a/HG03085_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03085_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/45/e2f4dca42ff135afe552a2ab519efb/HG03073_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03073_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/28/5b225ac579c01fc872d6871c407eb5/HG02419_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02419_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f2/3d1d96015ef8f1144fed93ea51ce0b/HG02982_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02982_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8e/b7d567b71948d0c9e53b9db8b7c77b/HG01242_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG01242_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/06/77c6875beffc6b80021453c6f3de94/HG00731_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG00731_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/31/6cf4b8b5dd0db708e8c68f10a9bb58/HG02977_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02977_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7b/891d90e5195edec2cc6285a871c87b/HG02879_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02879_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e5/76579611860a73a6330891d923fab9/HG03095_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG03095_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/59/59945c531712363cf489c5e4f0dcc5/HG02861_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02861_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d0/c53669559f4b9780aef293af664e12/HG02497_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02497_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/dd/00d5166420ae380a8e49afd6122aee/HG02555_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02555_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/85/18360d6b77d94a9d9a9e7ecd4434bb/HG02111_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02111_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/49/a590faa53ac650ce57740e795808d5/HG02882_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02882_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/39/ab0788891fbc5456631904316d7c36/HG02315_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02315_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/2b/0665d6938e6fb435d03d449545185b/HG03099_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG03099_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/96/a98d4f1fc9baaa2e26246718471fda/HG02804_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02804_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7d/b626e025413c1083b1d5999cb78da8/HG02861_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02861_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/ec8db23b287531edfd6737f8ebae90/HG02816_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02816_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-platform-sandbox/platform_projects/altera_cnv/altera_v3_variable_regions.bed altera_v3_variable_regions.bed")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c/.command.run .command.run")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/tmp/18/4c446b075444a8ae018bfad64516a8/germline_cnv_input.csv germline_cnv_input.csv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e3/5771761ca60cd96bdbd18214f8c3e4/HG03054_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03054_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c4/2133a42bdacf13be9c355bc4b49a74/HG00731_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG00731_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ac/fcb7954915229b74a2ad625bd49d77/HG02549_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02549_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/4a/27e9175c4264f5d1be28512f1c7948/HG02315_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02315_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/dc/a3f6a7eda88f4bec7fe63d6873d594/HG02879_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02879_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/77/8d5cf0aa7429c33647f896aceac0cd/HG02816_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02816_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/93/31876d72811a42e095e48a6cf9effe/HG02977_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG02977_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b9/0c5524a9f0da2a28f0c80c5f953b58/HG03060_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03060_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/24/78de3a888823c88815d49cd409136d/HG03159_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03159_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1a/2bcd11a829f2a7e3eb2d4415e2d6e8/HG02804_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02804_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f1/3fd1f43420e551f55a119a561ceac4/HG02555_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG02555_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/3f/f04c955e6ba9d261f20a86c0896ea0/HG03159_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03159_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/06/feaa82458fad3319e586633b0da6b7/HG03028_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv HG03028_c_0001_gDNA_0001_B23H2H2LT4_3_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c7/4196eef9c84a0eff22c3362451cda3/HG03169_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03169_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d9/80eac77fe3f5f3d79ee5787b1403d7/HG01108_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG01108_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7f/c40c1e25f44d4b02846ea2f589b4dd/HG03082_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03082_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/71/0a964add7f7cdfcfe399ae008a3c7a/HG00731_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG00731_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c0/4ec32909d12f74d962383ead23a3a1/HG03028_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03028_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8c/4bb9c78cd39de2f4b6ca5601eb48b7/HG03169_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03169_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/09/0613d39677a6b0a49cd742e31ad2e9/HG02977_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG02977_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/91/89a65fab20ca8cb2706070925dce94/HG01108_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG01108_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ac/9b4d9f9905f2b6f34bc575d8983fd8/HG03082_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03082_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e0/25443612eef787daf813840e4150d5/HG03054_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03054_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/bc/57056ec98425fd4adf056a810dca8c/HG03060_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv HG03060_c_0001_gDNA_0001_B23H2H2LT4_2_counts.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/a1/06edc4eec0b514962802cff4b1592b/HG03028_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv HG03028_c_0001_gDNA_0001_B23H2H2LT4_1_counts.tsv")
nxf_parallel "${downloads[@]}"
echo "==> STAGING COMPLETE (101 inputs)"
echo ""
}
nxf_unstage_outputs() {
true
uploads=()
IFS=$'\n'
for name in $(eval "ls -1d counts_1.parquet sample_metrics_1.parquet ploidy_1.parquet A2375WFLT3_1__sex_calls.parquet A2375WFLT3_1__sex_calls.png" | sort | uniq); do
uploads+=("nxf_s3_upload '$name' s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c")
done
unset IFS
nxf_parallel "${uploads[@]}"
}
nxf_unstage_controls() {
true
nxf_s3_upload .command.out s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c || true
nxf_s3_upload .command.err s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c || true
nxf_s3_upload .command.trace s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c || true
}
nxf_unstage() {
if [[ ${nxf_main_ret:=0} == 0 ]]; then
(set -e -o pipefail; (nxf_unstage_outputs | tee -a .command.out) 3>&1 1>&2 2>&3 | tee -a .command.err)
nxf_unstage_ret=$?
fi
nxf_unstage_controls
}
nxf_main() {
trap on_exit EXIT
trap on_term TERM INT USR2
trap '' USR1
[[ "${NXF_CHDIR:-}" ]] && cd "$NXF_CHDIR"
NXF_SCRATCH="$(set +u; nxf_mktemp /tmp)"
[[ $NXF_DEBUG > 0 ]] && nxf_env
echo start | nxf_s3_upload - s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8a/843b442b3f4056063ad6882f8d6b2c/.command.begin
set +u
set -u
[[ $NXF_SCRATCH ]] && cd $NXF_SCRATCH
export NXF_TASK_WORKDIR="$PWD"
nxf_stage
set +e
(set -o pipefail; (nxf_launch | tee .command.out) 3>&1 1>&2 2>&3 | tee .command.err) &
pid=$!
wait $pid || nxf_main_ret=$?
nxf_unstage
}
$NXF_ENTRY