Path: blob/main/biology/barrnap/files/patch-bin_barrnap
46591 views
--- bin/barrnap.orig 2026-04-13 08:23:19 UTC
+++ bin/barrnap
@@ -14,14 +14,22 @@ use FindBin;
# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
# global variables
-my $VERSION = "1.10.5";
+my $VERSION = "1.10.6";
my $EXE = $FindBin::RealScript;
my $DESC = "Rapid microbial RNA annotationn";
my $AUTHOR = 'Torsten Seemann';
my $URL = 'https://github.com/tseemann/barrnap';
-my $DEFAULT_DBDIR = path("$FindBin::RealBin/../db")->realpath;
+my $DEFAULT_DBDIR = path("/usr/local/share/barrnap/db");
my $BUILD_DIR = path("$FindBin::RealBin/../build")->realpath;
my $DEVNULL = File::Spec->devnull;
+my %NEEDS_EXE = (
+ rrna => [qw(cmsearch seqkit)],
+ trna => [qw(aragorn)],
+ ncrna => [qw(cmscan)],
+ mrna => [qw(pyrodigal diamond ziggypep transterm)],
+ operon => [qw(bedtools)],
+ updatedb => [qw(make taxonkit diamond seqkit)],
+);
my $DOT = '.';
my @KINGDOM = qw"bac arc fun";
my %KINGDOM = (map { $_ => 1 } @KINGDOM);
@@ -91,11 +99,7 @@ msg("Checking dependencies:");
$rrna = $trna = $ncrna = $operon = $mrna = 1;
}
msg("Checking dependencies:");
-require_exe(
- 'cmsearch', 'cmscan', 'bedtools', 'aragorn',
- 'any2fasta', 'seqkit', 'make', 'transterm',
- 'ziggypep', 'pyrodigal', 'diamond', 'taxonkit'
-);
+require_exe(required_exe());
# Check all input files and make
my @infile;
@@ -115,8 +119,13 @@ my($a2f_opt,$sk_opt) = $quiet ? ('-q','--quiet') : (''
# Write a single combined FASTA file
my $FASTA = File::Spec->rel2abs("$EXE.fasta");
my($a2f_opt,$sk_opt) = $quiet ? ('-q','--quiet') : ('','');
-run_cmd("any2fasta -k $a2f_opt @infile > $FASTA.tmp");
-run_cmd("seqkit seq $sk_opt -g --min-len 1 -u -w 60 $FASTA.tmp > $FASTA");
+if (which('any2fasta')) {
+ run_cmd("any2fasta -k $a2f_opt @infile > $FASTA.tmp");
+ run_cmd("seqkit seq $sk_opt -g --min-len 1 -u -w 60 $FASTA.tmp > $FASTA");
+}
+else {
+ run_cmd("seqkit seq $sk_opt -g --min-len 1 -u -w 60 @infile > $FASTA");
+}
-s $FASTA or err("No sequences found in input");
run_cmd("rm -f $FASTA.fai"); # for --debug case of tmp=.
run_cmd("seqkit faidx $sk_opt $FASTA");
@@ -716,6 +725,12 @@ sub enumerate_dbs {
$dmnd =~ m=(\w+)\.dmnd$= or err("Bad DMND model: $dmnd");
$db->{$1}{'CDS'} = $dmnd;
}
+ if (! keys %$db) {
+ for my $yml (glob("$dir/*/database.yml")) {
+ $yml =~ m=(\w+)/database\.yml$= or err("Bad database metadata: $yml");
+ $db->{$1}{rRNA} = $yml;
+ }
+ }
return $db;
}
#----------------------------------------------------------------------
@@ -747,6 +762,17 @@ sub update_dbs {
list_dbs($d);
#msg("Finished updating databases.");
exit(0);
+}
+#----------------------------------------------------------------------
+sub required_exe {
+ my @exe;
+ push @exe, @{$NEEDS_EXE{updatedb}} if $updatedb;
+ push @exe, @{$NEEDS_EXE{rrna}} if $rrna;
+ push @exe, @{$NEEDS_EXE{trna}} if $trna;
+ push @exe, @{$NEEDS_EXE{ncrna}} if $ncrna;
+ push @exe, @{$NEEDS_EXE{mrna}} if $mrna;
+ push @exe, @{$NEEDS_EXE{operon}} if $operon || $outseq;
+ return uniq @exe;
}
#----------------------------------------------------------------------
sub require_exe {