#!/usr/bin/env bash
# Submit per-exposure crowdsource as a SLURM array job per filter.
# F187N/F210M have 96 destreak exposures each (4 SW detectors * 24);
# F335M/F470N/F480M have 24 each (LW only).
set -euo pipefail
LOGDIR=/blue/adamginsburg/adamginsburg/logs/sickle_benchmark
mkdir -p "${LOGDIR}"
PY=/blue/adamginsburg/adamginsburg/miniconda3/envs/benchmark_tools/bin/python
SCRIPT=/orange/adamginsburg/jwst/sickle/benchmark/crowdsource/run_crowdsource_indivexp.py

declare -A SIZES=( [F187N]=96 [F210M]=96 [F335M]=24 [F470N]=24 [F480M]=24 )
for filt in F187N F210M F335M F470N F480M; do
    n=${SIZES[$filt]}
    last=$((n-1))
    # Patched preprocessing (NaN interp, DQ mask, maxstars=500_000) makes
    # crowdsource detect ~7x more sources and run ~45 min/task instead of
    # ~25 min. Bumped time allocation accordingly.
    jid=$(sbatch --parsable \
        --array=0-${last}%24 \
        --job-name=crowd-ie-${filt} \
        --output=${LOGDIR}/crowd_ie_${filt}_%A_%a.log \
        --account=astronomy-dept --qos=astronomy-dept-b \
        --ntasks=1 --nodes=1 --mem=24gb --time=08:00:00 \
        --wrap "${PY} ${SCRIPT} --filter ${filt} --index \${SLURM_ARRAY_TASK_ID}")
    echo "Submitted crowdsource indivexp ${filt}: ${jid} (array 0-${last})"
done
