Biostrings icon indicating copy to clipboard operation
Biostrings copied to clipboard

consensusString and consensusMatrix error for legth-0 input

Open jan-glx opened this issue 2 years ago • 1 comments

Currently, consensusString fails for length-0 inputs:

Biostrings::consensusString(character(0))
#> Error in h(simpleError(msg, call)): error in evaluating the argument 'x' in selecting a method for function 'consensusString': 'x' has no element and 'width' is NULL

Created on 2023-07-29 by the reprex package (v2.0.1)

I believe it should return character(0) instead and at most warn.

Maybe, replacing error("'x' has no element and 'width' is NULL"); with return allocMatrix(INTSXP, 0, 0); is all that's needed?

jan-glx avatar Jul 29 '23 14:07 jan-glx

Thanks for the callout, and apologies for the slow turnaround--this is fixed in #111.

The return values in the new version should be consistent with inputs of length > 0:

  • consensusMatrix(..., as.prob=FALSE) returns an integer matrix
  • consensusMatrix(..., as.prob=TRUE) returns a numeric matrix
  • consensusString(x) returns character(0L) if the input is length 0
  • consensusString(DNAStringSet()) has the correct column names (similarly for all other XStringSet objects, and for baseOnly=TRUE)

I'll merge this sometime this month once I've double checked that it's not causing any other weird bugs.

ahl27 avatar Jun 06 '24 20:06 ahl27