#!/bin/bash
#
# quick wrapper around the steps required to union (sum)
# multiple bigWig files together using bwtools

DRYRUN=${DRYRUN:-"0"};

HG19CHROMSIZES=${HG19CHROMSIZES:-"/ddn/gs1/shared/dirib/reference_genomes/hg19/hg19nohaplo.chromSizes.txt"};
MM10CHROMSIZES=${MM10CHROMSIZES:-"/ddn/gs1/shared/dirib/reference_genomes/mm10/mm10assembly.chromSizes"};

GENOME=${GENOME:-"mm10"};
if [ "mm10" == "${GENOME}" ]; then
   CHROMSIZES="${MM10CHROMSIZES}";
elif [ "hg19" == "${GENOME}" ]; then
   CHROMSIZES="${HG19CHROMSIZES}";
fi;

function usage {
   echo -e "${FCYAN}${BOLD}union_bigwig_bwtools.sh [output.bw] [bigWig files]${RESET}";
   echo -e "${FCYAN}Union multiple bigWig files using the sum of each coverage.${RESET}";
   echo -e "${FCYAN}Use environmental variables to set options:${RESET}";
   echo -e "${FCYAN}${BOLD}GENOME${RESET}${FCYAN} - 'mm10' (default) or 'hg19', used to define chromSizes.${RESET}";
   echo -e "${FCYAN}${BOLD}CHROMSIZES${RESET}${FCYAN} - path to chromSizes file, not needed if GENOME is defined.${RESET}";
   echo -e "${FCYAN}Example:${RESET}";
   echo -e "${FYELLOW}GENOME=mm10 ${FCYAN}union_bigwig_bwtools.sh ${FMAGENTA}unioned_bigwigs.bw ${FBLUE}bigwig_1.bw ${BOLD}bigwig_2.bw${RESET}";
}

if [ "." == ".${CHROMSIZES}" ]; then
   usage;
   exit;
fi;

## Get arguments
ARGS=($@);
LENGTH=${#ARGS[@]};
#echo -e "${FCYAN}LENGTH:${BOLD}${LENGTH}${RESET}";

if [ ${LENGTH} -lt 2 ]; then
   usage;
   exit;
fi;

# Remove the first entry
BWOUT=${ARGS[0]};
WIGOUT=${BWOUT/.bw/.wig};
WIGOUT=${WIGOUT/.bigWig/.wig};
WIGOUT=${WIGOUT/.bigwig/.wig};
BGOUT=${WIGOUT/.wig/.bg};
unset ARGS[0];

#LAST_PART=${ARGS};
echo -e "${FCYAN}BWOUT:${BOLD}${BWOUT}${RESET}";
echo -e "${FCYAN}WIGOUT:${BOLD}${WIGOUT}${RESET}";
#echo -e "${FCYAN}LAST_PART:${BOLD}${LAST_PART}${RESET}";
echo -e "${FCYAN}ARGS:${BOLD}${ARGS[*]}${RESET}";

## bwtool paste -skip-NA -wigtype=fix ../NS50211CA1CB492_1.sickle.merged.cutadapt.STAR_mm10.neg.bw ../NS50217CA1CB502_1.sickle.merged.cutadapt.STAR_mm10.neg.bw ../NS50218CA1CB496_1.sickle.merged.cutadapt.STAR_mm10.neg.bw
#CMD="bwtool paste -skip-NA -wigtype=fix ${ARGS[*]} > ${WIGOUT}";
#CMDOLD="bwtool paste -skip-NA -wigtype=var ${ARGS[*]} | python ./bwtool_paste_sum.py > ${WIGOUT}";

CMD="bigWigMerge ${ARGS[*]} ${BGOUT}";
if [[ ( -f "${BWOUT}" || -f "${BGOUT}" ) ]]; then
   echo "Skipping WIG creation since output file exists.";
else
   echo -e "${FYELLOW}${CMD}${RESET}";
   if [ ! "1" == "${DRYRUN}" ]; then
      echo "Running";
#      ${CMD};
#      bwtool paste -skip-NA -wigtype=var ${ARGS[*]} | python ./bwtool_paste_sum.py > ${WIGOUT}
      bigWigMerge -threshold=-10000000 ${ARGS[*]} ${BGOUT};
   else
      echo "Skipping due to DRYRUN=1";
   fi;
fi;

#CMD2="wigToBigWig ${WIGOUT} ${CHROMSIZES} ${BWOUT}";
CMD2="bedGraphToBigWig ${BGOUT} ${CHROMSIZES} ${BWOUT}";
if [[ ( -f "${BWOUT}" ) ]]; then
   echo -e "Skipping bigWig creation since output file exists:${BOLD}${BWOUT}${RESET}";
else
   echo -e "${FYELLOW}${CMD2}${RESET}";
   if [ ! "1" == "${DRYRUN}" ]; then
      echo "Running";
      ${CMD2};
#      rm ${WIGOUT};
   else
      echo "Skipping due to DRYRUN=1";
   fi;
fi;
