bioperl/bioperl-run

StandAloneBlastPlus can't handle the new multiple-valued -outfmt option

majensen opened this issue · 2 comments

Problem below came in on the list. I can replicate it. The latest blast+ accepts the following

... -outfmt "7 sseqid qseqid" ...

I.e., enclosing multiple tokens in quotes as a value for the -outfmt option is a new feature.

The error below indicates that where the parameter -outfmt is set in the code (to be sent to the command line), the full string
"<token> <token> ..."
is not treated as an atom of text.

Preliminary investigation sez the problem lies deep within Bio::Tools::Run::WrapperBase::CommandExts, and might involve Bio::Root::RootI::_set_from_args, which was written in the Year 1.

I will see what I can do.
MAJ

I’m working with this script that uses StandAloneBlastPlus, and
I
would like to take advantage of a new feature in the latest
releases of blast+, which allows me to present the query coverage

in the output (among other values). For that to work, the value
of
–outfmt needs to be quoted (for example, -outfmt “7 std
qcovs”), so
I’m passing the outfmt parameter via

-method_args => [ '-outfmt' => '"7 std qcovs"' ]

(I’m using single quotes with doubles inside, so that the
double
quotes are passed literally).

But when I run it, the quotes seem to get lost and I end up with
the error I get when I pass that value without the quotes:

Error: Too many positional arguments (1), the offending value:
std

I have tried lots of combinations with single, double quotes,
character escaping and I couldn’t find the way to make it work.

bioperl/bioperl-live@8848178 should fix; adding tests to this distro.

So far so good. Closing.