#!/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}_FoldalignM_region"

	# prepare
	mkdir $wd
	stripit2 ${file} > $wd/input.col
	export CLASSPATH=$CLASSPATH:$SARSE_HOME/programs/foldalignm:$SARSE_HOME/programs/foldalignm/src
	
	# get region
	greppos ${range} $wd/input.col > $wd/region.col
	nogap $wd/region.col > $wd/region2.col
	col2fasta $wd/region2.col > $wd/region.fasta

	# run FoldalignM -Xmx1000m 
	FoldalignM_Foldalign.pl -f $wd/region.fasta -o output 
	txt2col -m .fold_out/output.txt > $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_fa $wd/left.col $wd/right.col $wd/input.col ${range} > $wd/result.col

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

	cat $wd/result2.col

	# cleaning
	rm -r .fold*

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

	# prepare
	mkdir $wd
	stripit ${file} | nogap > $wd/input.col
	col2fasta $wd/input.col > $wd/alignment.fasta

	# run FoldalignM
	FoldalignM_Foldalign.pl -Xmx1000m -f $wd/region.fasta -o output 
	txt2col -m .fold_out/output.txt > $wd/output.col
	stem_colors $wd/output.col > $wd/result.col

	cat $wd/result.col 

	#cleaning
	rm -r .fold*
	rm $wd/alignment.fasta

fi

exit 0
