#!/usr/bin/env bash
# Module 3: Quality Control + Read Trimming Pipeline
# Usage: bash qc_pipeline.sh <sample_name>
#   e.g. bash qc_pipeline.sh SRR7890001

set -euo pipefail

SAMPLE="${1:-SRR7890001}"
RAW_DIR="data/raw"
QC_DIR="results/${SAMPLE}/qc"
TRIM_DIR="results/${SAMPLE}/trimmed"
THREADS=4

mkdir -p "${QC_DIR}" "${TRIM_DIR}"

echo "=== QC Pipeline: ${SAMPLE} ==="

# Step 1: Pre-trim FastQC
echo "[1/4] Running FastQC on raw reads..."
fastqc \
  "${RAW_DIR}/${SAMPLE}_R1.fastq.gz" \
  "${RAW_DIR}/${SAMPLE}_R2.fastq.gz" \
  -o "${QC_DIR}" \
  --threads "${THREADS}" \
  -q

# Step 2: Trimmomatic
echo "[2/4] Trimming adapters with Trimmomatic..."
trimmomatic PE \
  -threads "${THREADS}" \
  "${RAW_DIR}/${SAMPLE}_R1.fastq.gz" \
  "${RAW_DIR}/${SAMPLE}_R2.fastq.gz" \
  "${TRIM_DIR}/${SAMPLE}_R1_paired.fastq.gz" \
  "${TRIM_DIR}/${SAMPLE}_R1_unpaired.fastq.gz" \
  "${TRIM_DIR}/${SAMPLE}_R2_paired.fastq.gz" \
  "${TRIM_DIR}/${SAMPLE}_R2_unpaired.fastq.gz" \
  ILLUMINACLIP:"${CONDA_PREFIX}/share/trimmomatic/adapters/TruSeq3-PE.fa":2:30:10:2:keepBothReads \
  LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36 \
  2>&1 | tee "${QC_DIR}/${SAMPLE}_trimmomatic.log"

# Step 3: Post-trim FastQC
echo "[3/4] Running FastQC on trimmed reads..."
fastqc \
  "${TRIM_DIR}/${SAMPLE}_R1_paired.fastq.gz" \
  "${TRIM_DIR}/${SAMPLE}_R2_paired.fastq.gz" \
  -o "${QC_DIR}" \
  --threads "${THREADS}" \
  -q

# Step 4: MultiQC
echo "[4/4] Aggregating QC reports with MultiQC..."
multiqc "${QC_DIR}" -o "${QC_DIR}/multiqc" --quiet

echo ""
echo "Done! Open results/${SAMPLE}/qc/multiqc/multiqc_report.html in a browser."
