diff --git a/etc/run_fasta.sanger b/etc/run_fasta.sanger
index 9f7bc3e373f6196936a706fdd79e1fd26da5da66..d8b309e50a8abe19e868930ee363049b4eb7280d 100755
--- a/etc/run_fasta.sanger
+++ b/etc/run_fasta.sanger
@@ -6,7 +6,7 @@
 # to customise this script see the function called run_one_prog below
 
 
-RCS_HEADER="$Header: //tmp/pathsoft/artemis/etc/run_fasta.sanger,v 1.3 2005-09-14 11:03:58 tjc Exp $"
+RCS_HEADER="$Header: //tmp/pathsoft/artemis/etc/run_fasta.sanger,v 1.4 2005-09-16 19:14:44 tjc Exp $"
 
 PROG=`echo $RCS_HEADER | sed 's/.*run_\(.*\),v.*/\1/'`
 
@@ -74,7 +74,8 @@ run_one_prog () {
     seq_size=`infoseq "$INPUT_FILE" -length -only -auto | awk '{ sum += $1 } END { print sum }`
 
     FASTLIBS=/nfs/disk222/yeastpub/bio-soft/fasta/pubseqgbs export FASTLIBS
-    EXEC=/nfs/disk222/yeastpub/bio-soft/fasta/fasta33_t
+#   EXEC=/nfs/disk222/yeastpub/bio-soft/fasta/fasta33_t
+    EXEC=/nfs/disk222/yeastpub/bio-soft/fasta/fasta33
 
     echo "about to start $EXEC with input from $INPUT_FILE and output to" 1>&2
     echo "$OUTPUT_FILE using database $DATABASE" 1>&2
@@ -121,12 +122,9 @@ chomp $file;
 chomp $database;
 
 $ENV{'FASTLIBS'} = "/nfs/disk222/yeastpub/bio-soft/fasta/pubseqgbs_test";
-
-
-open(BSUB, "| bsub -q normal -o fasta_errors -n 1 -R \"select[blast && mem > 500] rusage[mem=500]\" -K") or die "could not open bsub pipe : $!";
 open(LIST_FILE,$file);
 
-$EXEC="/nfs/disk222/yeastpub/bio-soft/fasta/fasta33_t";
+$EXEC="/nfs/disk222/yeastpub/bio-soft/fasta/fasta33";
 
 while(my $inFile = <LIST_FILE>)
 {
@@ -154,18 +152,167 @@ while(my $inFile = <LIST_FILE>)
 
       if( -e $inFile_tmp )
       {
-        print BSUB "cd $inFile_tmp\n";
+        chdir "$inFile_tmp" || die "Cannot cd to $inFile_tmp: $!\n";
         $inFile = $2;
       }
     }
   }
 
-  print BSUB "$EXEC -B -S -q -b 100 -H $inFile $database ktup 2 > $inFile\.out\n";
-  print BSUB "gzip -9 $inFile\.out\n";
+  # find number of leading zero
+
+  if($inFile =~ m/^(.*)(\/fasta\/)([^\/]*)(0{4})(\d{1})/)
+  {
+    push(@jobs10, $inFile);
+  }
+  elsif($inFile =~ m/^(.*)(\/fasta\/)([^\/]*)(0{3})(\d{2})/)
+  {
+    push(@jobs100, $inFile);
+  }
+  elsif($inFile =~ m/^(.*)(\/fasta\/)([^\/]*)(0{2})(\d{3})/)
+  {
+    push(@jobs1000, $inFile);
+  }
+  elsif($inFile =~ m/^(.*)(\/fasta\/)([^\/]*)(0{1})(\d{4})/)
+  {
+    push(@jobs10000, $inFile);
+  }
+  else
+  {
+    push(@jobs100000, $inFile);
+  }
 }
-close BSUB or die "--Could not submit job : $!";
 close LIST_FILE;
 
