#!/bin/bash

# ================================
# User-defined paths
# ================================
input_file="motif_list.txt"

# temporary directory for HOMER cached files
TEMP_DIR="/home/yan/TaRGET_II/Li_adt/LESS/temp_folder"
mkdir -p "$TEMP_DIR"

echo "Using TEMP_DIR = $TEMP_DIR"
echo "Processing candidate list: $input_file"
echo "============================================="


# ============================================================
# Step 1 & 2 (UPDATED): Loop through list + run findMotifsGenome.pl
# ============================================================
cat "$input_file" | while read file motif gene
do
    echo ""
    echo ">>> Processing: FILE=${file}  MOTIF=${motif}  GENE=${gene}"

    out="${file}_${gene}.txt"
    peak="${file}_${gene}_peak.txt"

    motif_file="${file}/homerResults/${motif}.motif"

    # Check if motif file exists
    if [[ ! -f "$motif_file" ]]; then
        echo "WARNING: Motif file not found: $motif_file"
        echo "Skipping..."
        continue
    fi

    # run HOMER motif search with -preparsedDir
    findMotifsGenome.pl "${file}.txt" mm10 "${file}" \
        -size given \
        -find "$motif_file" \
        -preparsedDir "$TEMP_DIR" \
        > "$out"

    echo "Generated HOMER output: $out"

    # ==================================================
    # Step 3: extract peak list
    # ==================================================
    cut -f1 "$out" | sed '1d' | sort -u > "$peak"
    echo "Generated peak list: $peak"


    # ==================================================
    # Step 4: convert peak list -> BED
    # format: chr start end chr_start_end
    # ==================================================
    awk -F"[_]" 'BEGIN{OFS="\t"} {print $1,$2,$3,$0}' \
        "$peak" \
        > "${file}_${gene}_peak.bed"

    echo "Generated BED: ${file}_${gene}_peak.bed"


    # ==================================================
    # Step 5: sort BED
    # ==================================================
    sort -k1,1 -k2,2n "${file}_${gene}_peak.bed" \
        > "${file}_${gene}_peak.sorted.bed"

    echo "Sorted BED: ${file}_${gene}_peak.sorted.bed"
    echo "---------------------------------------------"

done


# ==================================================
# Step 6: Move sorted BED files to new folder
# ==================================================
mkdir -p sorted_peaks
mv *_peak.sorted.bed sorted_peaks/
echo "Moved sorted BED files into sorted_peaks/"


# ==================================================
# Step 7: bedtools closest (FINAL STEP)
# ==================================================
TSS="gencode_mm10_gene_TSS_pc_lncRNA.sorted.bed"
PEAKDIR="sorted_peaks"
OUTDIR="nearest_TSS_1Mb_pc_lncRNA_mm10"

mkdir -p "$OUTDIR"

for PEAK in "$PEAKDIR"/*.bed; do
    BASENAME=$(basename "$PEAK" .bed)

    bedtools closest \
        -a "$PEAK" \
        -b "$TSS" \
        -D a \
        -k 1 \
        -sorted \
    | awk 'BEGIN{OFS="\t"} $NF!="." && ($NF<=1000000 && $NF>=-1000000)' \
        > "$OUTDIR/${BASENAME}_peak_gene_1Mb.txt"

    echo "Generated nearest-TSS file: $OUTDIR/${BASENAME}_peak_gene_1Mb.txt"
done

echo ""
echo "============================================="
echo "All steps completed successfully!"
echo "============================================="
