Metabolomics Society Forum

Software => R => XCMS => Topic started by: fmichopo on November 30, 2013, 01:36:31 PM

Title: XCMS error after peak detection
Post by: fmichopo on November 30, 2013, 01:36:31 PM
Hi guys

I try to process a LC_MS data set with XCMS using the so-called betonbox. I have used this approach with many data sets without any problem. With this particular data set the mining stops after the peak detection giving me the following error

Error in checkForRemoteErrors(val) :
  2 nodes produced errors; first error: m/z sort assumption violated ! (scan 1636, p 283, current 69.8206 (I=2.03), last 69.8243)

I have attached a copy of the data processing parameteres i use. I know some of them may sound extreme for U(H)PLC data but I tried so many parametrs and alwasy get the same error message

Does anyone has an idea or a possible solution to solve this problem

Thanks
Filippos
Title: Re: XCMS error after peak detection
Post by: sneumann on December 01, 2013, 03:36:27 PM
Hi,

this most likely has to do with the raw data conversion,
I guess you have a waters instrument ?
Check the forum for "m/z sort assumption violated"

Yours,
Steffen
Title: Re: XCMS error after peak detection
Post by: fmichopo on December 09, 2013, 08:41:38 AM
Hi Stephen

Thanks for the reply. Yes the data has been created on a Waters system. I will follow the previous related posts and seek a solution

Regards
Filippos
Title: Re: XCMS error after peak detection
Post by: fmichopo on December 12, 2013, 02:55:14 PM
Hi Steffen

I tried the code below, found on an earlier post by hpbenton to correct the problem I described earlier. It seems the code did not really do anything and the errror message is still there.

checkAllcdfs<-function(Ftype="mzXML", nSlaves=1){
  AllCDFs<-list.files(recursive=TRUE, pattern=Ftype, ignore.case=TRUE, full.names=TRUE)
  if(nSlaves >1){
      if(require(snow)){
        cl <- makeCluster(nSlaves, type = "SOCK")
      }
      clusterEvalQ(cl, library(xcms))
      unlist(clusterApply(cl, AllCDFs, checkCDFfile))
      stopCluster(cl)
  } else{
      sapply(AllCDFs, checkCDFfile)
      cat("n")
  }
}

checkCDFfile<-function(file, type=".mzXML"){
  cat("n")
  cat(paste("Loading File:", file, sep=""))
  xr<-xcmsRaw(file, profstep=0)
  for(i in 1:length(xr@scanindex)){
      scan<-getScan(xr, scan=i)
      if(is.unsorted(scan[,"mz"]) == TRUE){
        cat(" x ")
        newfile<-sub(type, "-Fixed.mzdata", file, ignore.case=TRUE)
        write.mzdata(xr, newfile)
        file.copy(file, sub(type, ".OLD", file, ignore.case=TRUE))
        unlink(file)
        rm(list=ls())
        gc()
        return(1)
      }
      if(i == length(xr@scanindex)){
        cat(" O ")
        rm(list=ls())
        gc()
        return(0)
      }
  }
}

Many thanks
Filippos