Closed drag05 closed 4 years ago
Hi, thanks for reporting. Does the same happen for any mzML file in the msdata
BioC package ? If yes, seems to be caused by the file. Is the Proteowizard msaccess (I think) tool successfully read the file '000_select.mzXML' ? If yes, it is back to mzR :-(. Can you then attach '000_select.mzXML'
to this issue if it is small enough ? Yours, Steffen
I can confirm that the msdata
files work fine (tested some of them earlier this week in a course). I am happy to test the 000_select.mzXML
file when we get it.
Thank you for the prompt response!
The data was read correctly and peaks()
, spectra()
, header()
etc. worked.
Also, the chromatogram()
examples given in the mzR manual work well.
This data however, failed on R Console as well as on R Studio.
Please find the file attached
Indeed
> library("mzR")
Loading required package: Rcpp
> ms <- openMSfile("000_select.mzXML")
> ms
Mass Spectrometry file handle.
Filename: 000_select.mzXML
Number of scans: 7
> length(ms)
[1] 7
> header(ms)
*** output flushed ***
> dim(header(ms))
[1] 7 31
> str(peaks(ms))
List of 7
$ : num [1:686, 1:2] 302 303 305 306 307 ...
$ : num [1:910, 1:2] 300 301 302 303 304 ...
$ : num [1:1015, 1:2] 301 301 302 303 305 ...
$ : num [1:1171, 1:2] 300 301 302 303 304 ...
$ : num [1:1138, 1:2] 300 301 302 302 303 ...
$ : num [1:1041, 1:2] 300 301 302 303 304 ...
$ : num [1:1079, 1:2] 300 302 304 308 310 ...
> chromatogram(ms)
*** caught segfault ***
address (nil), cause 'memory not mapped'
Traceback:
1: .External(list(name = "CppMethod__invoke_notvoid", address = <pointer: 0x55d0e2380190>, dll = list(name = "Rcpp", path = "/home/lgatto/R/x86_64-pc-linux-gnu-library/3.6/Rcpp/libs/Rcpp.so", dynamicLookup = TRUE, handle = <pointer: 0x55d0e3d04360>, info = <pointer: 0x55d0e113e970>), numParameters = -1L), <pointer: 0x55d0e2a2e390>, <pointer: 0x55d0e4935fd0>, .pointer)
2: object@backend$getLastChrom()
3: nChrom(object)
4: .local(object, ...)
5: chromatogram(ms)
6: chromatogram(ms)
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection:
The file contains only 7 spectra and if it was modified manually, it might actually not be valid. Note that using mscat
(from proteowizard) works, which is compatible with what we have in R.
This was done with
> sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.4 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=fr_FR.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=fr_FR.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] mzR_2.20.0 Rcpp_1.0.3
loaded via a namespace (and not attached):
[1] compiler_3.6.2 ProtGenerics_1.19.3 tools_3.6.2
[4] parallel_3.6.2 Biobase_2.46.0 codetools_0.2-16
[7] ncdf4_1.17 BiocGenerics_0.32.0
@lgatto
This is the warning message I get when loading mzR:
> require(mzR)
Loading required package: mzR
Loading required package: Rcpp
Warning message:
In fun(libname, pkgname) :
mzR has been built against a different Rcpp version (1.0.2)
than is installed on your system (1.0.3). This might lead to errors
when loading mzR. If you encounter such issues, please send a report,
including the output of sessionInfo() to the Bioc support forum at
https://support.bioconductor.org/. For details see also
https://github.com/sneumann/mzR/wiki/mzR-Rcpp-compiler-linker-issue.
The issue could be the Rcpp version. Would this mean that the mzR will be updated soon?
Also,
> sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
etc.
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] mzR_2.18.1 Rcpp_1.0.3
loaded via a namespace (and not attached):
[1] compiler_3.6.2 ProtGenerics_1.16.0 parallel_3.6.2
[4] Biobase_2.44.0 codetools_0.2-16 ncdf4_1.17
[7] BiocGenerics_0.30.0
Thank you!
@lgatto
Also: why don't I get the message
*** caught segfault ***
address (nil), cause 'memory not mapped'
before R crashes? In my case R just turns off.
Is it because of Rcpp version?
Thank you!
You can ignore the warning, it has nothing to do with the error. I don't know why you don't see the same message - possibly a Windows vs linux difference.
@lgatto That's exactly what I did, ignoring the warning.
Now, regarding the message:
could it be that the message is OS - related? I would have thought it was more C/C++ related as it mentions memory mapping, with R being OS-independent and all … The term nil
is discussed here
for example: [https://stackoverflow.com/questions/1683608/c-nil-vs-null]()
Hi, just realised this is mzXML. Can you convert the original file to mzML instead ?
I have no idea whether we support chromatogram()
stuff for mzXML in the first place.
Yours, Steffen
It looks indeed as if mzR::chromatogram
doesn't check chromatographic data exists in the file, and then crashes if there's none. But at least, after converting to mzML
, there's no seg fault:
> ms <- openMSfile("~/Downloads/out/000.mzML")
> ms
Mass Spectrometry file handle.
Filename: 000.mzML
Number of scans: 7
> chromatogram(ms)
Error in .local(object, ...) : Index out of bound [1:0].
The solution to this is to use MSnbase
.
> library(MSnbase)
> rw <- readMSData("~/Downloads/out/000.mzML", mode = "onDisk")
> chr <- chromatogram(rw)
> chr
Chromatograms with 1 row and 1 column
000.mzML
<Chromatogram>
[1,] length: 7
phenoData with 1 variables
featureData with 1 variables
> plot(chr)
> rw <- readMSData("~/Downloads/000_select.mzXML", mode = "onDisk")
> chr <- chromatogram(rw)
> chr
Chromatograms with 1 row and 1 column
000_select.mzXML
<Chromatogram>
[1,] length: 7
phenoData with 1 variables
featureData with 1 variables
> plot(chr)
@sneumann, @lgatto:
Funny because the aforementioned book uses mzR
to read the file.
I quote from page 247 of this book:
"The mzR package (Chambers et al. 2012) from Bioconductor contains parsers for netCDF, mzXML, mzData, and mzML file formats"
while Bioconductor is in agreement:
"mzR ... comes with a wrapper for the ISB random access parser for mass spectrometry mzXML, mzData and mzML files"
To be fair, the book's Authors go as far as plotting peaks
objects without venturing into chromatograms
. Maybe they leave it for later chapters.
So, what could be the solution to this beside using another package or converting the data format?
Thank you!
Well, firstly the ISB parser is outdated - mzR
has switched to proteowizard to parse the data.
The solution is to use MSnbase
, which uses mzR
under the hood.
OK! Thank you! I'll close this issue now.
R (v.3.6.2) consistently crashes with no error message when using any of the
chromatogram()
,nChrom()
, ortic()
functions onopenMSfile
object.Example:
The "000_select.mzXML" data is part of book "Ortutay, Ortutay - Molecular Data Analysis Using R" datasets.