#! /bin/bash
#
# SLURM resources
#SBATCH -t 10-24:00:00              # maximal runtime (hour:minutes:seconds)
#SBATCH --mem-per-cpu=20G         # memory per core
#SBATCH --cpus-per-task=16       # number of cores
# output files
#SBATCH -o /work/%u/job_logs/%x-%j.out
#SBATCH -e /work/%u/job_logs/%x-%j.err

set -euo pipefail

# Set the requested number of cores to the number of Threads your app should use
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK:-1}

# Load modules
ml Mamba/25.3.1-0 Nextflow/25.04.8

# ---- Java heap limits (prevents FastQC JVM from grabbing >100 GB) ----
# Apply to host JVMs and to apps inside Singularity/Apptainer containers
export JAVA_TOOL_OPTIONS="${JAVA_TOOL_OPTIONS:-} -Xms256m -Xmx4g"
export _JAVA_OPTIONS="${_JAVA_OPTIONS:-} -Xms256m -Xmx4g"
export APPTAINERENV_JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS"
export APPTAINERENV__JAVA_OPTIONS="$_JAVA_OPTIONS"
export SINGULARITYENV_JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS"
export SINGULARITYENV__JAVA_OPTIONS="$_JAVA_OPTIONS"

# use a big, quota-friendly path
export APPTAINER_CACHEDIR=/work/leonorfe/apptainer_cache
export SINGULARITY_CACHEDIR="$APPTAINER_CACHEDIR"        # legacy var, still useful
export NXF_SINGULARITY_CACHEDIR="$APPTAINER_CACHEDIR"    # Nextflow-specific

mkdir -p "$APPTAINER_CACHEDIR"



# Keep Nextflow’s own JVM modest too
export NXF_OPTS="${NXF_OPTS:-} -Xms512m -Xmx3g"

# ---- Args ----
# 1) path to sample sheet CSV
# 2) output dir
# 3) work dir (temp files)
if [[ $# -lt 3 ]]; then
  echo "Usage: $0 <sample_sheet.csv> <outdir> <workdir>"
  exit 2
fi

INPUT="$1"
OUTDIR="$2"
WORKDIR="$3"

mkdir -p "/work/${USER}/job_logs" "$OUTDIR" "$WORKDIR"

# ---- nf-core/mag run ----
nextflow run nf-core/mag -r dev -profile singularity \
  -c /gpfs1/data/mie/people/joao/software/nf_core_config_v1.config \
  --input "$INPUT" \
  --gtdb_db /gpfs1/data/db/gtdb/226.0-data \
  --checkm_db /data/mie/shared/dbs/checkm-db/2015_01 \
  --genomad_db /gpfs1/data/db/genomad/v1.7 \
  --metaeuk_mmseqs_db UniRef90 \
  --run_checkm true \
  --outdir "$OUTDIR" \
  -work-dir "$WORKDIR" \
  --skip_fastqc false \
  --skip_multiqc false \
  --subsample_reads 30 \
  --max_cpus 15 --skip_metaeuk true
