ascend icon indicating copy to clipboard operation
ascend copied to clipboard

error when running runDESeq if both condition.a and condition.b contain more than 1 groups

Open lixin4306ren opened this issue 6 years ago • 1 comments

Hi, after running runCORE, I got 4 clusters for the sample. Then I used runDESeq to identify DE genes between cluter1,3 and cluster2,4 with the following command.

cluster1_3_vs_2_4 <- runDESeq(scran_normalised, group = "cluster", condition.a = c("1","3"), condition.b = c("2", "4"), ngenes = 5000, fitType = "local", method = "per-condition")

got error information as

Loading required package: dynamicTreeCut
Loading required package: locfit
locfit 1.5-9.1 	 2013-03-22
Loading required package: lattice
    Welcome to 'DESeq'. For improved performance, usability and
    functionality, please consider migrating to 'DESeq2'.
[1] "Identifying genes to retain..."
[1] "Running DESeq..."
  |=======                                                               |  10%
Error: BiocParallel errors
  element index: 1, 2, 3, 4, 5, 6, ...
  first error: fewer than one row in the data
library(BiocParallel)
Execution halted

After checked the code of function runDESeq, I found one suspicious part which might be a bug. I think the third line in following in code, the condition.b should be changed to 'condition.a'. Otherwise, it will overwrite the original condition.b, and then make the actual comparison between condition.a itself and cause the error.

    if (length(condition.a) > 1) {
        reformatted <- reformatCondition(condition.a, condition_list = condition_list)
        condition.b <- reformatted$condition
        condition_list <- reformatted$condition_list
    }
    else {
        replace_idx <- which(condition_list %in% condition.a)
        condition.a <- as.character(condition.a)
        condition_list[replace_idx] <- condition.a
    }
    if (length(condition.b > 1)) {
        reformatted <- reformatCondition(condition.b, condition_list = condition_list)
        condition.b <- reformatted$condition
        condition_list <- reformatted$condition_list
    }
    else {
        replace_idx <- which(condition_list %in% condition.b)
        condition.b <- as.character(condition.b)
        condition_list[replace_idx] <- condition.b
    }

lixin4306ren avatar Dec 15 '18 05:12 lixin4306ren

Hi @lixin4306ren ,

Nice catch! I'll add a fix for the next update.

Thanks, Anne

asenabouth avatar Dec 17 '18 00:12 asenabouth