Andreas Tille <ti...@debian.org> writes:

> However, besides t-coffee I think that are probably more
> tools around which are expecting the .pl extensions on those prominent
> tools from ncbi-blast.

Perhaps, but please bear in mind that ncbi-blast+ primarily ships
compiled C++ binaries and blast2 historically shipped compiled C
binaries -- the scripts in question are just compatibility shims, and
ncbi-blast+-legacy uses the consolidated legacy-blast Perl script to
provide drop-in replacements for the old C binaries under their original
names, with no extensions needed.

blastpgp is one such original name, though AFAICT from a closer look at
t-coffee, the blastpgp.pl t-coffee tries to run is an EBI client script
with which I'm unfamiliar, apparently the one from its example/ subtree.

> BTW, I do not understand your third suggestion ("Better yet ...").  It
> seems you are proposing a real enhancement but I just don't get it.
> Would you mind providing a patch for t-coffee implementing this?

Sure, see below.  Please note that, per the above comment about
blastpgp.pl, this approach turned out to apply only to t-coffee's
legacy-blast(.pl) usage, which AFAICT comes solely from the
tc_generic_method.pl example, even though the C code explicitly checks
for this script's existence in some circumstances:
https://salsa.debian.org/med-team/t-coffee/-/blob/master/t_coffee_source/util_lib/aln_convertion_util.c#L5767

At any rate, legacy_blast's --print_only option helps translate command
lines like

  legacy_blast(.pl) blastpgp --path $path -d $cl_db -i $infile -o $outfile -m7 
-j1

(https://salsa.debian.org/med-team/t-coffee/-/blob/master/example/tc_generic_method.pl#L2623):

  $ legacy_blast blastpgp --print_only --path \$path -d \$cl_db -i \$infile -o 
\$outfile -m7 -j1
  $path/psiblast -db $cl_db -query $infile -num_iterations 1 -out $outfile 
-outfmt 5

... where it should be safe to drop the explicit leading $path/ altogether.

I've attached a full patch.

-- 
Aaron M. Ucko, KB1CJC (amu at alum.mit.edu, ucko at debian.org)
http://www.mit.edu/~amu/ | http://stuff.mit.edu/cgi/finger/?a...@monk.mit.edu

--- a/example/tc_generic_method.pl
+++ b/example/tc_generic_method.pl
@@ -1183,7 +1183,7 @@ sub pg_is_installed
 	if ($r eq ""){$r=0;}
 	else {$r=1;}
 
-	if ($r==0 && is_blast_package ($p)){return pg_is_installed ("legacy_blast.pl");}
+	if ($r==0 && is_blast_package ($p)){return pg_is_installed ("blastn");}
 	else {return $r;}
       }
   }
@@ -2611,26 +2611,20 @@ sub run_blast
 			$cl_db=$db;
 	    }
 
-        ##
 		## BLAST+ provide different binaries names and CLI options
-		## Use the 'legacy_blast.pl' to keep compatibility with old blast commands
-		##
-		$path=`which legacy_blast.pl 2>/dev/null`;  
-		$path=`dirname $path`; 
-		chomp($path);
 	    if ($method eq "blastp"){
-			&check_configuration("legacy_blast.pl");
-			$command="legacy_blast.pl blastpgp --path $path -d $cl_db -i $infile -o $outfile -m7 -j1";
+			&check_configuration("psiblast");
+			$command="psiblast -db $cl_db -query $infile -num_iterations 1 -out $outfile -outfmt 5";
 	    }
 	    elsif ($method eq "psiblast")
 	      {
-		&check_configuration("legacy_blast.pl");
-		$command="legacy_blast.pl blastpgp --path $path -d $cl_db -i $infile -o $outfile -m7 -j5";
+		&check_configuration("psiblast");
+		$command="psiblast -db $cl_db -query $infile -num_iterations 5 -out $outfile -outfmt 5";
 	      }
 	    elsif ($method eq "blastn")
 	      {
-		&check_configuration("legacy_blast.pl");
-		$command="legacy_blast.pl blastall --path $path -p blastn -d $cl_db -i $infile -o $outfile -m7 -W6";
+		&check_configuration("blastn");
+		$command="blastn -task blastn -db $cl_db -query $infile -word_size 6 -out $outfile -outfmt 5";
 	      }
 	    print "$command\n";
 	    &safe_system ($command);

Reply via email to