#!/usr/bin/env bash
set -euo pipefail

# ============================
# НАСТРОЙКИ (меняйте здесь)
# ============================
WORK_DIR="/storage2/sasha_yan/2025-May-BGI/PCR-product"

# Список сэмплов (имена файлов во входной папке RAW без суффиксов _1/_2 и расширения)
SAMPLES=(
  "CMV-PCR-Nla_3"
  "CMV-PCR-Nla_Kl_1_L1"
  "CMV-PCR-Nla_Kl_2_L1"
  "CMV-PCR-Nla_Kl_3dtransf_4"
  "ench3-PCR-Dpn_3"
  "ench3-PCR-Dpn_Kl_1"
  "ench3-PCR-Dpn_Kl_2"
  "ench3-PCR-Dpn_Kl_3dtransf_4_L1"
)

# Пути/имена папок (относительно WORK_DIR)
RAW_DIR="raw"                       # где лежат входные *.fq
OUT_BASE="Hi-C_stats_probes"        # базовая папка для результатов
FASTQ_SUBDIR="fastq"                # подпапка с fastq в папке сэмпла
LOG_DIR="cutadapt"                  # куда складывать логи cutadapt

# Имена/расширения файлов
RAW_R1_SUFFIX="_1.fq"               # входные файлы: <sample><RAW_R1_SUFFIX>
RAW_R2_SUFFIX="_2.fq"               # и <sample><RAW_R2_SUFFIX>
OUT_R1_SUFFIX="_R1.fastq"           # выходные файлы: <sample><OUT_R1_SUFFIX>
OUT_R2_SUFFIX="_R2.fastq"           # и <sample><OUT_R2_SUFFIX>
GZIP_OUTPUT=false                   # true -> добавить .gz и выводить сжатые fastq

# Параметры cutadapt
CUTADAPT_BIN="cutadapt"             # путь к cutadapt или просто имя команды
PAIR_FILTER="any"
MIN_LEN=30
CORES=0                             # 0 = не указывать (по умолчанию), иначе число потоков

# Адаптеры (R1 и R2). Добавляйте/убирайте строки по необходимости
ADAPTERS_R1=(
  "AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT"
  "AGATCGGAAGAGCACACGTCTGAACTCCAGTCACT"
)
ADAPTERS_R2=(
  "AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT"
  "AGATCGGAAGAGCACACGTCTGAACTCCAGTCACT"
)
# ============================
# КОНЕЦ НАСТРОЕК
# ============================

cd "$WORK_DIR"

# Создадим папку для логов
mkdir -p "$LOG_DIR"

for sample in "${SAMPLES[@]}"; do
  # Папки вывода
  outdir="${OUT_BASE}/${sample}/${FASTQ_SUBDIR}"
  mkdir -p "$outdir"

  # Входные файлы
  r1_in="${RAW_DIR}/${sample}${RAW_R1_SUFFIX}"
  r2_in="${RAW_DIR}/${sample}${RAW_R2_SUFFIX}"

  # Проверки существования входных файлов (чтобы отлавливать опечатки)
  if [[ ! -f "$r1_in" ]]; then
    echo "❌ Не найден файл: $r1_in" >&2
    exit 1
  fi
  if [[ ! -f "$r2_in" ]]; then
    echo "❌ Не найден файл: $r2_in" >&2
    exit 1
  fi

  # Выходные файлы
  r1_out="${outdir}/${sample}${OUT_R1_SUFFIX}"
  r2_out="${outdir}/${sample}${OUT_R2_SUFFIX}"
  if $GZIP_OUTPUT; then
    r1_out="${r1_out}.gz"
    r2_out="${r2_out}.gz"
  fi

  # Собираем аргументы для cutadapt
  args=()
  for a in "${ADAPTERS_R1[@]}"; do
    args+=( -a "$a" )
  done
  for a in "${ADAPTERS_R2[@]}"; do
    args+=( -A "$a" )
  done
  args+=( --pair-filter="$PAIR_FILTER" --minimum-length "$MIN_LEN" )
  if (( CORES > 0 )); then
    args+=( --cores "$CORES" )   # эквивалентно -j
  fi
  # Если хотим .gz напрямую, cutadapt сам поймёт по расширению

  echo "▶️  Обрабатываю: $sample"
  "$CUTADAPT_BIN" "${args[@]}" \
    -o "$r1_out" -p "$r2_out" \
    "$r1_in" "$r2_in" \
    >> "${LOG_DIR}/${sample}_cutadapt.log"

  echo "✅ Готово: $sample → $r1_out  /  $r2_out"
done

echo "🎉 Все сэмплы обработаны."
