use strict;
use SeedEnv;
use gjoseqlib;

@ARGV == 3 or die "Usage: hits-to-protein fasta-file hits-file genetic-code\n";

my $fasta_file = shift(@ARGV);
my $hit_file = shift(@ARGV);
my $gc = shift(@ARGV);

open(SEQS, "<", $fasta_file) or die "Cannot open $fasta_file: $!";

my %seq_data;
while (my($id, $def, $seq) = read_next_fasta_seq(\*SEQS))
{
    $seq_data{$id} = $seq;
}
close(SEQS);

open(HF, "<", $hit_file) or die "Cannot open $hit_file: $!\n";

my $code = SeedUtils::genetic_code($gc);

while (<HF>)
{
    chomp;
    my($id, $hits, $loc, $fn) = split(/\t/);

    my ($contig, $begin, $end, $strand) = parse_location($loc);

    $begin--;
    $end--;

    my $dna;
    if ($begin < $end)
    {
	$dna = substr($seq_data{$id}, $begin, $end - $begin + 1);
    }
    else
    {
	$dna = SeedUtils::rev_comp(substr($seq_data{$id}, $end, $begin - $end + 1));;
    }

    my $trans = SeedUtils::translate($dna, $code, 0);
    gjoseqlib::print_alignment_as_fasta([[$id, "$loc $fn", $trans]]);
}

exit 0;
