theislab / zellkonverter

Conversion between scRNA-seq objects
https://theislab.github.io/zellkonverter/
Other
144 stars 27 forks source link

doTryCatch style error when verbose=TRUE #72

Closed hoondy closed 1 year ago

hoondy commented 1 year ago

I have a fresh installation of zellkonverter from bioconductor (installed using BiocManager::install("zellkonverter")) and I am facing an issue with doTryCatch(return(expr), name, parentenv, handler): style error. Do you know what's causing this issue and a way to work around this?

I am using R version 4.2.1 (2022-06-23) and zellkonverter_1.6.4. Installation went smooth without errors.

ℹ Using the Python reader

ℹ Using anndata version 0.8.0

+ '/hpc/users/leed/.cache/R/basilisk/1.8.1/0/bin/conda' 'create' '--yes' '--prefix' '/hpc/users/leed/.cache/R/basilisk/1.8.1/zellkonverter/1.6.4/zellkonverterAnnDataEnv-0.8.0' 'python=3.8.13' '--quiet' '-c' 'conda-forge'

+ '/hpc/users/leed/.cache/R/basilisk/1.8.1/0/bin/conda' 'install' '--yes' '--prefix' '/hpc/users/leed/.cache/R/basilisk/1.8.1/zellkonverter/1.6.4/zellkonverterAnnDataEnv-0.8.0' 'python=3.8.13'

+ '/hpc/users/leed/.cache/R/basilisk/1.8.1/0/bin/conda' 'install' '--yes' '--prefix' '/hpc/users/leed/.cache/R/basilisk/1.8.1/zellkonverter/1.6.4/zellkonverterAnnDataEnv-0.8.0' '-c' 'conda-forge' 'python=3.8.13' 'anndata=0.8.0' 'h5py=3.6.0' 'hdf5=1.12.1' 'natsort=8.1.0' 'numpy=1.22.3' 'packaging=21.3' 'pandas=1.4.2' 'python=3.8.13' 'scipy=1.7.3' 'sqlite=3.38.2'

Error in doTryCatch(return(expr), name, parentenv, handler): style
Traceback:

1. readH5AD("/projects/scRNAseq_proc/freeze2/scRNA/4_analysis/220610_pass2_anno.h5ad", 
 .     use_hdf5 = TRUE, raw = TRUE, verbose = TRUE, uns = FALSE)
2. basiliskRun(env = env, fun = .H5ADreader, file = file, X_name = X_name, 
 .     backed = use_hdf5, verbose = verbose, ...)
3. evalq(do.call(.basilisk.fun, .basilisk.args), envir = proc, enclos = proc)
4. evalq(do.call(.basilisk.fun, .basilisk.args), envir = proc, enclos = proc)
5. do.call(.basilisk.fun, .basilisk.args)
6. (function (file, X_name = NULL, backed = FALSE, verbose = NULL, 
 .     ...) 
 . {
 .     anndata <- import("anndata")
 .     .ui_step("Reading {.file {.trim_path(file)}}", msg_done = "Read {.file {.trim_path(file)}}", 
 .         spinner = TRUE)
 .     adata <- anndata$read_h5ad(file, backed = if (backed) 
 .         "r"
 .     else FALSE)
 .     cli::cli_progress_done()
 .     AnnData2SCE(adata, X_name = X_name, hdf5_backed = backed, 
 .         verbose = verbose, ...)
 . })(file = "/projects/scRNAseq_proc/freeze2/scRNA/4_analysis/220610_pass2_anno.h5ad", 
 .     X_name = NULL, backed = TRUE, verbose = TRUE, raw = TRUE, 
 .     uns = FALSE)
7. .ui_step("Reading {.file {.trim_path(file)}}", msg_done = "Read {.file {.trim_path(file)}}", 
 .     spinner = TRUE)
8. cli::cli_progress_step(msg, ..., .envir = envir)
9. cli_progress_update(id = id, force = TRUE, .envir = .envir)
10. h$add(pb, .envir = .envir)
11. cli_status(bar$format, msg_done = bar$format_done %||% bar$format, 
  .     msg_failed = bar$format_failed %||% bar$format, .auto_close = FALSE, 
  .     .envir = .envir, )
