#!/bin/bash
#SBATCH -J nf-NFCORE_METATDENOVO_METATDENOVO_BBMAP_BBNORM_(all_samples)
#SBATCH -o /gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/93ee8435fa7bf1fcbcaa9f752f2232/.command.log
#SBATCH --no-requeue
#SBATCH --signal B:USR2@30
#SBATCH -c 6
#SBATCH -t 240:00:00
#SBATCH --mem 1048576M
#SBATCH --qos=long -p highmem
NXF_CHDIR=/gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/93ee8435fa7bf1fcbcaa9f752f2232
### ---
### name: 'NFCORE_METATDENOVO:METATDENOVO:BBMAP_BBNORM (all_samples)'
### container: '/gxfs_home/geomar/smomw524/.singularity/community-cr-prod.seqera.io-docker-registry-v2-blobs-sha256-5a-5aae5977ff9de3e01ff962dc495bfa23f4304c676446b5fdf2de5c7edfa2dc4e-data.img'
### outputs:
### - '*.fastq.gz'
### - '*.log'
### ...
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)

    /usr/bin/env bash -C -e -u -o pipefail /gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/93ee8435fa7bf1fcbcaa9f752f2232/.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
    
    /usr/bin/env bash -C -e -u -o pipefail /gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/93ee8435fa7bf1fcbcaa9f752f2232/.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
}
nxf_container_env() {
cat << EOF
export PYTHONNOUSERSITE="1"
export R_PROFILE_USER="/.Rprofile"
export R_ENVIRON_USER="/.Renviron"
export JULIA_DEPOT_PATH="/usr/local/share/julia"
EOF
}

nxf_sleep() {
  sleep $1 2>/dev/null || sleep 1;
}

nxf_date() {
    local s n
    read s n < <(date '+%s %N')
    if [[ $n =~ ^[0-9]+$ ]]; then
        n=$(printf '%09d' "$((10#$n))")
        echo "$((s * 1000 + 10#${n:0:3}))"
    else
        echo "$((s * 1000))"
    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() {
  local source=$1
  local target=$2
  mkdir -p $target
  rsync -rRl $source $target
}

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 > /gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/93ee8435fa7bf1fcbcaa9f752f2232/.exitcode
    set +u
    exit $exit_status
}

on_term() {
    set +e
    [[ "$pid" ]] && nxf_kill $pid
}

nxf_launch() {
    set +u; env - PATH="$PATH" ${TMP:+SINGULARITYENV_TMP="$TMP"} ${TMPDIR:+SINGULARITYENV_TMPDIR="$TMPDIR"} ${NXF_TASK_WORKDIR:+SINGULARITYENV_NXF_TASK_WORKDIR="$NXF_TASK_WORKDIR"} SINGULARITYENV_NXF_DEBUG="${NXF_DEBUG:=0}" singularity exec --no-home --pid -B /gxfs_work/geomar/smomw524/iceberg_metaG/work /gxfs_home/geomar/smomw524/.singularity/community-cr-prod.seqera.io-docker-registry-v2-blobs-sha256-5a-5aae5977ff9de3e01ff962dc495bfa23f4304c676446b5fdf2de5c7edfa2dc4e-data.img /bin/bash -c "cd \"$NXF_TASK_WORKDIR\"; eval $(nxf_container_env); bash -C -e -u -o pipefail /gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/93ee8435fa7bf1fcbcaa9f752f2232/.command.run nxf_trace"
}

