#!/bin/bash
set -euo pipefail

UNION="/BRC/yan/heart/ATAC_heart_openbed/counts/snATAC_CM_peak.bed"
INDIR="/BRC/yan/heart/snACAT_CM"
OUTDIR="/BRC/yan/heart/snACAT_CM/counts"
mkdir -p ${OUTDIR}

# Step 1: count reads per peak per sample
for bed in ${INDIR}/*_CM_bl_removed_case.open.bed; do
    sample=$(basename ${bed} _CM_bl_removed_case.open.bed)
    out=${OUTDIR}/counts_${sample}.bed
    echo "[$(date)] ${sample}"
    bedtools coverage -a ${UNION} -b ${bed} -counts > ${out}
    echo "  -> $(wc -l < ${out}) lines  ->  ${out}"
done

# Step 2: merge into count matrix with header
echo "[$(date)] Merging into count matrix..."

header="chr\tstart\tend"
for f in ${OUTDIR}/counts_*.bed; do
    sample=$(basename ${f} .bed | sed 's/^counts_//')
    header="${header}\t${sample}"
done

{ echo -e "${header}";
  paste ${OUTDIR}/counts_*.bed \
    | awk 'BEGIN{OFS="\t"} {
        printf $1"\t"$2"\t"$3;
        for(i=4; i<=NF; i+=4) printf "\t"$i;
        print ""
    }';
} > ${OUTDIR}/count_matrix_snACAT_CM.txt

echo "  -> $(wc -l < ${OUTDIR}/count_matrix_snACAT_CM.txt) lines (incl. header)  ->  ${OUTDIR}/count_matrix_snACAT_CM.txt"
echo "[$(date)] Done."
