prokka icon indicating copy to clipboard operation
prokka copied to clipboard

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

Open uloeber opened this issue 3 years ago • 8 comments

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

uloeber avatar Dec 30 '20 18:12 uloeber

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

rpetit3 avatar Jan 11 '21 04:01 rpetit3

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

domenico-simone avatar Feb 17 '21 13:02 domenico-simone

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.

rpetit3 avatar Feb 18 '21 02:02 rpetit3

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.

CFGrote avatar Dec 09 '21 14:12 CFGrote

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.

michaelkarlcoleman avatar Apr 26 '22 17:04 michaelkarlcoleman

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

jrhendrix avatar Jul 30 '22 15:07 jrhendrix

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

cmandreani avatar Sep 03 '22 17:09 cmandreani

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.

stevelan avatar May 02 '24 12:05 stevelan