#! /bin/sh

### ASDP PIPELINE ###
## Version: 0.0.1
## Licence: FIXME
## Description: script to generate automatically a manifest and multisampleprofile in a tsv format, then do outlier analyses for a single patient
## Usage: FIXME
## Output: FIXME
## Requirements: FIXME

## Author: anne-sophie.denomme-pichon@u-bourgogne.fr
## Creation Date: 20200215
## Last revision date: 20200215
## Known bugs: None

EHDN="/work/gad/shared/bin/expansionhunterdenovo/ExpansionHunterDenovo-v0.8.0-linux_x86_64/bin/ExpansionHunterDenovo-v0.8.0"
EHDN_OUTLIER="/work/gad/shared/bin/expansionhunterdenovo/ExpansionHunterDenovo-v0.8.0-linux_x86_64/scripts/outlier.py"
REFERENCE="/work/gad/shared/pipeline/hg19/index/hg19_essential.fa"
WORKDIR="/work/gad/shared/analyse/STR/pipeline"

# Log file path option
if [ -z "$LOGFILE" ]
then
    LOGFILE=ehdn_outlier.$(date +"%F_%H-%M-%S").log
fi

# Logging
exec 1>> "$LOGFILE" 2>&1
echo "$(date +"%F_%H-%M-%S"): START"

# Check if case is specified
if [ -z "$CASE" ]
then
    echo "Dijen is not specified"
    echo "$(date +"%F_%H-%M-%S"): END"
    touch ehdn_outlier.failed
    exit 1
fi

# Generate manifest for one patient with all samples (to write lines in the file)
cd "$WORKDIR"
for dijen in dijen*
do
    # Check if str_profile.json exists
    if [ -f "$WORKDIR/$dijen/ehdn/$dijen.str_profile.json" ]
    then
        if [ "x$dijen" = "x$CASE" ]
        then
        echo -e "$dijen\tcase\t$WORKDIR/$dijen/ehdn/$dijen.str_profile.json"
        else
        echo -e "$dijen\tcontrol\t$WORKDIR/$dijen/ehdn/$dijen.str_profile.json"
        fi
    fi
done > "$WORKDIR/$CASE/ehdn/$CASE.manifest.tsv"

ehdn_outlier_exitcode=$?

echo "ehdn_outlier exit code : $ehdn_outlier_exitcode"
if [ $ehdn_outlier_exitcode != 0 ]
then
    echo "$(date +"%F_%H-%M-%S"): END"
    touch ehdn_outlier.failed
    exit 1
fi

# Generate multisampleprofile for one patient with all samples
"$EHDN" merge \
    --reference "$REFERENCE" \
    --manifest "$WORKDIR/$CASE/ehdn/$CASE.manifest.tsv" \
    --output-prefix "$CASE/ehdn/$CASE"

ehdn_outlier_exitcode=$?

echo "ehdn_outlier exit code : $ehdn_outlier_exitcode"
if [ $ehdn_outlier_exitcode != 0 ]
then
    echo "$(date +"%F_%H-%M-%S"): END"
    touch ehdn_outlier.failed
    exit 1
fi

# Run locus-based comparison analysis
"$EHDN_OUTLIER" locus \
    --manifest "$WORKDIR/$CASE/ehdn/$CASE.manifest.tsv" \
    --multisample-profile "$WORKDIR/$CASE/ehdn/$CASE.multisample_profile.json" \
    --output "$WORKDIR/$CASE/ehdn/$CASE.outlier_locus.tsv"

ehdn_outlier_exitcode=$?

echo "ehdn_outlier exit code : $ehdn_outlier_exitcode"
if [ $ehdn_outlier_exitcode != 0 ]
then
    echo "$(date +"%F_%H-%M-%S"): END"
    touch ehdn_outlier.failed
    exit 1
fi


# Run motif_based comparison analysis
"$EHDN_OUTLIER" motif \
    --manifest "$WORKDIR/$CASE/ehdn/$CASE.manifest.tsv" \
    --multisample-profile "$WORKDIR/$CASE/ehdn/$CASE.multisample_profile.json" \
    --output "$WORKDIR/$CASE/ehdn/$CASE.outlier_motif.tsv"

ehdn_outlier_exitcode=$?

echo "ehdn_outlier exit code : $ehdn_outlier_exitcode"
if [ $ehdn_outlier_exitcode != 0 ]
then
    echo "$(date +"%F_%H-%M-%S"): END"
    touch ehdn_outlier.failed
    exit 1
fi

echo "$(date +"%F_%H-%M-%S"): END"