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

BASE="/BLUES/eric/ONT_WGBS/Allele_analysis"
OUT="${BASE}/summary_plots_analysis"

mkdir -p "$OUT"

command -v bedtools >/dev/null || {
    echo "ERROR: bedtools not found" >&2
    exit 1
}

# =====================================================
# Helper
# =====================================================

make_autosome_bed() {
    local POS="$1"
    local NEG="$2"
    local PREFIX="$3"
    local OUTPUT="${OUT}/${PREFIX}_autosome_only.bed"

    echo "[INFO] Processing $PREFIX"

    for FILE in "$POS" "$NEG"; do
        [[ -s "$FILE" ]] || {
            echo "ERROR: missing or empty input: $FILE" >&2
            exit 1
        }
    done

    cat "$POS" "$NEG" |
        awk '
        BEGIN {
            FS = OFS = "\t"
        }

        # Skip headers from both concatenated files
        $1 == "chr" {
            next
        }

        {
            gsub(/"/, "", $1)

            # Keep autosomes only
            if ($1 == "chrX" || $1 == "chrY")
                next

            # Require standard autosomes chr1-chr22
            if ($1 !~ /^chr([1-9]|1[0-9]|2[0-2])$/)
                next

            start = sprintf("%.0f", $2)
            end   = sprintf("%.0f", $3)

            if (start < end)
                print $1, start, end
        }
        ' |
        bedtools sort -i - |
        bedtools merge -i - \
        > "$OUTPUT"

    local REGIONS
    local TOTAL_BP

    REGIONS=$(awk 'END {print NR + 0}' "$OUTPUT")
    TOTAL_BP=$(awk '{sum += $3-$2} END {print sum + 0}' "$OUTPUT")

    echo "[DONE] $PREFIX"
    echo "       regions: $REGIONS"
    echo "       total bp: $TOTAL_BP"
    echo "       output: $OUTPUT"
}

# =====================================================
# PRIME: CpG >=5, mean coverage >=10 per hap
# =====================================================

make_autosome_bed \
    "${BASE}/window_delta_prime_d0.5_cpg5_meancov10/prime_windows_1000bp_delta_ge_0.5_cpg5_meancov10.tsv" \
    "${BASE}/window_delta_prime_d0.5_cpg5_meancov10/prime_windows_1000bp_delta_le_-0.5_cpg5_meancov10.tsv" \
    "Prime"

# =====================================================
# NAIVE: its own extreme windows, cov10
# =====================================================

make_autosome_bed \
    "${BASE}/window_delta_naive_d0.5_cpg5_meancov10/naive_windows_1000bp_delta_ge_0.5_cpg5_meancov10.tsv" \
    "${BASE}/window_delta_naive_d0.5_cpg5_meancov10/naive_windows_1000bp_delta_le_-0.5_cpg5_meancov10.tsv" \
    "Naive"

# =====================================================
# TSC: its own extreme windows, cov10
# =====================================================

make_autosome_bed \
    "${BASE}/window_delta_TSC_d0.5_cpg5_meancov10/TSC_windows_1000bp_delta_ge_0.5_cpg5_meancov10.tsv" \
    "${BASE}/window_delta_TSC_d0.5_cpg5_meancov10/TSC_windows_1000bp_delta_le_-0.5_cpg5_meancov10.tsv" \
    "TSC"

echo
echo "[ALL DONE]"