#!/usr/bin/perl -w
# Script to run BLASTN on a FASTA files containing split contigs, running 
# create-subfrags if needed

$blastn="wu-blastn";
$parameters="-warnings E=1e-4 E2=1e-4 -hspmax=500 -compat1.4";
$db="gb";

(@ARGV>0) || die ("blast-contigs [-db=] fasta-file\n");
$flag=substr($ARGV[0],0,1);
if ($flag eq '-') {
  $arg=shift(@ARGV);
  if (index($arg,"-db=")>-1) {
    ($a,$db)=split("=",$arg);
  }
}
$fasta=$ARGV[0];
($fasta ne "") || die ("blast-contigs [-db=] fasta-file\n");
$name=filetolocus($fasta)."dir";
if (!-e("$name")) {  
  system("create-subfrags $name $fasta");
}

opendir(DIR,$name) || die ("$name is not found. Perhaps create-subfrags isn't on your path?\n");
@files=readdir(DIR);
closedir(DIR);

shift(@files);shift(@files);
foreach $file (@files) 
{
  $f=$name."/".$file;
  $fq=quotemeta($f);
  $n="$blastn $db $fq $parameters";
  @output = `$n`;
  foreach $line (@output)
  {
      print $line;
  }
  unlink $f;
}
rmdir($name);

sub filetolocus { 
  my ($file)=@_;
  my($locus,@strings);
  if (index($file,"/")) {
    @strings=split('/',$file);
    $locus=$strings[$#strings]; # locus is last part of filename
  }
  else {$locus=$file;}
  if (index($locus,".")) {
    @strings=split('[.]',$locus);
    $locus=$strings[0]; # locus is first part of filename
  }
  return $locus;
}

