#!/usr/bin/perl -w

# separaFastaGenoma.pl
# 
# Recebe como entrada um arquivo fasta contendo todos os contigs do genoma.
# Separa os contigs e cria, para cada um, 2 arquivos fasta:
# 	- sequencia em nucleotideos;
# 	- sequencia em aminoacidos.
# Joga para o banco de dados informacoes referentes a:
# 	- contig id;
# 	- tamanho.
# 
# Tambem recebe como parametro o diretorio onde serao
# gravados os arquivos, nas subpastas n/ e p/


use Bio::Seq;
use Bio::SeqIO;

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 $genomaFasta = shift;
my $outDir = shift;

if (opendir(my $dh, $outDir)){
	close $dh;
}else{
	mkdir $outDir;
}

mkdir "$outDir/n";
mkdir "$outDir/p";

my $seqFASTA = Bio::SeqIO->new('-file'   => "<$genomaFasta",
			       '-format' => 'FASTA');

my $i=1;
while (my $contig = $seqFASTA->next_seq()){
	my $contigOutFasta = 'Contig'.$i.'.fas';
	my $contigOut_nt = Bio::SeqIO->new('-file'   => ">$outDir/n/$contigOutFasta",
			       		'-format' => 'FASTA');

	my $contigOut_aa = Bio::SeqIO->new('-file'   => ">$outDir/p/$contigOutFasta",
			       		'-format' => 'FASTA');

	print "Contig$i: length=",$contig->length,"<BR>";
	$contig->display_id("Contig$i.n");
	$contigOut_nt->write_seq($contig);

	$contig->display_id("Contig$i.p");
	$contigOut_aa->write_seq($contig->translate);

	insereBD($dbh, $nomeMontagem, $i, $contig->length);

	$i++;
}

$dbh->disconnect;

#################################################

sub insereBD{
	my ($dbh, $nomeMontagem, $id, $tam) = @_;

	my $q = "INSERT INTO contig VALUES (\'$nomeMontagem\', $id, $tam)";

	$dbh->do($q);
}
	