#!/bin/bash
### ---
### name: 'DAQ:AGGREGATE_POSTDEDUP_QC (postdedup_qc_aggregation)'
### container: '292967571998.dkr.ecr.us-west-2.amazonaws.com/daq/aggregate_postdedup_qc:1.8.0'
### outputs:
### - 'postdedup_qc.json'
### - 'versions.yml'
### ...
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/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb/.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)
rm -f 1_25PercentHG514.stats
rm -f 1_25PercentNA24385.mosdepth.summary.txt
rm -f 5PercentNA24385.mosdepth.summary.txt
rm -f 40PercentHG514.mosdepth.summary.txt
rm -f 2_5PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 16098090-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 40PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 14138939-cfDNA.mosdepth.summary.txt
rm -f 20PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 5PercentNA24385.stats
rm -f SH032_HG514.mosdepth.summary.txt
rm -f 10PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 10PercentHG514.stats
rm -f 13432478-cfDNA.stats
rm -f D0000476_22q.mosdepth.summary.txt
rm -f 40PercentHG514.stats
rm -f 10PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 1_25PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f SH032_HG514.stats
rm -f 3140_NA24385.stats
rm -f SH032_HG513.mosdepth.summary.txt
rm -f D0000476_22q.stats
rm -f 13432478-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 20PercentNA24385.mosdepth.summary.txt
rm -f 15451964-cfDNA.stats
rm -f 13432478-cfDNA.mosdepth.summary.txt
rm -f 14558439-cfDNA.mosdepth.summary.txt
rm -f 40PercentNA24385.stats
rm -f .command.sh
rm -f 10PercentHG514.mosdepth.summary.txt
rm -f 14138939-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f D0000476_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f D0000162_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 3140_NA24385.mosdepth.summary.txt
rm -f 16098090-cfDNA.stats
rm -f 15921737-cfDNA.stats
rm -f 14389853-cfDNA.stats
rm -f 2_5PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 13511611-cfDNA.mosdepth.summary.txt
rm -f SH032_HG513_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 13929215-cfDNA.stats
rm -f 5PercentHG514.stats
rm -f D0001109_22q.stats
rm -f 10PercentNA24385.mosdepth.summary.txt
rm -f 14138939-cfDNA.stats
rm -f 14389853-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 20PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 14558439-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 14668865-cfDNA.mosdepth.summary.txt
rm -f 13511611-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 3140_NA24143.mosdepth.summary.txt
rm -f 15921737-cfDNA.mosdepth.summary.txt
rm -f 13739430-cfDNA.mosdepth.summary.txt
rm -f 20PercentNA24385.stats
rm -f SH032_HG513.stats
rm -f 16098090-cfDNA.mosdepth.summary.txt
rm -f 15921737-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 14862332-cfDNA.mosdepth.summary.txt
rm -f 40PercentNA24385.mosdepth.summary.txt
rm -f 2_5PercentNA24385.stats
rm -f 13739430-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 13929215-cfDNA.mosdepth.summary.txt
rm -f 15451964-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 20PercentHG514.stats
rm -f 1_25PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f SH032_HG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f D0001483_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 1_25PercentHG514.mosdepth.summary.txt
rm -f D0000162_22q.mosdepth.summary.txt
rm -f D0001483_22q.mosdepth.summary.txt
rm -f 14862332-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f D0001483_22q.stats
rm -f .command.run
rm -f 5PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 5PercentHG514.mosdepth.summary.txt
rm -f 14668865-cfDNA.stats
rm -f 13511611-cfDNA.stats
rm -f 3140_NA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 40PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 13739430-cfDNA.stats
rm -f D0001109_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 5PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 14668865-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 14862332-cfDNA.stats
rm -f 1_25PercentNA24385.stats
rm -f 2_5PercentHG514.mosdepth.summary.txt
rm -f 2_5PercentHG514.stats
rm -f D0000162_22q.stats
rm -f 10PercentNA24385.stats
rm -f 20PercentHG514.mosdepth.summary.txt
rm -f 3140_NA24143.stats
rm -f 15451964-cfDNA.mosdepth.summary.txt
rm -f D0001109_22q.mosdepth.summary.txt
rm -f 13929215-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 2_5PercentNA24385.mosdepth.summary.txt
rm -f 14389853-cfDNA.mosdepth.summary.txt
rm -f 3140_NA24143_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics
rm -f 14558439-cfDNA.stats
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/29/10963d64b235dbabf3330453aed213/1_25PercentHG514.stats 1_25PercentHG514.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/43/0c145f7a88603ad862160fceb67d39/1_25PercentNA24385.mosdepth.summary.txt 1_25PercentNA24385.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9c/a494b17d6fa1dcfb94d607656dbde3/5PercentNA24385.mosdepth.summary.txt 5PercentNA24385.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/98/44ac67a8976636d23cbe8de2fe44e2/40PercentHG514.mosdepth.summary.txt 40PercentHG514.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/92/db011620e9767d03a1cadf41acf2cd/2_5PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 2_5PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/72/5b9c2b4e672a4ae06739137da33aa9/16098090-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 16098090-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7e/61cec2734dbdff3b2d64c22de82327/40PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 40PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/03/e1d57a6b0856e4d7ac8ad0696baab9/14138939-cfDNA.mosdepth.summary.txt 14138939-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e8/ded7dfb23ffa359e360181d23ee30b/20PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 20PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/2d/9b9d77aded826bbb46ea01b3523bb3/5PercentNA24385.stats 5PercentNA24385.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9e/7d3c101f6d89c7a82974f1dd9902b6/SH032_HG514.mosdepth.summary.txt SH032_HG514.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/52/92ad8f3300ebd94de718103e34a000/10PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 10PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/5c/64844a06ef201e719f15de4c53005f/10PercentHG514.stats 10PercentHG514.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/38/8c160b4942d5df5adcf977472e3097/13432478-cfDNA.stats 13432478-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d7/abc7fd99be3dc6780da9f1c18cb503/D0000476_22q.mosdepth.summary.txt D0000476_22q.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/68/31ede2d4678fb8254f091467d43a76/40PercentHG514.stats 40PercentHG514.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d3/c71299bc8e04afa99086c431493948/10PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 10PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/64/c36dc299fcfc0363a1e8ac58bdbf5c/1_25PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 1_25PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/93/9231785cb528df60db14df4ca7eb16/SH032_HG514.stats SH032_HG514.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/bb/cb2cce160fe32de9073101739b5c9c/3140_NA24385.stats 3140_NA24385.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c7/eaea6b8cbd1dfe82b9351c5703890f/SH032_HG513.mosdepth.summary.txt SH032_HG513.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8c/e4e0dc65fab268208a51f9252ca8e1/D0000476_22q.stats D0000476_22q.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1a/7eed87703bea2de2fd845be7e4e3de/13432478-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 13432478-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/37/2485422c7051482236ae0e47c419a3/20PercentNA24385.mosdepth.summary.txt 20PercentNA24385.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e6/899168693f71a5db8949b816e87516/15451964-cfDNA.stats 15451964-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/65/39be0c8c5f89225aecb8a1b3996786/13432478-cfDNA.mosdepth.summary.txt 13432478-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/a6/aeb6c35c2624c41a8817b1dcde6dbb/14558439-cfDNA.mosdepth.summary.txt 14558439-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/61/c9ba075064371078bd70fe24bd2494/40PercentNA24385.stats 40PercentNA24385.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb/.command.sh .command.sh")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ec/52a2ea8dc5ae9401d5878f416e144f/10PercentHG514.mosdepth.summary.txt 10PercentHG514.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/14/a91d83e05a3d166cff9bc02b5e8ae9/14138939-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 14138939-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c0/419e79f28e3851622794364475a6fb/D0000476_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics D0000476_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/74/fb0dc62b5781547bd1924ac0f92295/D0000162_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics D0000162_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/33/306414012265db86eda635596d5329/3140_NA24385.mosdepth.summary.txt 3140_NA24385.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/03/19f2917d54f96e6d361fc8f9cdd2b2/16098090-cfDNA.stats 16098090-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/05/1660b8461c802b9a0865b3881af0c0/15921737-cfDNA.stats 15921737-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/0a/b1dc188f12fc9520b765f452956924/14389853-cfDNA.stats 14389853-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/76/d027a179f68ed2fc788ddb2e0d9642/2_5PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 2_5PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/72/ab6793c9ca5e5445a2a7e14cd4ac69/13511611-cfDNA.mosdepth.summary.txt 13511611-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/2d/9a0e9379e8a6e4f2be6c971ffe6ccb/SH032_HG513_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics SH032_HG513_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c0/881d06404601c8e01ed6a4e706031c/13929215-cfDNA.stats 13929215-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/8f/2b4f84322d00a020a8bc6002ec6c9d/5PercentHG514.stats 5PercentHG514.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ac/b49eb4a36c5191209885b7f901921c/D0001109_22q.stats D0001109_22q.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/fe/b089266bd74baceac223447ac3f1a5/10PercentNA24385.mosdepth.summary.txt 10PercentNA24385.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/26/92df28d86630f2818a4e984e62d917/14138939-cfDNA.stats 14138939-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/5c/cf4326e7289c19525a84ee77847058/14389853-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 14389853-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/66/3410463866af21aac6bc0ba6f0ca7b/20PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 20PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/65/3b9fb9dec86bd559c4cc1994c0f6de/14558439-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 14558439-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/6f/20cc0626da24aba8387478454ba88a/14668865-cfDNA.mosdepth.summary.txt 14668865-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e5/1a7e08d75e92c647b576cb6d1ff650/13511611-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 13511611-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/12/3150f92fd80a1309178c7a091b2650/3140_NA24143.mosdepth.summary.txt 3140_NA24143.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/58/38680a08726295da5b046cbf132ddb/15921737-cfDNA.mosdepth.summary.txt 15921737-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1e/01257d5c652ea6086484589156b7ed/13739430-cfDNA.mosdepth.summary.txt 13739430-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/43/34d14cb951bc17c06e9d5ac05fce32/20PercentNA24385.stats 20PercentNA24385.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/71/685d2d9c3f93f45f4ff81689134c53/SH032_HG513.stats SH032_HG513.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/91/0bea0ac4c8060b00f70cb8c958bd9a/16098090-cfDNA.mosdepth.summary.txt 16098090-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/16/71d6fbebf9c7f59e235a97bf2461c1/15921737-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 15921737-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b1/338a6f76f116cc9308ee53dfb41e64/14862332-cfDNA.mosdepth.summary.txt 14862332-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/5e/a08690cc19e73915befa7839ceb3d9/40PercentNA24385.mosdepth.summary.txt 40PercentNA24385.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/6c/2c9f9b677fa1b4ff6ab6ce4f13b431/2_5PercentNA24385.stats 2_5PercentNA24385.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/2f/64bb6f1bf8c8ce313a350bb061fb90/13739430-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 13739430-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/4e/fb021f76f4b7512edfc9ca3d041b09/13929215-cfDNA.mosdepth.summary.txt 13929215-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7c/96a55fab901d230fce31d862343d1b/15451964-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 15451964-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/99/6ce931b5b16e8cd7ff0c1910037d62/20PercentHG514.stats 20PercentHG514.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1b/acd1bb5f00285101134f917b1fc940/1_25PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 1_25PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b7/616f86e2de44bf4074d7e7b3879852/SH032_HG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics SH032_HG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9d/4d4ea7048a601c44533cfb5123d98a/D0001483_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics D0001483_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/44/680adbad053cd4ad1680aee3e15cb3/1_25PercentHG514.mosdepth.summary.txt 1_25PercentHG514.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e4/f46711f5ed22a8437a2a4dc0c1ce67/D0000162_22q.mosdepth.summary.txt D0000162_22q.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ad/fafd4ee526d16dd6f0d5fec63d37f9/D0001483_22q.mosdepth.summary.txt D0001483_22q.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/54/e19c8bd878be48ccee5614509dd204/14862332-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 14862332-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/75/7efbbcd7078711cb72594019f4fb0f/D0001483_22q.stats D0001483_22q.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb/.command.run .command.run")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/41/39c375d7f22f3b355d8b1168f89259/5PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 5PercentNA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d2/76ee95e6e54bdcf84f75ab8545f827/5PercentHG514.mosdepth.summary.txt 5PercentHG514.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/6f/bd497480724707c3b8d92672a23b28/14668865-cfDNA.stats 14668865-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f3/408be319bd9181c70361182f855188/13511611-cfDNA.stats 13511611-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/25/cd8f944b396955ec65ecb0ea4999f0/3140_NA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 3140_NA24385_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/56/7bcf90ea37386106d980c71efbe443/40PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 40PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/16/bbdbce5525ad410717c584c6ac73b9/13739430-cfDNA.stats 13739430-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/38/87efe81a3990736aba378e1f6c6cc6/D0001109_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics D0001109_22q_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/28/f782b1762bf5cd067e1b8e2526de09/5PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 5PercentHG514_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7e/83d30784d69a7a8597c9411d372d26/14668865-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 14668865-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f3/4552fd0dbdf75e3c91cc02f5fd469f/14862332-cfDNA.stats 14862332-cfDNA.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/74/1ac84b8a3355f1844169f4c5669102/1_25PercentNA24385.stats 1_25PercentNA24385.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/21/e8251a4b0952c6f38e5c6fc4d04239/2_5PercentHG514.mosdepth.summary.txt 2_5PercentHG514.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c0/a6e261e25ff4c776b995224f016ea2/2_5PercentHG514.stats 2_5PercentHG514.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/6d/88bf0953473be15834c9b35e80ef21/D0000162_22q.stats D0000162_22q.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e6/925bf475b90465492f14f22de15a13/10PercentNA24385.stats 10PercentNA24385.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/95/7c96cd7c8a2151dfaac333beeeb275/20PercentHG514.mosdepth.summary.txt 20PercentHG514.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/46/b93e8c4aab54a5aed5aeb5b8c8b29f/3140_NA24143.stats 3140_NA24143.stats")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/73/65e6098b8c0af8e81972a23c7ad8be/15451964-cfDNA.mosdepth.summary.txt 15451964-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/dd/6e6b33475cdc9b6b072a70ddac4a19/D0001109_22q.mosdepth.summary.txt D0001109_22q.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/5a/51f4c47f8ca191dc64b7d9c7cf8b4e/13929215-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 13929215-cfDNA_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/23/d0151e9ecc11d2deac9fc7cfed6117/2_5PercentNA24385.mosdepth.summary.txt 2_5PercentNA24385.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ae/a7792af86ae34e370b4781de27143b/14389853-cfDNA.mosdepth.summary.txt 14389853-cfDNA.mosdepth.summary.txt")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c1/49b035ae3c78e44b4ed36097c42596/3140_NA24143_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics 3140_NA24143_prenatal-exome-v1-targets-hg38.sentieon.hs_metrics")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/69/0bf1e7c1f5aa6fdb348113ae12dd03/14558439-cfDNA.stats 14558439-cfDNA.stats")
nxf_parallel "${downloads[@]}"
echo "==> STAGING COMPLETE (98 inputs)"
echo ""
}
nxf_unstage_outputs() {
true
uploads=()
IFS=$'\n'
for name in $(eval "ls -1d postdedup_qc.json versions.yml" | sort | uniq); do
uploads+=("nxf_s3_upload '$name' s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb")
done
unset IFS
nxf_parallel "${uploads[@]}"
}
nxf_unstage_controls() {
true
nxf_s3_upload .command.out s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb || true
nxf_s3_upload .command.err s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb || true
nxf_s3_upload .command.trace s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb || 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/c1/6e3a4f35d9e8b0fd334ecaf3e1bdcb/.command.begin
set +u
set -u
/opt/s5cmd/bin/s5cmd --log error cp "s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/tmp/6c/c9ec1465b69edb59209822fdaf2c26/bin/*" $NXF_SCRATCH/nextflow-bin/
chmod +x $NXF_SCRATCH/nextflow-bin/* || true
export PATH=$NXF_SCRATCH/nextflow-bin:$PATH
[[ $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