easygsea / eVITTA

eVITTA: an easy Visualization and Inference Toolbox for Transcriptome Analysis
https://tau.cmmt.ubc.ca/eVITTA
GNU General Public License v2.0
12 stars 1 forks source link

easyVizR: infinite loop when rendering filtering results in step 2.Apply Filters #3

Open buihoangnam1988 opened 1 year ago

buihoangnam1988 commented 1 year ago

Thank you for developing these useful and beautiful tools.

Actually I got into this problem when trying to run easyVizR on my R Studio server, then found the same issue on my local PC using R Studio. Yes, I must confirm following things: -This bug never happens on the home server at https://tau.cmmt.ubc.ca/eVITTA/easyVizR/ -This bug happened on my Shiny server (R 4.2.0) and my R Studio (R 4.2.3 & R 4.0.3) -I used the demo data provided at https://tau.cmmt.ubc.ca/eVITTA/easyVizR/

This is how the bug looks like image

After I inspected the warning box at the top-right, I found its id is f_filtering_ui. I added one debugging script as follows: image

Here is what I saw at the console box in R Studio image

I guess there is recursive update to one of the reactive variables referred inside the rendering function of f_filtering_ui. Hope you can help me solve this issue.

Thank you!

easygsea commented 1 year ago

Hello, thanks for contacting. Could you please check again? We resolved some merge conflicts.

buihoangnam1988 commented 1 year ago

Thank you @easygsea for your quick response.

I checked the new commit a799ccc but the bug is not fixed yet.

Although I read the documentation, I still want to make sure if I need to download any DB in order to run easyVizR?

judithayan commented 1 year ago

Thanks for bringing the issue to our attention. I did some testing on win and macOS with separate R installations, and it worked on the win but not mac. I think the issue is related to the reactive n_ins_gls() and the renderUI function f_filtering_ui. The former is a dynamic gene list and the latter is a dynamic UI based on it, and they are supposed to talk to each other through some reactive magic. At some point something changed and caused an infinite loop to occur when R attempts to draw the UI.

I believe this is due to package updates, as I was able to "cure" the problem by reinstalling older versions of most packages (listed in the supplementary of the 2021 publication).

Unfortunately it's difficult to track down which package caused the problem, and there seems to be no simple fix (as it's likely due to some obscure HTML/shiny quirks).

Here is the list of packages and versions that worked for me: evittaPackages.csv

If you don't mind the nuclear option of reinstalling all the packages, here is my code to revert the packages to their older listed versions. There might still be some dependencies that require additional fixing, but it should hopefully work.

# read in list of packages
evittaPkgs <- read.csv("evittaPackages.csv")

# detect version of packages installed in current environment; append to list
evittaPkgs$InstalledVer <- unlist(lapply(evittaPkgs$Tool, function(x){
  as.character(packageVersion(x))
}))
print(evittaPkgs)

# list packages with wrong version installed
updatePkgs <- evittaPkgs[evittaPkgs$Version != evittaPkgs$InstalledVer, c("Tool","Version","InstalledVer","CRAN")]
updatePkgs <- updatePkgs[nchar(updatePkgs$CRAN)>0,]
print(updatePkgs)

# batch install unmatched packages
# RESTART R BEFORE RUNNING
for (i in 1:nrow(updatePkgs)){
  print(paste0("INSTALLING PACKAGE ",updatePkgs$Tool[[i]], " version ",updatePkgs$Version[[i]]))
  packageurl <- updatePkgs$CRAN[[i]]
  install.packages(packageurl, repos=NULL, type="source")
}

If you somehow track down the particular package that caused the problem, please let us know!

Judith

judithayan commented 1 year ago

Although I read the documentation, I still want to make sure if I need to download any DB in order to run easyVizR?

If you are only looking to use easyVizR, the dependencies are listed in easyVizR/global.R. You shouldn't need any gene set databases to run it.

Let me know if you have more questions.

buihoangnam1988 commented 1 year ago

Thank you for the hints about packages' versions. I will have a check on this.