#! /usr/bin/env perl

use strict;
use warnings;
use File::Basename;
use File::Path;
use Cwd 'getcwd';

my $xl = $ARGV[0];
use Cwd 'abs_path';
$xl = abs_path($xl);

my $CWD=dirname(${0});
chdir $CWD;
$CWD=getcwd;
my $PWD=dirname($CWD);
my $ESROOT=$PWD;

my $xl_tmp = "/dev/shm/". basename($xl);

my $uniprot_id = $ESROOT . "/data/table/uniprot_id.tab";
my $sass = $ESROOT . "/local/bin/sass";

open(FD, $xl);
open(WD, ">$xl_tmp");
while( my $line = <FD> ){
  chomp($line);
  my @d = split(/\t/, $line);
  my $db = (split(/:/, $d[1]))[0];
  my $id = (split(/:/, $d[1]))[1];
  if( $db eq 'uniprot' ){
    if( $id =~ /_/ ){
      my $key = $id . "\t";
      my $up = `$sass $key $uniprot_id`;
      chomp($up);
      if( $up ){
        $id = (split(/\t/, $up))[1];
        printf WD "%s\t%s:%s\n", $d[0], $db, $id;
      }
    }else{
      printf WD "%s\n", $line;
    }
  }else{
    printf WD "%s\n", $line;
  }
}
close(FD);
system("mv $xl $xl.bk");
system("mv $xl_tmp $xl");
