#!/usr/bin/env bash

program_dir() {
 local p l
 if [ "${0:0:1}" = "/" ]
 then
   p=$0
 else
   p=$PWD/$0
 fi
 if [ -L "$p" ]
 then
   l=$(find $p -printf '%l')
   if [ "${l:0:1}" = "/" ]
   then
     p=$l
   else
     p=$(dirname $p)/$l
   fi
 fi
 echo $(dirname $p)
} 

dir=$(program_dir)

if [ -e "$2" ]
then
	file="$2"
	range="$1"
		
	# define work directory
	wd="${file}_AlignToStructures"

	# prepare
	mkdir $wd
	stripit2 ${file} > $wd/input.col
	greppos ${range} $wd/input.col > $wd/region.col
	nogap $wd/region.col > $wd/region2.col
	col2fasta $wd/region2.col > $wd/region.fasta

	addpmaskpar ${file} > $wd/pm.col 
	greppos ${range} $wd/pm.col > $wd/pm_region.col
	col2cons2 $wd/pm_region.col > $wd/test.consensus 

	# run 
	java AlignToStructure $wd/region.fasta output $wd/test.consensus 
	cp .fold_out/output.out $wd/output.txt
	txt2col4 .fold_out/output.out > $wd/output.col

	sort_col $wd/output.col $wd/input.col > $wd/output2.col

	# separate output
	separate1 $wd/output2.col $wd/region.col ${range} > $wd/left.col
	separate2 $wd/output2.col $wd/region.col ${range} > $wd/right.col

	# reassemble alignment
	reassemble_a2s $wd/left.col $wd/right.col $wd/input.col ${range} > $wd/result.col

	stem_shade $wd/result.col > $wd/result2.col

	cat $wd/result2.col

else
	file="$1"
	range=" "
	
	# define work directory
	wd="${file}_AlignToStructures"

	# prepare
	mkdir $wd
	col2cons ${file} > $wd/test.consensus 
	stripit2 ${file} > $wd/input.col
	nogap $wd/input.col > $wd/input2.col
	col2fasta $wd/input2.col > $wd/input.fa
	export CLASSPATH=$CLASSPATH:$SARSE_HOME/programs/foldalignm:$SARSE_HOME/programs/foldalignm/src
	# run 
	java AlignToStructure $wd/input.fa output $wd/test.consensus 
	cp .fold_out/output.out $wd/output.txt
	txt2col4 $wd/output.txt > $wd/output.col

	# color
	#stem_colors $wd/result.col > $wd/result2.col

	cat $wd/output.col

fi


# cleaning
#rm -r .fold*

exit 0