12. cli__message("status", list(id = id, msg = glue_cmd(msg, .envir = .envir), 
  .     msg_done = glue_cmd(msg_done, .envir = .envir), msg_failed = glue_cmd(msg_failed, 
  .         .envir = .envir), keep = .keep, auto_result = match.arg(.auto_result), 
  .     globalenv = identical(.envir, .GlobalEnv)), .auto_close = .auto_close, 
  .     .envir = .envir)
13. "id" %in% names(args)
14. glue_cmd(msg, .envir = .envir)
15. glue(str, .envir = .envir, .transformer = transformer, .cli = TRUE)
16. (function (expr) 
  . {
  .     eval_func <- as.character(.transformer(expr, .envir) %||% 
  .         character())
  . })(".file {.trim_path(file)}")
17. .transformer(expr, .envir) %||% character()
18. .transformer(expr, .envir)
19. glue(text, .envir = envir, .transformer = sys.function(), .cli = TRUE)
20. (function (expr) 
  . {
  .     eval_func <- as.character(.transformer(expr, .envir) %||% 
  .         character())
  . })(".trim_path(file)")
21. .transformer(expr, .envir) %||% character()
22. .transformer(expr, .envir)

Error in doTryCatch(return(expr), name, parentenv, handler): style
Traceback:

1. readH5AD("/projects/scRNAseq_proc/freeze2/scRNA/4_analysis/220610_pass2_anno.h5ad", 
 .     use_hdf5 = TRUE, raw = TRUE, verbose = TRUE, uns = FALSE)
2. basiliskRun(env = env, fun = .H5ADreader, file = file, X_name = X_name, 
 .     backed = use_hdf5, verbose = verbose, ...)
3. evalq(do.call(.basilisk.fun, .basilisk.args), envir = proc, enclos = proc)
4. evalq(do.call(.basilisk.fun, .basilisk.args), envir = proc, enclos = proc)
5. do.call(.basilisk.fun, .basilisk.args)
6. (function (file, X_name = NULL, backed = FALSE, verbose = NULL, 
 .     ...) 
 . {
 .     anndata <- import("anndata")
 .     .ui_step("Reading {.file {.trim_path(file)}}", msg_done = "Read {.file {.trim_path(file)}}", 
 .         spinner = TRUE)
 .     adata <- anndata$read_h5ad(file, backed = if (backed) 
 .         "r"
 .     else FALSE)
 .     cli::cli_progress_done()
 .     AnnData2SCE(adata, X_name = X_name, hdf5_backed = backed, 
 .         verbose = verbose, ...)
 . })(file = "/projects/scRNAseq_proc/freeze2/scRNA/4_analysis/220610_pass2_anno.h5ad", 
 .     X_name = NULL, backed = TRUE, verbose = TRUE, raw = TRUE, 
 .     uns = FALSE)
7. (function (envir) 
 . {
 .     handlers <- get_handlers(envir)
 .     errors <- list()
 .     for (handler in handlers) {
 .         tryCatch(eval(handler$expr, handler$envir), error = function(e) {
 .             errors[[length(errors) + 1]] <<- e
 .         })
 .     }
 .     attr(envir, "withr_handlers") <- NULL
 .     for (error in errors) {
 .         stop(error)
 .     }
 . })(<environment>)
lazappi commented 1 year ago

Hi @hoondy

Thanks for giving {zellkonverter} a go! This error was caused by changes in the {cli} package v3.4.0. I have pushed a fix for this but it hasn't quite made it to Bioconductor yet. You should be able to install {zellkonverter} v1.6.5 in the next day or two which will resolve this issue.

In the meantime the simplest way to avoid this is to set verbose = FALSE. You could also try downgrading {cli} to version <= 3.4.0.

hoondy commented 1 year ago

@lazappi Thank you so much for the suggestion. I was pulling my hair for the past two days and I am glad there is a workaround for this. I will try this and close the thread if it works.

hoondy commented 1 year ago

Works great!

lazappi commented 1 year ago

{zellkonverter} v1.6.5 is now available from Bioconductor. The build report still shows v1.6.4 for some reason but it should work fine with verbose = TRUE if you install v1.6.5.