#!/usr/bin/env perl

# File: getStsId
# Author: Terry Furey
# Date: 10/2001
# Description:  Translates dbSTS ids into STS ids

# $Id: getStsId,v 1.2 2006/09/09 22:13:06 hiram Exp $

use strict;
use warnings;

# Usage message
if ($#ARGV < 1) {
  print STDERR "USAGE: getStsId [-mouse -rat] <stsInfo.bed> <file>\n";
  exit(1);
}

# Read parameters
my $mouse = 0;
my $rat = 0;
while ($#ARGV > 1) {
  my $param = shift(@ARGV);
  if ($param eq "-mouse") {
    $mouse = 1;
  } elsif ($param eq "-rat") {
    $rat = 1;
  } else {
    print STDERR "$param is not a valid parameter\n";
  }
}
my $info = shift(@ARGV);
open(INFO, "<$info") || die("Can not open $info: $!");
my $file = shift(@ARGV);
open(FILE, "<$file") || die("Can not open $file: $!");

my %id;

# Read in info file
print STDERR "Reading $info\n";
while (my $line = <INFO>) {
  chomp($line);
  my @fields = split("\t",$line);
  if ($mouse) {
    my $id = $fields[3];
    my $probe = $fields[2];
    $id =~ s/MGI://;
    $probe =~ s/MGI://;
    $id{$probe} = $id;
  } elsif ($rat) {
    my $id = $fields[0];
    $id{$id} = $fields[0];
  } else {
    my $id = $fields[0];
    my $dbsts = $fields[8];
    $id{$dbsts} = $id;
  }
}
close(INFO);

# Translate other file
print STDERR "Reading $file\n";
while (my $line = <FILE>) {
  chomp($line);
  my ($chr, $start, $end, $id, $cov, $pctid, $acc) = split("\t",$line);
  my $oid = "";
  if ($mouse) {
    $oid = $id;
  } elsif ($rat) {
    ($oid, my $name) = split("_",$id);
  } else {
    (my $db, $oid) = split("_",$id);
  }
  if ($id{$oid}) {
    print "$chr\t$start\t$end\t$id{$oid}\t$cov\t$pctid\t$acc\n";
  } else {
    print STDERR "No id for $id\n";
  }
}
close(FILE);
