#!/usr/bin/env bash

ALIGNERS=~/Dropbox/Mile/SIMD_alignment/aligners
SSW=$ALIGNERS/ssw/src/ssw_test
SSEARCH=$ALIGNERS/fasta-36.3.6d/bin/ssearch36
SWIPE=$ALIGNERS/swipe/swipe
OPAL=../src/opal_aligner

FLOAT_REGEX='[0-9]\+\.[0-9]\+'

PROTEIN_DATA=~/Dropbox/Mile/SIMD_alignment/test_data/protein_data
UNIPROT_SPROT_FASTA=$PROTEIN_DATA/uniprot_sprot.fasta
# Database prepared using makeblastdb, it is needed for swipe.
UNIPROT_SPROT_BLASTDB=$PROTEIN_DATA/uniprot_sprot

#### Test proteins
# Gap open: 3
# Gap extension: 1
# Matrix: blosum 50
for QUERY_NAME in O74807 P19930 Q3ZAI3 P18080
do
    QUERY=$PROTEIN_DATA/$QUERY_NAME.fasta

    echo "Query: $QUERY_NAME"
    echo "---------------------"

    OPAL_TIME=`$OPAL -s $QUERY $UNIPROT_SPROT_FASTA | grep 'Cpu time of searching:' | grep -oe $FLOAT_REGEX`
    echo "OPAL: $OPAL_TIME"

    SWIPE_TIME=`$SWIPE -a 1 -p 1 -G 3 -E 1 -M BLOSUM50 -b 0 -i $QUERY -d $UNIPROT_SPROT_BLASTDB \
        | grep 'Elapsed:' | grep -oe $FLOAT_REGEX`
    echo "SWIPE: $SWIPE_TIME"

    SSEARCH_TIME=`$SSEARCH -d 0 -T 1 -p -f -3 -g -1 -s BL50 $QUERY $UNIPROT_SPROT_FASTA \
        | grep 'Total Scan time:' | grep -oe $FLOAT_REGEX | head -1`
    echo "SSEARCH: $SSEARCH_TIME"

    SSW_TIME=`$SSW -p $UNIPROT_SPROT_FASTA $QUERY 2>&1 >/dev/null | grep -oe $FLOAT_REGEX`
    echo "SSW: $SSW_TIME"
done
