Skip to main content

Python API

The opensxraw wheel exposes a small, eager reader built on the same Rust core as the Rust reader. Install it with pip install opensxraw (or pip install openmassspec[sciex] for the umbrella).

import opensxraw

reader = opensxraw.RawReader("sample.wiff")

RawReader expects the paired .wiff.scan file to sit alongside the .wiff file (with .scan appended to the filename), exactly like the Rust reader. Opening it decodes every spectrum up front into memory, so construction is where the work happens and subsequent access is cheap. For streaming access over large acquisitions, use the Rust reader's iter_spectra instead.

RawReader

MemberTypeDescription
RawReader(path)constructorOpen the .wiff/.wiff.scan pair at path and decode it
scan_countintNumber of decoded spectra
read_spectrum(index)SpectrumThe spectrum at zero-based index (raises if out of range)
print(reader.scan_count)
for i in range(reader.scan_count):
spectrum = reader.read_spectrum(i)
...

Spectrum

AttributeTypeDescription
mzlist[float]m/z values (float64)
intensitylist[float]Intensities (float32)
ms_levelintMS level (1 for MS1, 2+ for MS/MS)
retention_time_secfloatRetention time in seconds

len(spectrum) returns the peak count. Note the m/z values are currently raw, uncalibrated time-bin integers, and MS2 precursor m/z is not yet populated; see Scan data for the details and the current known limitations.

spectrum = reader.read_spectrum(0)
print(spectrum.ms_level, spectrum.retention_time_sec, len(spectrum))
mz, intensity = spectrum.mz, spectrum.intensity

Next