Nothing
openMSfile <- function(filename,
backend = NULL,
verbose = FALSE) {
if (missing(filename))
stop("'filename' is missing")
if (length(filename) != 1)
stop("'filename' has to be of length 1")
if (!file.exists(filename))
stop("File ", filename, " not found")
filename <- path.expand(filename)
if (is.null(backend))
backend <- .mzRBackend(filename)
backend <- match.arg(backend, c("pwiz", "Ramp", "netCDF"))
if (backend == "Ramp") {
rampModule <- new( Ramp )
rampModule$open(filename, declaredOnly = TRUE)
if (!rampModule$OK()) {
stop("Unable to create valid cRamp object.")
}
return(new("mzRramp",
backend=rampModule,
fileName=filename))
} else if (backend == "netCDF") {
if (netCDFIsFile(filename)) {
ncid <- netCDFOpen(filename)
if (!is.null(attr(ncid, "errortext"))) {
stop(attr(ncid, "errortext"))
}
return(new("mzRnetCDF",
backend=ncid,
fileName=filename))
} else {
stop("Unable to open netCDF file.")
}
} else if (backend == "pwiz") {
pwizModule <- new(Pwiz)
tryCatch(pwizModule$open(filename), error = function(e) {
stop("Can not open file ", filename, "! Original error was: ", e,
call. = FALSE)
})
return(new("mzRpwiz",
backend=pwizModule,
fileName=filename))
} else {
stop("No valid backend", backend)
}
}
#' @title Define the type of mzR backend to use based on the file name or
#' content
#'
#' @description Simple helper to define the mzR backend that should/can be used
#' to read the file.
#'
#' @param x \code{character(1)} representing the file name.
#'
#' @return A \code{character(1)} with the name of the backend (either
#' \code{"netCDF"}, \code{"Ramp"} or \code{"pwiz"}.
#'
#' @author Johannes Rainer, Sebastian Gibb
#'
#' @noRd
.mzRBackend <- function(x = character()) {
if (length(x) != 1)
stop("parameter 'x' has to be of length 1")
## Use if/else conditions based on a suggestion from sgibb to avoid loops.
if (grepl("\\.mzml($|\\.)|\\.mzxml($|\\.)", x, ignore.case = TRUE)) {
return("pwiz")
} else if (grepl("\\.mzdata($|\\.)", x, ignore.case = TRUE)) {
return("Ramp")
} else if (grepl("\\.cdf($|\\.)|\\.nc($|\\.)", x, ignore.case = TRUE)) {
return("netCDF")
} else
suppressWarnings(.mzRBackendFromContent(x))
}
#' Determine the backend from the (first few lines of the) file content.
#'
#' @author Johannes Rainer
#'
#' @noRd
.mzRBackendFromContent <- function(x = character()) {
if (length(x) != 1)
stop("parameter 'x' has to be of length 1")
suppressWarnings(
first_lines <- readLines(x, n = 4)
)
if (any(grepl("<mz[X]?ML", first_lines))) {
return("pwiz")
} else if (any(grepl("<mzData", first_lines))) {
return("Ramp")
} else if (rawToChar(readBin(x, raw(), n = 10)[2:4]) == "HDF") {
return("pwiz")
} else if (substr(readBin(x, character(), n = 1), 1, 3) == "CDF") {
return("netCDF")
} else
stop("Could not determine file type for ", x)
}
openIDfile <- function(filename, verbose = FALSE) {
if (!file.exists(filename))
stop("File ",filename," not found.\n")
filename <- path.expand(filename)
identModule <- new(Ident)
identModule$open(filename)
return(new("mzRident",
backend=identModule,
fileName=filename))
}
setMethod("writeMSData", signature(object = "list", file = "character"),
function(object, file, header, backend = "pwiz",
outformat = "mzml", rtime_seconds = TRUE,
software_processing) {
backend <- match.arg(backend)
## supp_formats <- c("mzml", "mgf", "mzxml")
supp_formats <- c("mzml", "mzxml")
outformat <- match.arg(tolower(outformat), supp_formats)
if (missing(header))
stop("'header' is required")
## Other checks:
header <- .validateHeader(header)
if (is(header, "character"))
stop("Error checking parameter 'header': ", header)
is_ok <- .validSpectrumList(object)
if (is(is_ok, "character"))
stop("Error checking parameter 'object'. First error was: ", is_ok)
## Check software_processing:
software_processing <- .check_software_processing(software_processing)
## Add mzR processing:
mzR <- c("mzR", paste(packageVersion("mzR"), collapse = "."),
"MS:1002869")
if (outformat == "mzml")
mzR <- c(mzR, "MS:1000544")
if (outformat == "mzxml")
mzR <- c(mzR, "MS:1000545")
software_processing <- c(software_processing, list(mzR))
if (backend == "pwiz") {
if (outformat == "mzxml" & any(header$injectionTime > 0))
warning("mzXML export does not support writing ion injection time")
if (outformat == "mzxml" & any(!is.na(header$filterString)))
warning("mzXML export does not support writing filter string")
pwizModule <- new(Pwiz)
pwizModule$writeSpectrumList(file, outformat,
header, object, rtime_seconds,
software_processing)
}
})
copyWriteMSData <- function(object, file, original_file, header,
backend = "pwiz",
outformat = "mzml",
rtime_seconds = TRUE,
software_processing) {
backend <- match.arg(backend)
## supp_formats <- c("mzml", "mgf", "mzxml")
supp_formats <- c("mzml", "mzxml")
outformat <- match.arg(tolower(outformat), supp_formats)
if (missing(file))
stop("'file' is a required parameter")
if (missing(original_file))
stop("'original_file' is a required parameter")
if (missing(header) | missing(object))
stop("'header' and 'object' are required")
if (!file.exists(original_file))
stop("Original file ", original_file, " not found")
## Other checks:
header <- .validateHeader(header)
if (is(header, "character"))
stop("Error checking parameter 'header': ", header)
is_ok <- .validSpectrumList(object)
if (is(is_ok, "character"))
stop("Error checking parameter 'object'. First error was: ", is_ok)
## Check software_processing:
software_processing <- .check_software_processing(software_processing)
## Add mzR processing:
mzR <- c("mzR", paste(packageVersion("mzR"), collapse = "."), "MS:1002869")
if (outformat == "mzml")
mzR <- c(mzR, "MS:1000544")
if (outformat == "mzxml")
mzR <- c(mzR, "MS:1000545")
software_processing <- c(software_processing, list(mzR))
if (backend == "pwiz") {
if (outformat == "mzxml" & any(header$injectionTime > 0)) {
warning("mzXML export does not support writing ion injection time")
header$injectionTime = 0
}
if (outformat == "mzxml" & any(!is.na(header$filterString))) {
warning("mzXML export does not support writing filter string")
header$filterString <- NA_character_
}
pwizModule <- new(Pwiz)
pwizModule$copyWriteMSfile(file, outformat, original_file,
header, object, rtime_seconds,
software_processing)
}
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.