diff --git a/etc/run_blastp.sanger.linux b/etc/run_blastp.sanger.linux new file mode 100755 index 0000000000000000000000000000000000000000..6097f63e0abec8ed83add313ebd4fdb38f9994a8 --- /dev/null +++ b/etc/run_blastp.sanger.linux @@ -0,0 +1,420 @@ +#!/bin/sh - + +# this script will run a search program on a sequence input file or on each +# file in a file of filenames + +# to customise this script see the function called run_one_prog below + + +RCS_HEADER="$Header: //tmp/pathsoft/artemis/etc/run_blastp.sanger.linux,v 1.1 2008-01-24 10:48:38 tjc Exp $" + +PROG=`echo $RCS_HEADER | sed 's/.*run_\(.*\),v.*/\1/'` + + +if [ $# = 4 -a x$1 = x-onefile ] +then + shift + ONEFILE=t + DATABASE=$3 export DATABASE +else + if [ $# = 2 ] + then + DATABASE=$2 export DATABASE + else + echo usage: $0 -onefile input_file output_file database 1>&2 + echo or: $0 file_of_filenames database 1>&2 + exit 1 + fi +fi + + + +# expand any ~ or environment variables +EXPANDED_DATABASE=`echo "echo $DATABASE" | /bin/csh -f` + +### change this function to suit your site: + +run_one_prog () { + INPUT_FILE=$1 + OUTPUT_FILE=$2 + DATABASE=$3 + + + ### change these lines: + EXEC=blastall + + echo "about to start $EXEC with input from $INPUT_FILE and output to" + echo "$OUTPUT_FILE using database $DATABASE" + + + EXTRA_ARGS= + + HOSTNAME=`hostname` + REMOTE=N + + case $HOSTNAME in + deskpro*) + REMOTE=Y ;; + *) + esac + + if [ $REMOTE = "Y" ]; then + WDIR=`pwd` + export WDIR +# rsh babel "cd $WDIR; lsrun -R 'select[blast && mem > 500] rusage[r1m=1:mem=500]' -v \ +# blastwrap.pl $EXEC -d $DATABASE -i $INPUT_FILE -p blastp \ +# $EXTRA_ARGS >! $OUTPUT_FILE" + ssh babel "cd $WDIR; bsub -q longblastq -o $OUTPUT_FILE -e ${PROG}_errors.new -I flexi_blast.pl -p $DATABASE $INPUT_FILE $EXTRA_ARGS" + else + # add/change the flags to suit your site: +# lsrun -R 'select[blast && mem > 500] rusage[r1m=1:mem=500]' -v \ +# blastwrap.pl $EXEC -d $DATABASE -i $INPUT_FILE -p blastp \ +# $EXTRA_ARGS 2>&1 > $OUTPUT_FILE | +# tee ${PROG}_errors.new 1>&2 + bsub -q longblastq -o $OUTPUT_FILE -e ${PROG}_errors.new -I flexi_blast.pl -p $DATABASE $INPUT_FILE $EXTRA_ARGS + fi + + #### end of changes + + + # Artemis can read compressed files + gzip -9 $OUTPUT_FILE & + + if [ -s ${PROG}_errors.new ] + then + ( echo ERROR running $PROG: ; echo; + echo =================================================== + cat ${PROG}_errors.new ) >> $OUTPUT_FILE + cat ${PROG}_errors.new >> ${PROG}_errors + fi +} + +PERL_PROG_1=' + +local *BSUB; + +my $file = $ARGV[0]; +my $database = $ARGV[1]; +my $pwd = $ARGV[2]; +chomp $file; +chomp $database; + +open(BSUB, "| bsub -q normal -o fasta_errors -n 1 -R \"select[long && mem > 500] rusage[r1m=1:mem=500]\" -K") or die "could not open bsub pipe : $!"; +open(LIST_FILE,$file); + +$EXEC="blastall"; + +while(my $inFile = <LIST_FILE>) +{ + chomp($inFile); + + if($inFile =~ m/^($pwd)(.*)/) + { + my $inFile_tmp = $2; + while($inFile_tmp =~ m/^(\/)(.*)/) + { + $inFile_tmp = $2; + } + + if( -e $inFile_tmp ) + { + $inFile = $inFile_tmp; + } + } + + if($inFile =~ m/^(\S{100})/) + { + if($inFile =~ m/^(\S{90,})(blastp\/\S+)/) + { + my $inFile_tmp = $1; + + if( -e $inFile_tmp ) + { + print BSUB "cd $inFile_tmp\n"; + $inFile = $2; + } + } + } + + print BSUB "flexi_blast.pl -p $database $inFile $database ktup 2 > $inFile\.out\n"; + print BSUB "gzip -9 $inFile\.out\n"; +} +close BSUB or die "--Could not submit job : $!"; +close LIST_FILE; +' + + + +PERL_PROG=' + +local *BSUB; + +my $file = $ARGV[0]; +my $database = $ARGV[1]; +my $pwd = $ARGV[2]; +chomp $file; +chomp $database; + +open(LIST_FILE,$file); + +$NEW_WDIR="."; +$NUM_JOBS=0; + +while(my $inFile = <LIST_FILE>) +{ + $NUM_JOBS++; + chomp($inFile); + + if($inFile =~ m/^($pwd)(.*)/) + { + my $inFile_tmp = $2; + while($inFile_tmp =~ m/^(\/)(.*)/) + { + $inFile_tmp = $2; + } + + if( -e $inFile_tmp ) + { + $inFile = $inFile_tmp; + } + } + + + if($inFile =~ m/^(\S{100})/) + { + if($inFile =~ m/^(\S{90,})(blastp\/\S+)/) + { + my $inFile_tmp = $1; + + if( -e $inFile_tmp ) + { + $NEW_WDIR=$inFile_tmp; + $inFile = $2; + } + } + } + # find number of leading zero + + if($inFile =~ m/^(.*)(blastp\/)([^\/]*)(0{4})(\d{1})$/) + { + push(@jobs10, $inFile); + } + elsif($inFile =~ m/^(.*)(blastp\/)([^\/]*)(0{3})(\d{2})$/) + { + push(@jobs100, $inFile); + } + elsif($inFile =~ m/^(.*)(blastp\/)([^\/]*)(0{2})(\d{3})$/) + { + push(@jobs1000, $inFile); + } + elsif($inFile =~ m/^(.*)(blastp\/)([^\/]*)(0{1})(\d{4})$/) + { + push(@jobs10000, $inFile); + } + else + { + push(@jobs100000, $inFile); + } +} +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++) +{ + open(BSUB, "| bsub -q normal -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/^(.*)(\/blastp\/)([^\/]*)(\d{5})/) + { + $prefix = $1.$2.$3; + push(@starts, "$4"); + } + elsif($jobs[0] =~ m/^(blastp\/)([^\/]*)(\d{5})/) + { + $prefix = $1.$2; + push(@starts, "$3"); + } + + # escape characters + if($prefix =~ /(\+|\?|\*|\[|\])/) + { + $prefix =~ s/\+/\\+/; + $prefix =~ s/\?/\\?/; + $prefix =~ s/\*/\\*/; + $prefix =~ s/\[/\\[/; + $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/^(.*)(blastp\/)([^\/]*)(\d{5})/) + { + $prefix = $1.$2.$3; + + push(@starts, "$4"); + + if($prefix =~ /(\+|\?|\*|\[|\])/) + { + $prefix =~ s/\+/\\+/; + $prefix =~ s/\?/\\?/; + $prefix =~ s/\*/\\*/; + $prefix =~ s/\[/\\[/; + $prefix =~ s/\]/\\]/; + } + + push(@prefixes, $prefix); + } + } + } + + for($count =0; $count < @prefixes; $count++) + { + $prefix = $prefixes[$count]; + $start = $starts[$count]; + + # build the index description that need to be run + $index="$start-"; + $end="$start"; + for($j =0; $j < @jobs; $j++) + { + if($jobs[$j] =~ m/^$prefix(.*)/) + { + if($jobs[$j] =~ m/^(.*)(blastp\/)([^\/]*)(\d{5})/) + { + if($j == @jobs-1) + { + $index = "$index$4"; + } + elsif($end+1 >= $4) + { + $end = "$4"; + } + else + { + $index = "$index$end,$4-" + } + } + } + } + + if($index =~ m/(\-)$/) + { + $index = "$index$end"; + } + + print "$prefix, $index, $num"; + bsub($prefix, $index, $num); + } +} + + +# start job arrays +sub bsub +{ + my ($prefix, $index, $num) = @_; + + my $name = $prefix; + + if($prefix =~ m/(\/blastp\/)(.*)/) + { + $name = "$2"; + } + + my $random = int( rand( 999+1 ) ); + + push(@bsub_jobs, "$name$random\_blastp"); + + my $QUEUE="long"; + if($NUM_JOBS <= 6) + { + $QUEUE="normal"; + } + + print "flexi_blast.pl -p $database $prefix$num\n"; + + open(BSUB, "| bsub -q $QUEUE -o /dev/null -n 1 -R \"select[mem > 500] rusage[mem=500]\" -J$name$random\_blastp\"[$index]%16\"") or die "could not open bsub pipe : $!"; + print BSUB "cd $NEW_WDIR\n"; + print BSUB "flexi_blast.pl -p $database $prefix$num"; + print BSUB "\${LSB_JOBINDEX} > $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 + +chmod a+x $PROG.kill + +HOSTNAME=`hostname` +REMOTE=N + +case $HOSTNAME in + deskpro*) + REMOTE=Y ;; + *) +esac + +if [ x$ONEFILE = x ] +then + if [ $REMOTE = "Y" ]; then + WDIR=`pwd` + export WDIR + CMD=`echo $PERL_PROG_1` + ssh babel "cd $WDIR; perl -w -e '$CMD' \"$1\" \"$EXPANDED_DATABASE\" \"$PWD\"" + else + perl -w -e "$PERL_PROG" "$1" "$EXPANDED_DATABASE" "$PWD" + fi +else + run_one_prog $1 $2 $EXPANDED_DATABASE +fi + +exit 0 diff --git a/etc/run_fasta.sanger.linux b/etc/run_fasta.sanger.linux new file mode 100755 index 0000000000000000000000000000000000000000..52b9a923c767956014bfe0bd8198e70bd439e285 --- /dev/null +++ b/etc/run_fasta.sanger.linux @@ -0,0 +1,447 @@ +#!/bin/sh - + +# this script will run a search program on a sequence input file or on each +# file in a file of filenames + +# to customise this script see the function called run_one_prog below + + +RCS_HEADER="$Header: //tmp/pathsoft/artemis/etc/run_fasta.sanger.linux,v 1.1 2008-01-24 10:48:29 tjc Exp $" + +PROG=`echo $RCS_HEADER | sed 's/.*run_\(.*\),v.*/\1/'` + + +if [ $# = 4 -a x$1 = x-onefile ] +then + shift + ONEFILE=t + DATABASE=$3 export DATABASE +else + if [ $# = 2 ] + then + DATABASE=$2 export DATABASE + else + echo usage: $0 -onefile input_file output_file database 1>&2 + echo or: $0 file_of_filenames database 1>&2 + exit 1 + fi +fi + + +# +# Exchange DB name for fasta reference +# +if [ "$DATABASE" = "%uniprot" ]; then + DATABASE="%U"; +elif [ "$DATABASE" = "%uniprot_archaea" ]; then + DATABASE="%A"; +elif [ "$DATABASE" = "%uniprot_bacteria" ]; then + DATABASE="%B"; +elif [ "$DATABASE" = "%uniprot_eukaryota" ]; then + DATABASE="%E"; +elif [ "$DATABASE" = "%uniprot_viruses" ]; then + DATABASE="%V"; +elif [ "$DATABASE" = "%uniprot_rest" ]; then + DATABASE="%R"; +elif [ "$DATABASE" = "%malaria" ]; then + DATABASE="%M"; +elif [ "$DATABASE" = "%kineto_aa" ]; then + DATABASE="%K"; +fi + +# expand any ~ or environment variables +EXPANDED_DATABASE=`echo "echo $DATABASE" | /bin/csh -f` + +### change this function to suit your site: + +run_one_prog () { + INPUT_FILE=$1 + OUTPUT_FILE=$2 + DATABASE=$3 + +### strip out directory from command line + + IN=`echo $INPUT_FILE | sed -n -e "s|$PWD//||p"` + + if test "$IN" != "" && test -f $IN; then + INPUT_FILE="$IN" + fi + + echo "\n\nIN=$IN\nPWD=$PWD\nINPUT_FILE=$INPUT_FILE\n\n" + ### change these lines: + + ### get sequence size + 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 + EXEC=/software/pathogen/external/applications/fasta/fasta35 + + echo "about to start $EXEC with input from $INPUT_FILE and output to" 1>&2 + echo "$OUTPUT_FILE using database $DATABASE" 1>&2 + + # add/change the flags to suit your site: + COMMAND="$EXEC -B -S -q -b 100 -H $INPUT_FILE $DATABASE ktup 2" + + echo "command line: $COMMAND" 1>&2 + +# lsrun -R 'select[blast && mem > 500] rusage[r1m=1:mem=500]' -v $COMMAND 2>&1 > $OUTPUT_FILE | + + if [ "$seq_size" -lt 50000 ] + then + bsub -q normal -n 1 -R 'select[blast && mem > 500] rusage[r1m=1:mem=500]' -I $COMMAND 2>&1 > $OUTPUT_FILE | + tee ${PROG}_errors.new 1>&2 + else + bsub -q "longblastq" -n 1 -R 'select[blast && mem > 500] rusage[r1m=1:mem=500]' -I $COMMAND 2>&1 > $OUTPUT_FILE | + tee ${PROG}_errors.new 1>&2 + fi + + #### end of changes + + + # Artemis can read compressed files + gzip -9 $OUTPUT_FILE & + + if [ -s ${PROG}_errors.new ] + then + ( echo ERROR running $PROG: ; echo; + echo =================================================== + cat ${PROG}_errors.new ) >> $OUTPUT_FILE + cat ${PROG}_errors.new >> ${PROG}_errors + fi +} + +PERL_PROG_1=' + +local *BSUB; + +my $file = $ARGV[0]; +my $database = $ARGV[1]; +my $pwd = $ARGV[2]; +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[r1m=1:mem=500]\" -K") or die "could not open bsub pipe : $!"; +open(LIST_FILE,$file); + +$EXEC="/nfs/disk222/yeastpub/bio-soft/fasta/fasta33_t"; +$EXEC="/software/pathogen/external/applications/fasta/fasta35"; + +while(my $inFile = <LIST_FILE>) +{ + chomp($inFile); + + if($inFile =~ m/^($pwd)(.*)/) + { + my $inFile_tmp = $2; + while($inFile_tmp =~ m/^(\/)(.*)/) + { + $inFile_tmp = $2; + } + + if( -e $inFile_tmp ) + { + $inFile = $inFile_tmp; + } + } + + if($inFile =~ m/^(\S{100})/) + { + if($inFile =~ m/^(\S{90,})(fasta\/\S+)/) + { + my $inFile_tmp = $1; + + if( -e $inFile_tmp ) + { + print BSUB "cd $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"; +} +close BSUB or die "--Could not submit job : $!"; +close LIST_FILE; +' + + + +PERL_PROG=' + +local *BSUB; + +my $file = $ARGV[0]; +my $database = $ARGV[1]; +my $pwd = $ARGV[2]; +chomp $file; +chomp $database; + +$ENV{'FASTLIBS'} = "/nfs/disk222/yeastpub/bio-soft/fasta/pubseqgbs_test"; +open(LIST_FILE,$file); + +$EXEC="/nfs/disk222/yeastpub/bio-soft/fasta/fasta33"; +$EXEC="/software/pathogen/external/applications/fasta/fasta35"; +$NEW_WDIR="."; +$NUM_JOBS=0; + +while(my $inFile = <LIST_FILE>) +{ + $NUM_JOBS++; + chomp($inFile); + + if($inFile =~ m/^($pwd)(.*)/) + { + my $inFile_tmp = $2; + while($inFile_tmp =~ m/^(\/)(.*)/) + { + $inFile_tmp = $2; + } + + if( -e $inFile_tmp ) + { + $inFile = $inFile_tmp; + } + } + + + if($inFile =~ m/^(\S{100})/) + { + if($inFile =~ m/^(\S{90,})(fasta\/\S+)/) + { + my $inFile_tmp = $1; + + if( -e $inFile_tmp ) + { + $NEW_WDIR=$inFile_tmp; + $inFile = $2; + } + } + } + # 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 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++) +{ + open(BSUB, "| bsub -q normal -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"); + } + elsif($jobs[0] =~ m/^(fasta\/)([^\/]*)(\d{5})/) + { + $prefix = $1.$2; + push(@starts, "$3"); + } + + # escape characters + if($prefix =~ /(\+|\?|\*|\[|\])/) + { + $prefix =~ s/\+/\\+/; + $prefix =~ s/\?/\\?/; + $prefix =~ s/\*/\\*/; + $prefix =~ s/\[/\\[/; + $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/\+/\\+/; + $prefix =~ s/\?/\\?/; + $prefix =~ s/\*/\\*/; + $prefix =~ s/\[/\\[/; + $prefix =~ s/\]/\\]/; + } + + push(@prefixes, $prefix); + } + } + } + + for($count =0; $count < @prefixes; $count++) + { + $prefix = $prefixes[$count]; + $start = $starts[$count]; + + # build the index description that need to be run + $index="$start-"; + $end="$start"; + for($j =0; $j < @jobs; $j++) + { + if($jobs[$j] =~ m/^$prefix(.*)/) + { + if($jobs[$j] =~ m/^(.*)(fasta\/)([^\/]*)(\d{5})/) + { + if($j == @jobs-1) + { + $index = "$index$4"; + } + elsif($end+1 >= $4) + { + $end = "$4"; + } + else + { + $index = "$index$end,$4-" + } + } + } + } + + if($index =~ m/(\-)$/) + { + $index = "$index$end"; + } + + bsub($prefix, $index, $num); + } +} + + +# start job arrays +sub bsub +{ + my ($prefix, $index, $num) = @_; + + my $name = $prefix; + + if($prefix =~ m/(\/fasta\/)(.*)/) + { + $name = "$2"; + } + + my $random = int( rand( 999+1 ) ); + + push(@bsub_jobs, "$name$random\_fasta"); + + my $QUEUE="long"; + if($NUM_JOBS <= 6) + { + $QUEUE="normal"; + } + + open(BSUB, "| bsub -q $QUEUE -o /dev/null -n 1 -R \"select[mem > 500] rusage[mem=500]\" -J$name$random\_fasta\"[$index]%16\"") or die "could not open bsub pipe : $!"; + print BSUB "cd $NEW_WDIR\n"; + 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 + +chmod a+x $PROG.kill + +HOSTNAME=`hostname` +REMOTE=N + +case $HOSTNAME in + deskpro*) + REMOTE=Y ;; + *) +esac + +if [ x$ONEFILE = x ] +then + if [ $REMOTE = "Y" ]; then + WDIR=`pwd` + export WDIR + CMD=`echo $PERL_PROG_1` + ssh babel "cd $WDIR; perl -w -e '$CMD' \"$1\" \"$EXPANDED_DATABASE\" \"$PWD\"" + else + perl -w -e "$PERL_PROG" "$1" "$EXPANDED_DATABASE" "$PWD" + fi +else + run_one_prog $1 $2 $EXPANDED_DATABASE +fi + +exit 0