Skip to main content

OLE2 container

Status: Confirmed

Shimadzu .lcd and .qgd raw data files are standard Microsoft OLE2 (Compound File Binary Format, CFBF) containers. They can be read using standard libraries like Python's olefile or C's libgsf, without any Shimadzu-specific tooling - openszraw uses the Rust cfb crate for the same purpose.

General structure

Every file contains a File Property stream (XML metadata, typically a 4-byte little-endian length prefix followed by <?xml version="1.0"?>), plus one or more instrument-specific raw-data directories.

Instrument-specific directories

The raw mass-spectrometry data is stored in different root-level directories depending on the instrument family:

StorageFormatKey streams
GCMS Raw Data/.qgd GC-MSMS Raw Data, Spectrum Index, Retention Time, TIC Data
TTFL Raw Data/.lcd IT-TOFMS Raw Data, Data Index, Retention Time, TIC Data 0, Sum TIC Data
QTFL RawData/.lcd QTOF (9030 series)Centroid Data, Centroid Index, Centroid BPC, Centroid SumTIC, Retention Time
PDA 3D Raw Data/PDA / UV detector (either .lcd family)3D Raw Data, Wavelength Table, Status

Reader::open checks which of these storages is present to decide how to decode the file - see Format variants.

Metadata streams

The File Property stream is universally present across all instrument families and encoded as UTF-8 XML with a 4-byte size prefix. Other metadata streams such as 2D Data Item and 2D Data Item U (UTF-16LE) also carry XML.

No embedded SQLite database is used anywhere in these formats; all data is stored directly in binary OLE2 streams.

Acquisition start timestamp

.lcd/.qgd files don't carry the \x05SummaryInformation OLE2 property set that .wiff files use for this. Instead, Reader::open reads RunMetadata::start_timestamp from the CFBF container's own per-entry created timestamps ([MS-CFB] 2.6.4, exposed directly by the cfb crate) - specifically, the earliest non-zero one across the whole container, which LabSolutions writes within well under a second of run start for nearly every top-level storage. See Known limitations and the repository's docs/format/06-known-limitations.md section 9 for the corpus evidence.