tseemann / prokka

:zap: :aquarius: Rapid prokaryotic genome annotation
843 stars 226 forks source link

check blast version fails due to v2.10 which is recognized as <2.2 #544

Open uloeber opened 3 years ago

uloeber commented 3 years ago

Dear Torsten, it seems that a conflict occurs since blastp/makeblastdb v 2.10 since the perl routine recognizes 2.10<2.2 which is obviously wrong.

Yours sincerely, Ulrike

rpetit3 commented 3 years ago

Hi Ulrike!

What version of Prokka are you using? (If you're using conda, sometimes I've seen if goof up and install an older version of Prokka)

Cheers, Robert

domenico-simone commented 3 years ago

Same here! Using conda, I need to downgrade both blast and prokka :(

rpetit3 commented 3 years ago

Hi @domenico-simone

What version of Prokka do you have? Also what's the contents of conda env export look like?

If it helps any, the conda install of Prokka can be sensitive to channel order. I tend to stick to -c conda-forge -c bioconda.

conda create -n prokka-20210217 -c conda-forge -c bioconda prokka
conda activate prokka-20210217

prokka --version
prokka 1.14.6

blastp -version
blastp: 2.10.1+
 Package: blast 2.10.1, build Dec  7 2020 10:41:52

prokka --depends
aragorn >= 1.2 (compulsory, not bundled)
barrnap >= 0.4 (optional, not bundled)
blastp >= 2.8 (compulsory, not bundled)
cmpress >= 1.1 (optional, not bundled)
cmscan >= 1.1 (optional, not bundled)
egrep >= 0 (compulsory, not bundled)
find >= 0 (compulsory, not bundled)
grep >= 0 (compulsory, not bundled)
hmmpress >= 3.1 (compulsory, not bundled)
hmmscan >= 3.1 (compulsory, not bundled)
java >= 0 (compulsory, not bundled)
makeblastdb >= 2.8 (optional, not bundled)
minced >= 2.0 (optional, not bundled)
parallel >= 20130422 (compulsory, not bundled)
prodigal >= 2.6 (compulsory, not bundled)
prokka-genbank_to_fasta_db >= 0 (compulsory, not bundled)
rnammer >= 1.2 (optional, not bundled)
sed >= 0 (compulsory, not bundled)
signalp >= 3.0 (optional, not bundled)
tbl2asn >= 24.3 (compulsory, not bundled)

See if that helps you out.

CFGrote commented 2 years ago

same problem here, prokka installed via mamba install - c bioconda -c conda-forge -c defaults 'python>=3.7' 'blast>=2.2' prokka. Downgrading to 'blast<=2.10' solved the issue. Installing blast from ncbi (version 2.12) did not help.

Same issue also present in prokka binary shipped with this repo.

michaelkarlcoleman commented 2 years ago

Ran into this as well. Forcing prokka up to version 1.14.6 does seem to help.

The bug, though, is in this code

        msg("Determined $toolname version is $t->{VERSION} from '$s'");
        if (defined $t->{MINVER} and $t->{VERSION} lt ver2str($t->{MINVER}) ) {
          err("Prokka needs $toolname $t->{MINVER} or higher. Please upgrade and try again.");
        }

This is comparing versions lexicographically, which does not generally work, unfortunately. Perhaps there is a Perl module that knows how to do this correctly.

jrhendrix commented 2 years ago

Hi, For others who encounter this problem, here's another solution that does not require downgrading blast or prokka.

PROBLEM As already stated, the problem is that perl thinks 2.10<2.2. This is an issue with the version checks rather than actual compatibility with blast v2.10+. In the main prokka script, the minimum version requirements for blastp/makeblastdb are established within lines 156-167:

'blastp' => {
    GETVER  => "blastp -version",
    REGEXP  => qr/blastp:\s+($BIDEC)/,
    MINVER  => "2.2",                         <- HERE
    NEEDED  => 1,
  },

  'makeblastdb' => {
    GETVER  => "makeblastdb -version",
    REGEXP  => qr/makeblastdb:\s+($BIDEC)/,
    MINVER  => "2.2",                         <- HERE
    NEEDED  => 0,  # only if --proteins used
  },

SOLUTION To fix, find the code and change lines 159 and 165 from MINVER => "2.2", to MINVER => "2.10",. Note that this would mean several versions of blast (v2.2-2.9) are incorrectly considered not viable; however, if using one of these versions, then this problem would not have arisen anyway.

FINDING THE CODE The exact location of the code will depend on your installation method. I created a conda environment named prokka_env

conda create --name prokka_env
conda activate prokka_env

so the code was located in ~/anaconda3/envs/prokka_env/bin/prokka. Simply open this file in a text editor and make the changes at lines 159 and 165. Save and rerun.

I hope this helps

cmandreani commented 2 years ago

Hi, @jrhendrix's solution worked for me. Thanks a lot!

stevelan commented 6 months ago

Thank @jrhendrix this worked for me after getting the error

Determined blastp version is 2.12

Prokka needs blastp 2.2 or higher. Please upgrade and try again.

Edit: This seems to have been a problem with 1.13 and is not a problem in prokka 1.14. I had used bioconda channel and not conda-forge for installing.