easybuilders / easybuild-easyconfigs

A collection of easyconfig files that describe which software to build using which build options with EasyBuild.
https://easybuild.io
GNU General Public License v2.0
382 stars 702 forks source link

BUSCO 4.0.5 warns that BLAST 2.9 produces inconsistent results when multithreading #12247

Open Ghepardo opened 3 years ago

Ghepardo commented 3 years ago

Hi, the easyconfig for BUSCO 4.0.5 brings in BLAST+ 2.9.0. When this version of BUSCO is used it emits the warning seen below:

Hostname is  [...]
16-Feb-21 19:52:12
Running /tmp/slurmd/job101044/slurm_script in directory:/home/data/pest_genomics/complete_genomes/Sugar_cane_borer/annotation/6_Transfer
16-Feb-21 19:52:14
Running busco with input Dsac.renamed.fna, output busco_renamed1
22921
INFO:   ***** Start a BUSCO v4.0.5 analysis, current time: 02/16/2021 19:52:14 *****
INFO:   Configuring BUSCO with /home/apps/eb/software/BUSCO/4.0.5-foss-2019b-Python-3.7.4/config/config.ini
INFO:   Mode is transcriptome
INFO:   Input file is Dsac.renamed.fna
INFO:   Downloading information on latest versions of BUSCO data...
INFO:   Using local lineages directory /home/data/pest_genomics/bioinf_resources/insecta_odb10
**WARNING:  You are using BLAST version 2.9. This is known to yield inconsistent results when multithreading. BLAST will run on a single core as a result. For performance improvement, please revert to BLAST 2.2 or 2.3.**
INFO:   Running BUSCO using lineage dataset insecta_odb10 (eukaryota, 2020-09-10)
...

Shouldn't the BUSCO easyconfig therefore specify something like the following?

('BLAST+', '2.3.0')
Ghepardo commented 3 years ago

I have successfully rebuilt BUSCO 4.0.5 using the following dependency specification in its easyconfig:

('BLAST+', '2.3.0', '-Python-2.7.11', ('foss', '2016b'))

I found I needed to move this line to the head of the dependencies list, otherwise the build would fail owing to being unable to load ncurses/6.0-foss-2016b and bzip2/1.0.6-foss-2016b.

I also added the following line, so as to build a distinct module for it:

modaltsoftname = 'BUSCO-4.0.5-foss-2019b-Python-3.7.4-BLAST+-2.3.0'

...but this did leave me with a mouthful of a module name, "BUSCO-4.0.5-foss-2019b-Python-3.7.4-BLAST+-2.3.0/4.0.5-foss-2019b-Python-3.7.4", so this could be improved upon!

I did need to rebuild quite a few packages in the dependency chain against the foss-2016b toolchain. This was because I could not build the foss-2016a package: it would fail with errors regarding verbs in the Infiniband library. These rebuilds were:

I'm awaiting the results of testing this new BUSCO build.

Ghepardo commented 3 years ago

I think I misunderstood the effect of modaltsoftname: it has not given me a distinct module, but has overwritten the original one. Please ignore my earlier reference to it.