nxf_stage() {
    true
    # stage input files
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/6e/a7b871c1aae6cee761b5c6ea06343f/26Feb1256-H09.processed.fastq.gz 26Feb1256-H09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/b6/42460fe8e2ad2f16ab3daefd9c3041/26Feb1256-B03.processed.fastq.gz 26Feb1256-B03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/6d/ecf88c7528024579f22f7cc16373c3/26Mar681-D03.processed.fastq.gz 26Mar681-D03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/c9/afbde8f1741065666fb03586f05a1c/26Feb1256-E04.processed.fastq.gz 26Feb1256-E04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/7e/3784bf6d5ca3b07537e84e01c72c28/26Mar681-G04.processed.fastq.gz 26Mar681-G04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/8f/fa7b5ae80c2fa166e2f98fc646c2cc/26Feb1256-C07.processed.fastq.gz 26Feb1256-C07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/8e/c1889fd6fbef4946039723204d3d2e/26Mar681-B02.processed.fastq.gz 26Mar681-B02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/f8/161f00a83e32823e49ea08b3435155/26Feb1256-E10.processed.fastq.gz 26Feb1256-E10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/50/e827ba14afe5513b2a6d61f96a84cd/26Mar681-F04.processed.fastq.gz 26Mar681-F04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/67/e650330120201c721e763fc87d5ad3/26Feb1256-H05.processed.fastq.gz 26Feb1256-H05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/44/3e6261938b4244ac7893250a65edaf/26Mar681-A02.processed.fastq.gz 26Mar681-A02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/61/c257324ed3f393abe57720353b0408/26Feb1256-A06.processed.fastq.gz 26Feb1256-A06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/d6/5bf7c64362c307a342ab8c53d82059/26Feb1256-H01.processed.fastq.gz 26Feb1256-H01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/19/379a65aa9f1d4864e8a94aba0631fb/26Feb1256-F04.processed.fastq.gz 26Feb1256-F04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/c1/ce27351bea8bce28d9f2721b7d271e/26Feb1256-F08.processed.fastq.gz 26Feb1256-F08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/4f/50d8afd18034bf05c65e08e9fe0dc9/26Feb1256-D07.processed.fastq.gz 26Feb1256-D07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/58/a7e8c2960cb169f5b571de492891b4/26Feb1256-D08.processed.fastq.gz 26Feb1256-D08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/92/5e486c61dd36790db0315f191d8cd0/26Feb1256-D04.processed.fastq.gz 26Feb1256-D04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/f6/21c6db9c70f1897cbb0a93058b26ce/26Mar681-C03.processed.fastq.gz 26Mar681-C03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/a8/1870668046b4d1b032d375d621fee8/26Mar681-C02.processed.fastq.gz 26Mar681-C02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/8f/7dd31591d8db66d3b0acf00f049ee3/26Feb1256-C03.processed.fastq.gz 26Feb1256-C03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/5a/a38be2ec3e1c9866c1281eb63bc690/26Feb1256-D03.processed.fastq.gz 26Feb1256-D03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/cb/ad69ed7307f4e51064fff22307d220/26Feb1256-F10.processed.fastq.gz 26Feb1256-F10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/4f/f16e6505b0ce53366a063cf95726c1/26Mar681-G01.processed.fastq.gz 26Mar681-G01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/ae/7ca1fd4cb07247a9816012e5612e9b/26Feb1256-G09.processed.fastq.gz 26Feb1256-G09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/66/d55a4a560ce7ac1fc5bebe1886c6a3/26Feb1256-G08.processed.fastq.gz 26Feb1256-G08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/0a/0703b2293f081c61018b93147995d8/26Feb1256-G05.processed.fastq.gz 26Feb1256-G05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/8a/fb19a6bcfdd63ec4586c2ea5fc00e1/26Feb1256-G04.processed.fastq.gz 26Feb1256-G04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/a7/ada77d68a1fe77383c7349d1c4ceb2/26Feb1256-G01.processed.fastq.gz 26Feb1256-G01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/e4/022ab86edf9c916442a322f6e39eb3/26Feb1256-E05.processed.fastq.gz 26Feb1256-E05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/c9/2a343c048261ee0a3909a0db930f84/26Feb1256-C10.processed.fastq.gz 26Feb1256-C10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/2e/ca3e41b6c3bd873eb97eb012cfb76b/26Mar681-G05.processed.fastq.gz 26Mar681-G05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/5f/d16bd94dc25d0053c9c234912e996c/26Feb1256-E07.processed.fastq.gz 26Feb1256-E07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/71/500f70e4b88a6df75fcf10c382a024/26Feb1256-E03.processed.fastq.gz 26Feb1256-E03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/13/839fb520bf6e0ea509e2eec05c6abb/26Mar681-A01.processed.fastq.gz 26Mar681-A01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/5d/e56be6ab2c12828bf25df1768af551/26Feb1256-E11.processed.fastq.gz 26Feb1256-E11.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/a9/f4cb0d49fdaccf8b1ae34ebeb39368/26Feb1256-D01.processed.fastq.gz 26Feb1256-D01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/f5/84e04fb9ba3427fc086669f430ecde/26Mar681-B05.processed.fastq.gz 26Mar681-B05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/47/b3d72ab1b5851e5f81d922dd5e3ff9/26Mar681-B03.processed.fastq.gz 26Mar681-B03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/b4/ac0fe2a8d19dd195a81dc7fc87ec3e/26Mar681-A03.processed.fastq.gz 26Mar681-A03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/32/d22491d6d3243dbb229d1746f4a75f/26Feb1256-F05.processed.fastq.gz 26Feb1256-F05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/97/41b018e70b8f87d1a1d07c5d32376a/26Feb1256-F07.processed.fastq.gz 26Feb1256-F07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/fb/3efd4045505670687ece2eed70c6fd/26Feb1256-F09.processed.fastq.gz 26Feb1256-F09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/3a/efa2c233ba77607777712c367d3c26/26Mar681-H04.processed.fastq.gz 26Mar681-H04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/b8/299e571e2e0dd8251e9908a35f7be5/26Feb1256-F02.processed.fastq.gz 26Feb1256-F02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/0c/a3afe972e0f04d5ff580fd95311340/26Feb1256-F03.processed.fastq.gz 26Feb1256-F03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/e4/8c2224bdb9039bb28fa24f2d11d90e/26Mar681-H03.processed.fastq.gz 26Mar681-H03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/64/796ccfde74d13c1a1dedbffbbe7679/26Feb1256-D10.processed.fastq.gz 26Feb1256-D10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/ca/bfd0a8ed48ac5ab5ffcb632c8c8f37/26Feb1256-F01.processed.fastq.gz 26Feb1256-F01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/b3/5a339dc97994aa2c58d2fee143cddc/26Mar681-H01.processed.fastq.gz 26Mar681-H01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/d1/00ece3e9dd4f92b316d32ce2cf8c93/26Mar681-A06.processed.fastq.gz 26Mar681-A06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/42/38c814984abad33c448a311a3dca2a/26Feb1256-D11.processed.fastq.gz 26Feb1256-D11.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/7c/89aac854286e25e6abb4c53fe8796b/26Mar681-H02.processed.fastq.gz 26Mar681-H02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/93/73e22fa75bc75dfe09afa0dc149556/26Mar681-A05.processed.fastq.gz 26Mar681-A05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/86/a7a0c2839f68e6cdd7808145cabb16/26Mar681-H05.processed.fastq.gz 26Mar681-H05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/f9/ff36114567f69db4d56264bb599d1c/26Mar681-B01.processed.fastq.gz 26Mar681-B01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/fc/c5f6313de06bfcb5da1fa4ec148f10/26Feb1256-E01.processed.fastq.gz 26Feb1256-E01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/5a/a65603162ab37a2aaa49907ca92f14/26Feb1256-E08.processed.fastq.gz 26Feb1256-E08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/34/1f2a7b3e27e4b476a31309de811f8e/26Feb1256-E09.processed.fastq.gz 26Feb1256-E09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/20/3d86d4107fc53b544728d39c13f82c/26Feb1256-B01.processed.fastq.gz 26Feb1256-B01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/5c/6fa1150cdb710041c0b15d7e349d34/26Feb1256-C11.processed.fastq.gz 26Feb1256-C11.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/ab/ac1ee8eaf65f0ab0a7aeee1717dbee/26Feb1256-C09.processed.fastq.gz 26Feb1256-C09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/e6/5cfe5998530b6efcaf57a6a3353ddf/26Feb1256-E06.processed.fastq.gz 26Feb1256-E06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/59/259a575fb45a0fa76a801c1056027f/26Feb1256-H07.processed.fastq.gz 26Feb1256-H07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/030bbdf7bd6403f800a5bcb23e8714/26Mar681-D01.processed.fastq.gz 26Mar681-D01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/8e/b8203254b56721126fb70060e03898/26Mar681-B04.processed.fastq.gz 26Mar681-B04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/1c/3020977c031d6daf9fa88fd4249d41/26Feb1256-E02.processed.fastq.gz 26Feb1256-E02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/ff/c51de1e989e4f1bcd3801e3b1fd0c5/26Feb1256-C05.processed.fastq.gz 26Feb1256-C05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/aa/da82eb8bc6b9e57f48ec37f0f636f1/26Feb1256-D02.processed.fastq.gz 26Feb1256-D02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/2e/c9a2a0d83e1fadae2d0b0f9ef14f46/26Feb1256-H03.processed.fastq.gz 26Feb1256-H03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/d0/2ba92623adb646f39cc2b21576957b/26Mar681-A04.processed.fastq.gz 26Mar681-A04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/88/5c4e5021a97159498492a1a8e6addb/26Feb1256-A08.processed.fastq.gz 26Feb1256-A08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/e2/7bd734f168342dac93b30bd57c7418/26Feb1256-B11.processed.fastq.gz 26Feb1256-B11.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/98/d204b39a24baecbf3132d4e5b4f972/26Mar681-D05.processed.fastq.gz 26Mar681-D05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/6d/344ec76106ba3e1763e6218da0066b/26Feb1256-A01.processed.fastq.gz 26Feb1256-A01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/75/ff22f1736396f4c88835adf264a500/26Feb1256-F06.processed.fastq.gz 26Feb1256-F06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/2c/1ab2d7f6b9b411486befd58de26ee1/26Mar681-F02.processed.fastq.gz 26Mar681-F02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/e8/895f29177cc242e04e7f255ab955d2/26Mar681-C05.processed.fastq.gz 26Mar681-C05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/0c/b76e9cdd11b042631d261df0728022/26Mar681-C04.processed.fastq.gz 26Mar681-C04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/32/5a00ee1181eb6d033700a71a5e362f/26Feb1256-D06.processed.fastq.gz 26Feb1256-D06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/2a/6b15f8484aa0e67fef9bca4c83ec35/26Feb1256-D09.processed.fastq.gz 26Feb1256-D09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/68/061f52f310ff3e0ea88f102f995bf1/26Feb1256-C02.processed.fastq.gz 26Feb1256-C02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/d9/bf373e0c5d3708da103c02c6fdf23e/26Mar681-C01.processed.fastq.gz 26Mar681-C01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/dd/f0b87d31d5dc52ac7a9f5c2b362720/26Feb1256-D05.processed.fastq.gz 26Feb1256-D05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/a1/715d10b21f0d65e9e5a59dea7be8b9/26Feb1256-C01.processed.fastq.gz 26Feb1256-C01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/d3/114e47eddf02863b329583e0e1e858/26Feb1256-G06.processed.fastq.gz 26Feb1256-G06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/d3/2c534e7eea4bc0f725d15d08d856e5/26Feb1256-G07.processed.fastq.gz 26Feb1256-G07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/3e/b04364e9176adc77cbb13f5d4cc148/26Mar681-G02.processed.fastq.gz 26Mar681-G02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/9d/b55472cb15ed59ff7db769c1a1d46f/26Mar681-G03.processed.fastq.gz 26Mar681-G03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/22/300b0ea94311915f17760850ec4b5a/26Feb1256-G03.processed.fastq.gz 26Feb1256-G03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/1a/33765c38f33ce6003bc3040ecf3361/26Feb1256-G02.processed.fastq.gz 26Feb1256-G02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/90/4191652efbd727ff5d1ce70429a831/26Feb1256-H10.processed.fastq.gz 26Feb1256-H10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/ca/d648c1902e4c74d2b5a8671ddc8955/26Feb1256-H08.processed.fastq.gz 26Feb1256-H08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/43/ba7d1364cc7f3db2e71ee6455ae432/26Mar681-D04.processed.fastq.gz 26Mar681-D04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/e8/d8e5b8fc5e67efe35228a511251fca/26Feb1256-B02.processed.fastq.gz 26Feb1256-B02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/3c/5610a904dcda88ff96063140da0f28/26Mar681-D02.processed.fastq.gz 26Mar681-D02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/74/8cd3cd4960a204e0a85dee9faa8f6c/26Feb1256-B04.processed.fastq.gz 26Feb1256-B04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/c6/c7573289175526954fe185f183a48a/26Feb1256-C08.processed.fastq.gz 26Feb1256-C08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/0b/3eed97b77bb4163c106a6342d655f0/26Feb1256-C06.processed.fastq.gz 26Feb1256-C06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/03/de37b32b8618033857497260d5617d/26Feb1256-A09.processed.fastq.gz 26Feb1256-A09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/1e/9449b513581447f1de2cd1a83fefc8/26Mar681-F03.processed.fastq.gz 26Mar681-F03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/8b/1bb000d7b1146e3a96bfc818c42ebb/26Feb1256-H04.processed.fastq.gz 26Feb1256-H04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/11/524f8da3007edf69bb2019f1884c71/26Feb1256-C04.processed.fastq.gz 26Feb1256-C04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/6c/e43781b2cb6176f37dca3d7ce73f55/26Feb1256-A07.processed.fastq.gz 26Feb1256-A07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/a6/a884568d9f338dcf20e02f1d22570f/26Feb1256-H06.processed.fastq.gz 26Feb1256-H06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/64/f9c21826b639cbaefe5f970505a6ed/26Feb1256-G10.processed.fastq.gz 26Feb1256-G10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/be/8b69169ea4693cf3fb615854ba6ecd/26Feb1256-H02.processed.fastq.gz 26Feb1256-H02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/5f/cd7351e3c0958ea00434ef34f068e5/26Mar681-F05.processed.fastq.gz 26Mar681-F05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/94/2d2fbaf541176489e2d84341ee0fa0/26Feb1256-A02.processed.fastq.gz 26Feb1256-A02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/04/25e8031f4dcfd4b187374e9a136cc8/26Mar681-F01.processed.fastq.gz 26Mar681-F01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/a5/2ca5f5c8d026e7ca0f9e8833f04256/26Feb1256-B10.processed.fastq.gz 26Feb1256-B10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/df/43aea97bd1c45364b6d550cbc69c08/26Feb1256-A04.processed.fastq.gz 26Feb1256-A04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/51/9cc004ad44d2c5c90d0f595435e972/26Feb1256-A03.processed.fastq.gz 26Feb1256-A03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/8d/53aa6ab8ebf3de3e248c324218ede0/26Mar681-E01.processed.fastq.gz 26Mar681-E01.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/a5/db6b3305aa0c0caacce3a0638a929c/26Feb1256-A05.processed.fastq.gz 26Feb1256-A05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/36/6bcf3233d257b0b7a6f63030b89700/26Feb1256-B09.processed.fastq.gz 26Feb1256-B09.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/be/611163c6866bea4a5708cdf6579859/26Feb1256-B08.processed.fastq.gz 26Feb1256-B08.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/26/a5ffb431517cfa513f90891cbad84c/26Feb1256-B06.processed.fastq.gz 26Feb1256-B06.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/d6/a8c54a7cb745f72d763db540a6c3d8/26Feb1256-A10.processed.fastq.gz 26Feb1256-A10.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/51/14bc1e9282242420c30dd20f492989/26Feb1256-B07.processed.fastq.gz 26Feb1256-B07.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/4e/a32cb30f42ca4d73de04904127b3c6/26Feb1256-A11.processed.fastq.gz 26Feb1256-A11.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/db/1b8f57d13e77217ca978a7b2a9228a/26Feb1256-B05.processed.fastq.gz 26Feb1256-B05.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/19/277ad19b0a038c59163f260c799340/26Mar681-E03.processed.fastq.gz 26Mar681-E03.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/f9/9f7b0de7a0ba921c4a7e3ea52cfc41/26Mar681-E02.processed.fastq.gz 26Mar681-E02.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/32/688d1b0c9a976200e4bdfba87a7766/26Mar681-E04.processed.fastq.gz 26Mar681-E04.processed.fastq.gz
    ln -s /gxfs_work/geomar/smomw524/iceberg_metaG/work/6d/bb89ded742cb4ba8d99dd54410ff06/26Mar681-E05.processed.fastq.gz 26Mar681-E05.processed.fastq.gz
}

nxf_unstage_outputs() {
    true
}

nxf_unstage_controls() {
    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"
    export NXF_BOXID="nxf-$(dd bs=18 count=1 if=/dev/urandom 2>/dev/null | base64 | tr +/ 0A | tr -d '\r\n')"
    NXF_SCRATCH=''
    [[ $NXF_DEBUG > 0 ]] && nxf_env
    touch /gxfs_work/geomar/smomw524/iceberg_metaG/work/c0/93ee8435fa7bf1fcbcaa9f752f2232/.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
