#!/bin/bash
### ---
### name: 'SOMATIC_CNV_REF_BUILDER:SOMA_CNV_BUILD_REFERENCE (build_reference)'
### container: '292967571998.dkr.ecr.us-west-2.amazonaws.com/soma-cnv:20260604-3cb5ec5'
### outputs:
### - 'batch_reference.parquet'
### - 'sex_calls.csv'
### - 'feature_stats.csv'
### - '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/9b/5b11715f761d1627fae83e19dedaa9/.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 1136_2QY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_OFT-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1029_FSS-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_1VE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_42D-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_TB0-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_5BE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_3T4-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_KAF-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_03T-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_D36-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_7VJ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_6K6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_4DP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_4E9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_7L-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_K8V-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_3JH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_HV2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_65R-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1029_BTXK-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_CPH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_DNH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_77Q-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_HI8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_P6B-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_5PQ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_1I8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_2F2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1029_YCN-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_XYF-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_2E7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_ED4-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_7BW-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_0KC-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_6WU-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_2S9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_1VP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_5AH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_3I9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f manifest.tsv
rm -f 869_VV1-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1029_PAP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_3FE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f .command.run
rm -f 869_OMQ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_I3-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_3X6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_814-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_NTY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1029_XI2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_ROX-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_2RO-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f .command.sh
rm -f 869_DOI-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_5JZ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_75V-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_42G-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_35B-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_6F7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_0L8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_5Z2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_YP6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_UZP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_RWW-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1029_BNK6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_FH7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_2PU-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_0QH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_7OO-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_VTY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 869_LSE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
rm -f 1136_3FA-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/88/70a45730b9cca4a67af2d287a679b9/1136_2QY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_2QY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/60/68f8e255563827aacab75bcb4e71a7/869_OFT-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_OFT-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/70/c3412b8e515ee35cb79ab36f0ca88f/1029_FSS-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1029_FSS-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1c/32a89f2973ac8efcc36a5251872d7d/1136_1VE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_1VE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c0/6515f1860bc1a19e08741ff3317475/1136_42D-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_42D-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/a8/dc8121352897959385852d96fc3b30/869_TB0-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_TB0-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c7/0cf8b066bfc969f82c08a0981e3c66/1136_5BE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_5BE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/eb/b2e1c6257d583faad25cd887da6f88/1136_3T4-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_3T4-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/a5/ed78b0f4eb615d1aeb337a30caedde/869_KAF-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_KAF-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d7/3c56a44fd1efffdfcf7041b28bf680/1136_03T-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_03T-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/24/54ba21f0961c7329bc8a822b9586aa/869_D36-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_D36-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ee/73607a17797b181b0b80673fd5ccb3/1136_7VJ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_7VJ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/76/543488546d3c0465bbcec475cb3611/1136_6K6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_6K6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f8/f9a273da607dd7c246c00f2d401b28/1136_4DP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_4DP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/80/26f3cf5fda482086b0fd788cd452a0/1136_4E9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_4E9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/28/360248dc7ab755b76ecb1df3dd9871/1136_7L-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_7L-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/0d/a688b4a93e9f9ec232c20be4778d90/869_K8V-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_K8V-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/21/9d5f6f48c75637c2fa07518de9f983/1136_3JH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_3JH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7b/e8b3164e0a351a6ba2dba857bc4130/869_HV2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_HV2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/3b/9af0247ee82e0b68044520d8bf7d56/1136_65R-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_65R-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ee/27e89849ccc530dd8d357312f7d121/1029_BTXK-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1029_BTXK-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c7/763fed8f7c3e741fe90c879997c9b1/869_CPH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_CPH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/be/6bc981791c430152a6bce7bc5232d6/869_DNH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_DNH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/64/53bcb86615171c7922971e8a2aa9d3/1136_77Q-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_77Q-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f6/91c3bf24725f304ef4eb510e6d6336/869_HI8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_HI8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e6/306af2f55f8063474942ec46828ce4/869_P6B-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_P6B-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/2a/0dc356f2f08c622b8c0b20c7272763/1136_5PQ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_5PQ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/62/176a507de553986c8ad48913bc7bd8/1136_1I8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_1I8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7d/d71d0da983640e4ab38322bcabbf08/1136_2F2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_2F2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1f/72118cafd58d03d391d85454fd0f93/1029_YCN-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1029_YCN-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/65/d94b69f5e3d7510adc198c49ce0c7f/869_XYF-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_XYF-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/09/42bdc80b46a827786b0e9a0e72e188/1136_2E7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_2E7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/3c/a43ced31f7661353afa3514a76565d/869_ED4-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_ED4-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/50/077bd2875e3b3da7d333ad938b0ea6/1136_7BW-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_7BW-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/fe/883cabb9d086cd4ae508b09e9cd108/1136_0KC-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_0KC-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e4/20462bea4c83332d7d4d0f3ee6ef48/1136_6WU-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_6WU-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ab/500a78e14a0ee83305f9380b6a5870/1136_2S9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_2S9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/e7/daa5c62d5be5b1263e6217bcd67070/1136_1VP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_1VP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b6/bbcddb6efb41af9fb9b4c2a0a83c24/1136_5AH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_5AH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/f4/84eaeecd7de2104e1c6122920c5645/1136_3I9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_3I9-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/tmp/84/39203127936ae4f8fdb3abb6f1cac4/manifest.tsv manifest.tsv")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/10/bca23291a4f09a6c3df247b9444493/869_VV1-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_VV1-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/5d/3eddbb350da3ec3861359cb5d37a0e/1029_PAP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1029_PAP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/7c/f47f8c0aa104a516260ccba3340a9d/1136_3FE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_3FE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9b/5b11715f761d1627fae83e19dedaa9/.command.run .command.run")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/35/6309f8e49890ddbe9262586ee40302/869_OMQ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_OMQ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ef/8ced17e75dbadaeb129d1d0e961b7a/869_I3-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_I3-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/ae/4c65b41cc14a4db43c2e49d460661a/1136_3X6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_3X6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/53/b1844d26672f5eace3f7acb5004a91/1136_814-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_814-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/d4/a2ab6f69f94368d57754a50bb5bc09/869_NTY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_NTY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/18/0ea98ff1af352a2cc637af8a59c0af/1029_XI2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1029_XI2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/a4/e373aeb7bc51bc71ed07b4076f1969/869_ROX-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_ROX-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/23/d0c0a63422f0ae83483ec9c9c4637a/1136_2RO-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_2RO-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9b/5b11715f761d1627fae83e19dedaa9/.command.sh .command.sh")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/6d/bc60c169693496dc2575b72b3a2731/869_DOI-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_DOI-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/3a/d31cd06cd9a82feef706fb1254dc0e/1136_5JZ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_5JZ-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/28/8a678ecbad45df2329e4305e19b158/1136_75V-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_75V-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/22/8a9d3e2fdbfbde6d7542f3b741b46e/1136_42G-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_42G-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/58/432ab851d8c757b3c4e955348b0509/1136_35B-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_35B-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/95/50e0e2225450ddeca1f487d5e7ee69/1136_6F7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_6F7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/df/45c0ce291737b41599c635fe0bea47/1136_0L8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_0L8-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/39/b2d6960c6d2ac95906d24c4c76d419/1136_5Z2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_5Z2-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b1/c324078b0677270ca35c2f9c517034/869_YP6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_YP6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/4f/43c4b87b0e0b6b6976bf06d53ac638/869_UZP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_UZP-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/91/b03df9929999314634361e6bd07f71/869_RWW-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_RWW-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/73/9abc690950cd19dbc2597b765c2ac9/1029_BNK6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1029_BNK6-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/0f/8799ea34eaf617ad3afa62fa31df95/869_FH7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_FH7-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/0e/dbc8abb75684bc44a52a2be2f492af/1136_2PU-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_2PU-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/b7/bc7393e70feb4eb4807413b280bfb2/1136_0QH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_0QH-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/c3/3fef3d8a5ff69a91e9774b5c2a15a6/1136_7OO-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_7OO-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/aa/a2c4e86cd0bc70896d80500b862400/869_VTY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_VTY-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/cd/16a6997424e6587b69acf44ce61e73/869_LSE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 869_LSE-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
downloads+=("nxf_s3_download s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/1e/2be86299acd03fa04b6e38927e429e/1136_3FA-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz 1136_3FA-N1-BDNA-1_A237CFYLT3_1_probes.tsv.gz")
nxf_parallel "${downloads[@]}"
echo "==> STAGING COMPLETE (73 inputs)"
echo ""
}
nxf_unstage_outputs() {
true
uploads=()
IFS=$'\n'
for name in $(eval "ls -1d batch_reference.parquet sex_calls.csv feature_stats.csv versions.yml" | sort | uniq); do
uploads+=("nxf_s3_upload '$name' s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9b/5b11715f761d1627fae83e19dedaa9")
done
unset IFS
nxf_parallel "${uploads[@]}"
}
nxf_unstage_controls() {
true
nxf_s3_upload .command.out s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9b/5b11715f761d1627fae83e19dedaa9 || true
nxf_s3_upload .command.err s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9b/5b11715f761d1627fae83e19dedaa9 || true
nxf_s3_upload .command.trace s3://natera-rnd-pltf-dev-nextflow-scratch-01/work/9b/5b11715f761d1627fae83e19dedaa9 || 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/9b/5b11715f761d1627fae83e19dedaa9/.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