sneumann / xcms

This is the git repository matching the Bioconductor package xcms: LC/MS and GC/MS Data Analysis
Other
178 stars 81 forks source link

Error in R_nc4_open: Too many open files and fail to load xcms package v 3.4.5 #595

Open lysoifer opened 2 years ago

lysoifer commented 2 years ago

I am running a for loop to extract data from .nc files for a series of points using the mcera5 package. However, after several iterations, I am getting the following error: "Error in R_nc4_open: Too many files".

for (i in c(1:length(pai_tiles))) {
  ll = latlongfromraster(pai_tiles[[i]])
  weath = list()
  for (yr in c(1:length(my_nc))) {
    #extract data from ERA5
    nc = my_nc[yr]
    w = extract_clim(nc = nc,
                     long = ll$long, lat = ll$lat,
                     start_time = st_times[[yr]], end_time = en_times[[yr]])
    weath[[yr]] = w
    #on.exit(close(nc))
  }
  #bind together weather dataframes for all years
  weath.df = rbindlist(weath)
  weather[[i]] = weath.df
  rm(weath, weath.df)
}

I found the following thread regarding this same error - [sneumann/mzR/issues/185]. I followed the recommendation devtools::install_github("sneumann/xcms", ref = "RELEASE_3_8")

However, when I try to install this version of the xcms R package, it fails to load

Error: objects 'Chromatograms', 'Spectra' are not exported by 'namespace:MSnbase'
Execution halted
ERROR: lazy loading failed for package 'xcms'
 removing 'C:/Users/lsoif/OneDrive/Documents/R/win-library/4.1/xcms'
 restoring previous 'C:/Users/lsoif/OneDrive/Documents/R/win-library/4.1/xcms'
Warning message:
In i.p(...) :
  installation of package ‘C:/Users/lsoif/AppData/Local/Temp/Rtmpk7NKSY/file505035e22126/xcms_3.4.5.tar.gz’ had non-zero exit status

I am using R v 4.1.1. Do you have any suggestions on how to install xcms version 3.4.5 or fix the 'too many files' error?

Thanks.

jorainer commented 2 years ago

The fix was added to packages from Bioconductor release 3.8 and should be in there since. So, no need to specify ref = "RELEASE_3_8" in the install_github - actually, it's recommended to install xcms using BiocManager::install("xcms") instead (in case you might need to install.packages("BiocManager") first).

Also note that you might fix your error by specicially closing opened CDF files (i.e. call close(nc) in each loop).