Hello,
I wrote the function below and have the problem, that the "text" bit
returns
only a trimmed version (686 chars as far as I can see) of the content under
the "fetchPeaks" condition.
Any hunches why that might be?
Thanks for pointer, Joh
xmlEventParse(fileName,
list(
startElement=function(name, attrs){
if(name == "scan"){
if(.GlobalEnv$ms2Scan == TRUE & .GlobalEnv$scanDone == TRUE){
cat(.GlobalEnv$scanNum,"\n")
MakeSpektrumEntry()
}
.GlobalEnv$scanDone <- FALSE
.GlobalEnv$fetchPrecMz <- FALSE
.GlobalEnv$fetchPeaks <- FALSE
.GlobalEnv$ms2Scan <- FALSE
if(attrs[["msLevel"]] == "2"){
.GlobalEnv$ms2Scan <- TRUE
.GlobalEnv$scanNum <- as.integer(attrs[["num"]])
}
} else if(name == "precursorMz" & .GlobalEnv$ms2Scan == TRUE){
.GlobalEnv$fetchPrecMz <- TRUE
} else if(name == "peaks" & .GlobalEnv$ms2Scan == TRUE){
.GlobalEnv$fetchPeaks <- TRUE
}
},
text=function(text){
if(.GlobalEnv$fetchPrecMz == TRUE){
.GlobalEnv$precursorMz <- as.numeric(text)
.GlobalEnv$fetchPrecMz <- FALSE
}
if(.GlobalEnv$fetchPeaks == TRUE){
.GlobalEnv$peaks <- text
.GlobalEnv$fetchPeaks <- FALSE
.GlobalEnv$scanDone <- TRUE
}
}
)
)
> sessionInfo()
R version 2.9.0 beta (2009-04-03 r48277)
x86_64-pc-linux-gnu
locale:
LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=en_US.UTF-8;LC_ADDRESS=en_US.UTF-8;LC_TELEPHONE=en_US.UTF-8;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=en_US.UTF-8
attached base packages:
[1] splines stats graphics grDevices utils datasets methods
[8] base
other attached packages:
[1] caMassClass_1.6 MASS_7.2-46 digest_0.3.1 caTools_1.9
[5] bitops_1.0-4.1 rpart_3.1-43 nnet_7.2-46 e1071_1.5-19
[9] class_7.2-46 PROcess_1.19.1 Icens_1.15.2 survival_2.35-4
[13] RCurl_0.94-1 XML_2.3-0 rkward_0.5.0
loaded via a namespace (and not attached):
[1] tools_2.9.0
Hi Johannes I would "guess" that the trimming of the text occurs because you do not specify trim = FALSE in the call to xmlEventParse(). If you specify this, you might well get the results you expect. If not, can you post the actual file you are reading so we can reproduce your results. D. Johannes Graumann wrote:> Hello, > > I wrote the function below and have the problem, that the "text" bit returns > only a trimmed version (686 chars as far as I can see) of the content under > the "fetchPeaks" condition. > Any hunches why that might be? > > Thanks for pointer, Joh > > xmlEventParse(fileName, > list( > startElement=function(name, attrs){ > if(name == "scan"){ > if(.GlobalEnv$ms2Scan == TRUE & .GlobalEnv$scanDone == TRUE){ > cat(.GlobalEnv$scanNum,"\n") > MakeSpektrumEntry() > } > .GlobalEnv$scanDone <- FALSE > .GlobalEnv$fetchPrecMz <- FALSE > .GlobalEnv$fetchPeaks <- FALSE > .GlobalEnv$ms2Scan <- FALSE > if(attrs[["msLevel"]] == "2"){ > .GlobalEnv$ms2Scan <- TRUE > .GlobalEnv$scanNum <- as.integer(attrs[["num"]]) > } > } else if(name == "precursorMz" & .GlobalEnv$ms2Scan == TRUE){ > .GlobalEnv$fetchPrecMz <- TRUE > } else if(name == "peaks" & .GlobalEnv$ms2Scan == TRUE){ > .GlobalEnv$fetchPeaks <- TRUE > } > }, > text=function(text){ > if(.GlobalEnv$fetchPrecMz == TRUE){ > .GlobalEnv$precursorMz <- as.numeric(text) > .GlobalEnv$fetchPrecMz <- FALSE > } > if(.GlobalEnv$fetchPeaks == TRUE){ > .GlobalEnv$peaks <- text > .GlobalEnv$fetchPeaks <- FALSE > .GlobalEnv$scanDone <- TRUE > } > } > ) > ) > >> sessionInfo() > R version 2.9.0 beta (2009-04-03 r48277) > x86_64-pc-linux-gnu > > locale: > LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=en_US.UTF-8;LC_ADDRESS=en_US.UTF-8;LC_TELEPHONE=en_US.UTF-8;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=en_US.UTF-8 > > attached base packages: > [1] splines stats graphics grDevices utils datasets methods > [8] base > > other attached packages: > [1] caMassClass_1.6 MASS_7.2-46 digest_0.3.1 caTools_1.9 > [5] bitops_1.0-4.1 rpart_3.1-43 nnet_7.2-46 e1071_1.5-19 > [9] class_7.2-46 PROcess_1.19.1 Icens_1.15.2 survival_2.35-4 > [13] RCurl_0.94-1 XML_2.3-0 rkward_0.5.0 > > loaded via a namespace (and not attached): > [1] tools_2.9.0 > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Hi Duncan, Thanks for your thoughts. "trim=FALSE" does not fix my issues, so I attach pared down versions of my script and data file. Thanks for any further hint. Joh Duncan Temple Lang wrote:> Hi Johannes > > I would "guess" that the trimming of the text occurs because > you do not specify trim = FALSE in the call to xmlEventParse(). > If you specify this, you might well get the results you expect. > If not, can you post the actual file you are reading so we can > reproduce your results. > > D. > > Johannes Graumann wrote: >> Hello, >> >> I wrote the function below and have the problem, that the "text" bit >> returns only a trimmed version (686 chars as far as I can see) of the >> content under the "fetchPeaks" condition. >> Any hunches why that might be? >> >> Thanks for pointer, Joh >> >> xmlEventParse(fileName, >> list( >> startElement=function(name, attrs){ >> if(name == "scan"){ >> if(.GlobalEnv$ms2Scan == TRUE & .GlobalEnv$scanDone == TRUE){ >> cat(.GlobalEnv$scanNum,"\n") >> MakeSpektrumEntry() >> } >> .GlobalEnv$scanDone <- FALSE >> .GlobalEnv$fetchPrecMz <- FALSE >> .GlobalEnv$fetchPeaks <- FALSE >> .GlobalEnv$ms2Scan <- FALSE >> if(attrs[["msLevel"]] == "2"){ >> .GlobalEnv$ms2Scan <- TRUE >> .GlobalEnv$scanNum <- as.integer(attrs[["num"]]) >> } >> } else if(name == "precursorMz" & .GlobalEnv$ms2Scan == TRUE){ >> .GlobalEnv$fetchPrecMz <- TRUE >> } else if(name == "peaks" & .GlobalEnv$ms2Scan == TRUE){ >> .GlobalEnv$fetchPeaks <- TRUE >> } >> }, >> text=function(text){ >> if(.GlobalEnv$fetchPrecMz == TRUE){ >> .GlobalEnv$precursorMz <- as.numeric(text) >> .GlobalEnv$fetchPrecMz <- FALSE >> } >> if(.GlobalEnv$fetchPeaks == TRUE){ >> .GlobalEnv$peaks <- text >> .GlobalEnv$fetchPeaks <- FALSE >> .GlobalEnv$scanDone <- TRUE >> } >> } >> ) >> ) >> >>> sessionInfo() >> R version 2.9.0 beta (2009-04-03 r48277) >> x86_64-pc-linux-gnu >> >> locale: >>LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=en_US.UTF-8;LC_ADDRESS=en_US.UTF-8;LC_TELEPHONE=en_US.UTF-8;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=en_US.UTF-8>> >> attached base packages: >> [1] splines stats graphics grDevices utils datasets methods >> [8] base >> >> other attached packages: >> [1] caMassClass_1.6 MASS_7.2-46 digest_0.3.1 caTools_1.9 >> [5] bitops_1.0-4.1 rpart_3.1-43 nnet_7.2-46 e1071_1.5-19 >> [9] class_7.2-46 PROcess_1.19.1 Icens_1.15.2 survival_2.35-4 >> [13] RCurl_0.94-1 XML_2.3-0 rkward_0.5.0 >> >> loaded via a namespace (and not attached): >> [1] tools_2.9.0 >> >> ______________________________________________ >> R-help at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html and provide commented, >> minimal, self-contained, reproducible code. > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html and provide commented, > minimal, self-contained, reproducible code.