#!/bin/bash
die () {
    echo >&2 "$@"
    exit 1
}

# PANTOPATH=/Users/nloira/projects/pathtastic/bin
# PANTOPATH=/genoma/homes/mobyle/softs/pantograph/pantograph/pantograph
THISDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PANTOPATH=$THISDIR/../pantograph


OUTLOG="out.log"
OUTMODEL="out.xml"

while [[ $# > 1 ]]
do
key="$1"
shift


case $key in
    -r|--rel)
    MORERELDIR="$1"
    shift
    ;;
    -i|--inparanoid)
    INPARANOID="$1"
    shift
    ;;
    -m|--omcl)
    OMCL="$1"
    shift
    ;;
    -s|--source)
    OMCLSOURCE="$1"
    shift
    ;;
    -t|--target)
    OMCLTARGET="$1"
    shift
    ;;
    -x|--template|--scaffold)
    TEMPLATE="$1"
    shift
    ;;
    -o|--out)
    OUTMODEL="$1"
    shift
    ;;    
    -l|--log)
    OUTLOG="$1"
    shift
    ;;
    -f|--force)
    FORCE="-f $1"
    shift
    ;;
    --default)
    DEFAULT=YES
    shift
    ;;
    *)
            # unknown option
    ;;
esac
done

echo Parameters: $INPARANOID $OMCL $OMCLSOURCE $OMCLTARGET $TEMPLATE $OUTMODEL $OUTLOG

# create temp dir
td=$(mktemp -d /tmp/pantograph.XXXXXX)
echo Using: $td

# does template exists?
[ -e "$TEMPLATE" ] || die "Template file does not exists: $TEMPLATE"

# does it include the initial xml tag?
line=$(head -n 1 $TEMPLATE)
if [[ $line != \<\?xml* ]]; then
	# echo "error primera linea" $line
	NEWTEMPLATE=$td/newtemplate.xml
	echo '<?xml version="1.0" encoding="UTF-8"?>' > $NEWTEMPLATE
	cat $TEMPLATE >> $NEWTEMPLATE
	sed -i.bak "s/xmlns:=/xmlns=/g" $NEWTEMPLATE
	TEMPLATE=$NEWTEMPLATE
fi

# DEBUG
#echo "#####################"
#echo "Using this template:"
#cat $TEMPLATE
#echo "#####################"


# OrthoMCL

if [[ $OMCL != "" && $OMCL != "None" ]]; then
	[ -e "$OMCL" ] || die "OrthoMCL file does not exists: $OMCL"
	[ -n "$OMCLSOURCE" ] || die "OrthoMCL source not defined"
	[ -n "$OMCLTARGET" ] || die "OrthoMCL target not defined"
	echo Parsing orthomcl: $OMCL $OMCLSOURCE $OMCLTARGET
	$PANTOPATH/ptg_omcl2rel.py -s $OMCLSOURCE -t $OMCLTARGET $OMCL > $td/omcl.rel
	REL=1
fi

# Inparanoid

if [[ $INPARANOID != "" && $INPARANOID != "None" ]]; then
	[ -e "$INPARANOID" ] || die "Inparanoid file does not exists: $INPARANOID"
	echo Parsing inparanoid: $INPARANOID
	$PANTOPATH/ptg_inparanoid2rel.py $INPARANOID > $td/inp.rel
	REL=1
fi

# User provided rels


if [[ $MORERELDIR != "" && $MORERELDIR != "None" ]]; then
    [ -d "$MORERELDIR" ] || die "User defined rel directory doesn't exists: $MORERELDIR"
    echo Importing .rel files from: $MORERELDIR
    cp $MORERELDIR/*.rel $td
    REL=1
fi


# Now project
# (we already checked for the existence of the scaffold model)

[ -n "$REL" ] || die "No .rel provided (please use Inparanoid or OrthoMCL)"

echo $PANTOPATH/projector.py -o $OUTMODEL -l $OUTLOG $TEMPLATE $td/*.rel
$PANTOPATH/ptg_projector.py $FORCE -o $OUTMODEL -l $OUTLOG $TEMPLATE $td/*.rel

# cleaning
# rm -rf $td
