The writeMSData,MSnExp and writeMSData,OnDiskMSnExp saves the content of a MSnExp or OnDiskMSnExp object to MS file(s) in either mzML or mzXML format.

# S4 method for MSnExp,character
  outformat = c("mzml", "mzxml"),
  merge = FALSE,
  verbose = isMSnbaseVerbose(),
  copy = FALSE,
  software_processing = NULL



OnDiskMSnExp or MSnExp object.


character with the file name(s). Its length has to match the number of samples/files of x.


character(1) defining the format of the output files. Default output format is "mzml".


logical(1) whether the data should be saved into a single mzML file. Default is merge = FALSE, i.e. each sample is saved to a separate file. Note: merge = TRUE is not yet implemented.


logical(1) if progress messages should be displayed.


logical(1) if metadata (data processings, original file names etc) should be copied from the original files. See details for more information.


optionally provide specific data processing steps. See documentation of the software_processing parameter of mzR::writeMSData().


The writeMSData method uses the proteowizard libraries through the mzR package to save the MS data. The data can be written to mzML or mzXML files with or without copying additional metadata information from the original files from which the data was read by the readMSData() function. This can be set using the copy parameter. Note that copy = TRUE requires the original files to be available and is not supported for input files in other than mzML or mzXML format. All metadata related to the run is copied, such as instrument information, data processings etc. If copy = FALSE only processing information performed in R (using MSnbase) are saved to the mzML file.

Currently only spectrum data is supported, i.e. if the original mzML file contains also chromatogram data it is not copied/saved to the new mzML file.


General spectrum data such as total ion current, peak count, base peak m/z or base peak intensity are calculated from the actual spectrum data before writing the data to the files.

For MSn data, if the OnDiskMSnExp or MSnExp does not contain also the precursor scan of a MS level > 1 spectrum (e.g. due to filtering on the MS level) precursorScanNum is set to 0 in the output file to avoid potentially linking to a wrong spectrum.

The exported mzML file should be valid according to the mzML 1.1.2 standard. For exported mzXML files it can not be guaranteed that they are valid and can be opened with other software than mzR/MSnbase.


Johannes Rainer