#!/usr/bin/perl -w

# rodaRBSfinder.pl
# 
# Recebe como entrada um arquivo fasta de um contig
# e o arquivo de coordenadas gerado pelo glimmer3.
# 
# Roda o RBS Finder e armazena as informacoes no banco

use DBI;
use DBD::mysql;

use strict;

our $DB_HOST;
our $DB_USER;
our $DB_PASS;
require '../lib/config.pl';

my $DB_NAME = shift;
my $nomeMontagem = shift;

my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST",$DB_USER,$DB_PASS,{RaiseError => 1});

my $contigFasta = shift;
my $glimmerCoord = shift;

my $lastOrfIndex = shift;

my ($contigId) = ($contigFasta =~ /Contig(\d+)/);
my $RBSresults = "RBSresults.out";

system("rbs_finder.pl $contigFasta $glimmerCoord $RBSresults 20 >> /dev/null");

open(RBSRESULTS , "<$RBSresults");
my @lines = <RBSRESULTS>;

## DESCARTA 2 LINHAS DE CABECALHO
## MAIS UMA LINHA REFERENTE AO HEADER FASTA QUE VAI PARAR NO ARQUIVO .predict
for(my $i=0; $i<3; $i++){
	shift @lines;
}

my $i=0;
if ($lastOrfIndex > 0){
	$i = $lastOrfIndex + 1;
}

foreach (@lines){
	$i++;
	my ($id, $start, $stop, $pattern, $position, $codon, $shift, $oldCodon, $oldPosition) =
	   ($_ =~ /(\w+)\s+(\d+)\s+(\d+)\s+(.{3,5})\s+(\d+)\s+(\w{3})\s+(-?\d+)\s+(\w{3})\s+(\d+)/i);

	my $orfId = sprintf("%04d",$contigId).'.'.sprintf("%04d", $i);

	my $q = "INSERT INTO rbs VALUES (\'$nomeMontagem\', \'$orfId\', $start, $stop, \'$pattern\', $position, \'$codon\', $shift, \'$oldCodon\', $oldPosition)";
	$dbh->do($q);

}

# system("rm $RBSresults");