+if(defined @jobs10)
+{
+  my( $num ) = sprintf( "%04d", 0);
+  submit($num, @jobs10);
+}
+
+if(defined @jobs100)
+{
+  my( $num ) = sprintf( "%03d", 0);
+  submit($num, @jobs100);
+}
+
+if(defined @jobs1000)
+{
+  my( $num ) = sprintf( "%02d", 0);
+  submit($num, @jobs1000);
+}
+
+if(defined @jobs10000)
+{
+  my( $num ) = sprintf( "%01d", 0);
+  submit($num, @jobs10000);
+}
+
+if(defined @jobs100000)
+{
+  submit("", @jobs100000);
+}
+
+for($count = 0; $count < @bsub_jobs; $count++)
+{
+  print "$count bsub -q longblastq -o /dev/null -e /dev/null -K -w \"ended($bsub_jobs[$count])\" -J \"$bsub_jobs[$count]\_fin\"\n";
+
+  open(BSUB, "| bsub -q longblastq -R \"select[mem > 1] rusage[mem=1]\" -o /dev/null -e /dev/null -w \"ended($bsub_jobs[$count])\" -K -J \"$bsub_jobs[$count]\_fin\"")  or die "could not open bsub pipe  : $!";
+  print BSUB "\"echo finished > /dev/null\" > /dev/null 2> /dev/null";
+  close BSUB; # or die "--Could not submit job : $!";
+} 
+ 
+
+sub submit
+{
+  my ($num, @jobs) = @_;
+   
+  my $prefix;
+  my @starts;
+  my @prefixes;
+
+  if($jobs[0] =~ m/^(.*)(\/fasta\/)([^\/]*)(\d{5})/)
+  {
+    $prefix = $1.$2.$3;
+    push(@starts, "$4");
+
+    if($prefix =~ /\+/)
+    {
+      $prefix =~ s/\+/\\+/;
+    }
+    push(@prefixes, $prefix);
+  }
+
+  
+  #different entries have different prefixes
+  for($count =0; $count < @jobs; $count++)
+  {
+    if($jobs[$count] !~ m/^$prefix(.*)/)
+    {
+      if($jobs[$count] =~ m/^(.*)(\/fasta\/)([^\/]*)(\d{5})/)
+      {
+        $prefix = $1.$2.$3;
+
+        push(@starts, "$4");
+
+         if($prefix =~ /\+/)
+         {
+           $prefix =~ s/\+/\\+/;
+         }
+
+        push(@prefixes, $prefix);
+      }
+    }
+  }
+
+  my $last;
+  if($jobs[@jobs-1] =~ m/^(.*)(\/fasta\/)([^\/]*)(\d{5})/)
+  {
+    $last = "$4";
+  }
+
+  for($count =0; $count < @prefixes; $count++)
+  {
+    $prefix = $prefixes[$count];
+    $start  = $starts[$count];
+
+    if($count == @prefixes-1)
+    {   
+      $end = $last;
+    }
+    else
+    {
+      $end = $starts[$count+1]-1;
+    }
+ 
+    bsub($prefix, $start, $end, $num);
+  }
+}
+
+
+# start job arrays
+sub bsub
+{
+  my ($prefix, $start, $end, $num) = @_;
+
+  my $name = $prefix;
+  if($prefix =~ m/(\/fasta\/)(.*)/)
+  {
+    $name = "$2";
+  }
+
+  push(@bsub_jobs, "$name\_fasta");
+
+  open(BSUB, "| bsub -q longblastq -o /dev/null -n 1 -R \"select[blast && mem > 500] rusage[mem=500]\" -J$name\_fasta\"[$start-$end]%16\"")  or die "could not open bsub pipe  : $!";
+  print BSUB "$EXEC -B -S -q -b 100 -H $prefix$num";
+  print BSUB "\${LSB_JOBINDEX} $database ktup 2 > $prefix$num";
+  print BSUB "\${LSB_JOBINDEX}\.out\n";
+
+  print BSUB "gzip -9f $prefix$num";
+  print BSUB "\${LSB_JOBINDEX}\.out\n";
+
+ close BSUB or die "--Could not submit job : $!";
+}
+
 '
 
 (echo "#!/bin/sh -"; echo "kill $$") > $PROG.kill