#!/usr/bin/perl -s
use strict;
use IO::File;
use GenePropAxes;
use UserScriptParams;

###############################################################################
#
sub setup_params {
    my($key, $default, $require, $explain, $example);

    my($param) = UserScriptParams->new();

    #
    $param->set_description("Get aa sequences for cluster");

    #
    $key     = "TABID";
    $default = "";
    $require = "T"; # "T"rue or else(='optional').
    $explain = "Cluster table ID";
    $example = "tabid";
    $param->add_param($key, $default, $require, $explain, $example);

    #
    $key     = "CLUSTID";
    $default = "";
    $require = "T"; # "T"rue or else(='optional').
    $explain = "Cluster ID";
    $example = "clustid";
    $param->add_param($key, $default, $require, $explain, $example);

    return $param;
}

###############################################################################
#
sub sequence {
    my($tabid) = shift;
    my($clustid) = shift;

    #
    my($align_name) = 'sequence';
    my($path) = GenePropAxes::make_align_path($tabid, $align_name);

    #
    my($seqfile) = "$path/$clustid.fas";
    if (-e $seqfile && -s $seqfile) {
        my($cmd) = "$main::CMD_cat $seqfile";
        system("$cmd");
        return;
    }

    my($fh_seq) = IO::File->new(">$seqfile") || die("Can not open $seqfile($!)");

    #
    my(@clustent_list) = GenePropAxes::get_cluster_info($tabid, $clustid);
    foreach my$ref (@clustent_list) {
        my($spec)   = $ref->{'sp'};
        my($name)   = $ref->{'name'};
        my($dom)    = $ref->{'dom'};
        my($from1)  = $ref->{'from1'};
        my($to1)    = $ref->{'to1'};

        #
        my($seq) = GenePropAxes::get_gene_info($spec, $name, $GenePropAxes::GI_AASEQ);
        if ($dom) {
            $seq = substr($seq, $from1 - 1, $to1 - $from1 + 1);
        }
        $seq =~ s/(.{1,60})/$1\n/g;

        $fh_seq->print(">", join('#', $spec, $name, $dom, $from1, $to1), "\n");
        $fh_seq->print($seq);
    }
    $fh_seq->close();

    return;
}

###############################################################################
if ($0 eq __FILE__) {

    my($tabid) = 'default';
    if ($main::TABID) {
        $tabid = $main::TABID
    }

    #
    my(@clustid_list) = @ARGV;
    if ($main::ALL) {
        @clustid_list = GenePropAxes::get_clustid_list($tabid);
    }

    foreach my$clustid ($main::CLUSTID, @clustid_list) {
        next if (!$clustid);

        sequence($tabid, $clustid);
    }
}

###############################################################################
1;#
###############################################################################
