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. If any scan fails to decode, construction raises RuntimeError; the streaming opensxraw.iter_spectra(path, sample=None) raises from the iteration step that reaches the failing scan. 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 IndexError 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. m/z on TripleTOF/ZenoTOF files comes from a per-file linear calibration and is not accurate; on QTRAP files it is raw bin values. MS2 precursor m/z is populated on DDA files from DDERealTimeDataEx; 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​