zhanglhbioinfor / DIRECT-NET

10 stars 5 forks source link

Error when running Run_DIRECT_NET() with rescued = TRUE #5

Open DHelix opened 1 year ago

DHelix commented 1 year ago

Hi, Thanks for creating this interesting tool for analyzing multi-omic data! I was trying to run Run_DIRECT_NET() with rescued = TRUE, but received an error message:

Run_DIRECT_NET(seurat_obj,
                             peakcalling = FALSE, k_neigh = 50, atacbinary = TRUE, max_overlap=0.5, size_factor_normalize = FALSE, 
                             genome.info = genome.info, focus_markers = markers, rescued = TRUE,
                             params = list(eta = 0.3, max_depth = 6, min_child_weight = 1,  subsample = 1, colsample_bytree = 1, lambda = 1, nthread = 32))

Error in TXs[[i]] : subscript out of bounds

BTW, I was able to run it successfully when rescued = FALSE. Could you please advise me on how to fix it? Thank you!

zhanglhbioinfor commented 1 year ago

Hi, I have updated the function. Please let me know if it does not work. Thank you!

DHelix commented 1 year ago

Hi! Thanks a lot for the update!! I just had a chance to update the package and reran it, but I got a different error:

Run_DIRECT_NET(seurat_obj,
        peakcalling = FALSE, k_neigh = 50, atacbinary = TRUE, max_overlap=0.5, size_factor_normalize = FALSE,
        genome.info = genome.info, focus_markers = markers[1:2], rescued = TRUE,
        params = list(eta = 0.3, max_depth = 6, min_child_weight = 1,  subsample = 1, colsample_bytree = 1, lambda = 1, nthread = 32))

Error in check.booster.params(params, ...) :
Same parameters in 'params' and in the call are not allowed. Please check your 'params' list.

BTW, would it be possible to specify the number of threads used when running Run_DIRECT_NET without using "params"? Thanks again!

zhanglhbioinfor commented 1 year ago

Hi! Thanks for your suggestion! I have updated the function with the number of threads being used.

DHelix commented 1 year ago

Hi, thank you for being so helpful! Love the new "nthread" parameter :) I was able to run Run_DIRECT_NET(rescued = TRUE) successfully for a small subset of genes/markers, but when I ran it for all genes (26401 genes in total), it gave me the following error (btw, no error when rescued = FALSE):

Error in rbind(deparse.level, ...) :
invalid list argument: all variables should have the same length

10.
stop("invalid list argument: all variables should have the same length")
9.
rbind(deparse.level, ...)
8.
rbind(...)
7.
eval(mc, env)
6.
eval(mc, env)
5.
eval(mc, env)
4.
standardGeneric("rbind")
3.
(new("standardGeneric", .Data = function (..., deparse.level = 1)
standardGeneric("rbind"), generic = structure("rbind", package = "BiocGenerics"),
package = "BiocGenerics", group = list(), valueClass = character(0),
signature = "...", default = new("derivedDefaultMethod", ...
2.
do.call(rbind, DIRECT_NET_Result)
1.
Run_DIRECT_NET(FFMRT_Tumor.seurat, peakcalling = FALSE, k_neigh = 50,
atacbinary = TRUE, max_overlap = 0.5, size_factor_normalize = FALSE,
genome.info = genome.info, focus_markers = markers_groups,
rescued = TRUE, nthread = 32)

I haven't figured out which gene caused this error, and wonder if you could share some thoughts. Thanks again!

zhanglhbioinfor commented 1 year ago

Hi, I have checked the code. The problem is because of genes which have smaller variation (nearly zero) across cells. I have updated the package. All genes are not recommended, DIRECT-NET is a variation-based method.