bioperl/bioperl-run

Bio::Tools::Run::StandAloneBlastPlus tests failing with latest BLAST+

cjfields opened this issue · 3 comments


Author Name: Chris Fields (@cjfields)
Original Redmine Issue: 3213, https://redmine.open-bio.org/issues/3213
Original Date: 2011-04-20
Original Assignee: Bioperl Guts


Indexing of BLAST databases using makeblastdb with BLAST+ 2.2.24+ and up fail with duplicated IDs. This is causing t/SABlastPlus.t tests to fail.

cjfields@pyrimidine:~/bioperl/bioperl-run$ blastp -version
blastp: 2.2.24+
Package: blast 2.2.24, build Aug 12 2010 17:48:12
cjfields@pyrimidine:~/bioperl/bioperl-run$ t t/SABlastPlus.t 
t/SABlastPlus.t .. 
1..63
ok 1 - use Bio::Tools::Run::StandAloneBlastPlus;
ok 2 - use Bio::Tools::Run::WrapperBase;
ok 3 - use Bio::Tools::Run::WrapperBase::CommandExts;
ok 4 - BlastPlus factory
# DB and mask make tests
ok 5 - make factory

------------- EXCEPTION: Bio::Root::Exception -------------
MSG: /opt/local/blast-plus/bin/makeblastdb call crashed: There was a problem running /opt/local/blast-plus/bin/makeblastdb : BLAST Database creation error: Error: Duplicate seq_ids are found.

STACK: Error::throw
STACK: Bio::Root::Root::throw /home/cjfields/bioperl/bioperl-live/Bio/Root/Root.pm:472
STACK: Bio::Tools::Run::WrapperBase::_run /home/cjfields/bioperl/bioperl-live/Bio/Tools/Run/WrapperBase/CommandExts.pm:1012
STACK: Bio::Tools::Run::StandAloneBlastPlus::make_db /home/cjfields/bioperl/bioperl-run/blib/lib/Bio/Tools/Run/StandAloneBlastPlus.pm:740
STACK: t/SABlastPlus.t:37
-----------------------------------------------------------
# Looks like you planned 63 tests but ran 5.
# Looks like your test exited with 29 just after 5.
Dubious, test returned 29 (wstat 7424, 0x1d00)
Failed 58/63 subtests 

Test Summary Report
-------------------
t/SABlastPlus.t (Wstat: 7424 Tests: 5 Failed: 0)
  Non-zero exit status: 29
  Parse errors: Bad plan.  You planned 63 tests but ran 5.
Files=1, Tests=5,  0 wallclock secs ( 0.01 usr  0.02 sys +  0.34 cusr  0.06 csys =  0.43 CPU)
Result: FAIL
Failed 1/1 test programs. 0/5 subtests failed.

Original Redmine Comment
Author Name: Chris Fields
Original Date: 2011-04-20T16:43:09Z


Commit commit:22eb8ef8 fixes tests with BLAST+ v.2.2.23+, but later versions are failing:

cjfields@pyrimidine:~/bioperl/bioperl-run$ blastp -version
blastp: 2.2.24+
Package: blast 2.2.24, build Aug 12 2010 17:48:12
cjfields@pyrimidine:~/bioperl/bioperl-run$ t t/SABlastPlus.t 
t/SABlastPlus.t .. 
1..63
ok 1 - use Bio::Tools::Run::StandAloneBlastPlus;
ok 2 - use Bio::Tools::Run::WrapperBase;
ok 3 - use Bio::Tools::Run::WrapperBase::CommandExts;
ok 4 - BlastPlus factory
# DB and mask make tests
ok 5 - make factory
ok 6 - test db made with fasta
ok 7 - temp db
ok 8 - right type
ok 9
ok 10 - named db made
ok 11 - check_db
ok 12 - correct name
ok 13 - dbinfo hash returned
ok 14 - correct type

------------- EXCEPTION: Bio::Root::Exception -------------
MSG: /opt/local/blast-plus/bin/windowmasker call crashed: There was a problem running /opt/local/blast-plus/bin/windowmasker : USAGE
  windowmasker [-h] [-help] [-xmlhelp] [-ustat unit_counts]
    [-in input_file_name] [-out output_file_name] [-checkdup check_duplicates]
    [-window window_size] [-t_extend T_extend] [-t_thres T_threshold]
    [-t_high T_high] [-t_low T_low] [-set_t_high score_value]
    [-set_t_low score_value] [-infmt input_format] [-parse_seqids]
    [-outfmt output_format] [-sformat unit_counts_format] [-mk_counts]
    [-convert] [-fa_list input_is_a_list] [-mem available_memory]
    [-smem available_memory] [-unit unit_length] [-genome_size genome_size]
    [-dust use_dust] [-dust_level dust_level] [-exclude_ids exclude_id_list]
    [-ids id_list] [-text_match text_match_ids]
    [-use_ba use_bit_array_optimization] [-version-full]

DESCRIPTION
   Window based sequence masker

Use '-help' to print detailed descriptions of command line arguments
========================================================================
Error: (106.18) 
NCBI C++ Exception:
    Error: (CArgException::eSynopsis) Too many positional arguments (1), the offending value: true
    Error: (CArgException::eSynopsis) Application's initialization failed


STACK: Error::throw
STACK: Bio::Root::Root::throw /home/cjfields/bioperl/bioperl-live/Bio/Root/Root.pm:472
STACK: Bio::Tools::Run::WrapperBase::_run /home/cjfields/bioperl/bioperl-live/Bio/Tools/Run/WrapperBase/CommandExts.pm:1012
STACK: Bio::Tools::Run::StandAloneBlastPlus::make_mask /home/cjfields/bioperl/bioperl-run/blib/lib/Bio/Tools/Run/StandAloneBlastPlus.pm:855
STACK: t/SABlastPlus.t:51
-----------------------------------------------------------
# Looks like you planned 63 tests but ran 14.
# Looks like your test exited with 29 just after 14.
Dubious, test returned 29 (wstat 7424, 0x1d00)
Failed 49/63 subtests 

Test Summary Report
-------------------
t/SABlastPlus.t (Wstat: 7424 Tests: 14 Failed: 0)
  Non-zero exit status: 29
  Parse errors: Bad plan.  You planned 63 tests but ran 14.
Files=1, Tests=14,  0 wallclock secs ( 0.03 usr  0.01 sys +  0.56 cusr  0.12 csys =  0.72 CPU)
Result: FAIL
Failed 1/1 test programs. 0/14 subtests failed.

Original Redmine Comment
Author Name: Chris Fields
Original Date: 2011-04-20T18:11:21Z


Basically, NCBI devs made significant API changes to windowmasker after BLAST+ v 2.2.23 that break this wrapper, with conflicting parameters and changes in parameters from specific boolean values to switches. In particular, it appears that the generation of frequency counts for a database (via -mk_counts) and generation of the masked database (via outfmt) now directly conflict. The process to generate the masked database using counts appears to be two-step now. Also, the -mk_counts parameters now is a switch instead of accepting the ‘true’ flag. My concern is there is no way to find out what other API changes may lurk elsewhere in the code. A bit frustrating to say the least.

Because there are no ways to account for version-specific changes to parameters, any fixes in this module will be backwards-incompatible with BLAST+ versions 2.2.23+ and earlier.


Original Redmine Comment
Author Name: Chris Fields
Original Date: 2011-04-20T21:14:13Z


Mainly fixed to handle the latest BLAST+. There are still some odd changes even between BLAST+ 2.2.24+ and 2.2.25+ (some tests passing, others not).