# ANDI/MS NetCDF > **Status:** Detected / refused · **Vendor:** ASTM / vendor-neutral · **Extensions:** `.cdf`, `.nc` ANDI/MS is the ASTM E1947 chromatography and mass-spectrometry NetCDF profile. nirs4all-formats recognises it for disambiguation but **refuses it on read**: it is not a NIRS / optical-spectroscopy interchange format. Its variables describe scan acquisition time, `m/z` values and ion intensities rather than a wavelength-indexed molecular spectrum. ## Instruments & software Exported by GC-MS / LC-MS acquisition and processing software as a vendor-neutral exchange container following the ASTM E1947 (ANDI/MS) convention, stored in classic NetCDF (`CDF\x01`/`\x02`/`\x05`) or HDF5-backed NetCDF4. ## File structure A NetCDF container whose standard ANDI/MS variables identify it: detection keys are `scan_acquisition_time`, `total_intensity`, `mass_values`, `intensity_values` and `point_count`. The shared NetCDF reader handles both the classic-CDF and the HDF5-backed NetCDF4 encodings. ## Why it is refused / where to go instead The NetCDF reader sniffs `.nc` / `.cdf` files, and when at least four ANDI/MS marker variables are present it tags the candidate `andi-ms-netcdf` at `Confidence::Definite` so dispatch routes here rather than to the generic NIRS NetCDF path. On read it returns a specific error naming the detected variables and pointing to a chromatography/MS toolkit: - **`pyteomics.openms.ANDIMS`** — ANDI/MS reader. - **`PyMassSpec`** — GC-MS analysis in Python. - **`pyOpenMS`** — full OpenMS bindings. The reader does **not** coerce chromatography/MS scans into `SpectralRecord`. If ANDI/MS support is ever needed it should live behind an explicit adjacent MS/chromatography model, or an adapter that converts a deliberate, user-selected signal into a NIRS-compatible table. ## Variants & support status | Variant | Status | Notes | |---|---|---| | Classic NetCDF ANDI/MS (`CDF` magic) | Detected / refused | Sniffed from head markers; refused on read. | | HDF5-backed NetCDF4 ANDI/MS | Detected / refused | Root-group datasets walked; same refusal. | ## Limitations & known gaps - No decoding of any kind — this is a deliberate refusal, kept distinct from the generic NIRS NetCDF reader so a chromatography file is never silently parsed as an optical spectrum. ## Reference readers `pyteomics`, `PyMassSpec` and `pyOpenMS` are the recommended tools and the references named in the refusal message. ## Samples & validation The fixture under `samples/andi_ms/` asserts the refusal behaviour: | Fixture | Behaviour | Detection markers | |---|---|---| | `samples/andi_ms/gc01_0812_066.cdf` | refused | `scan_acquisition_time`, `total_intensity`, `mass_values`, `intensity_values`, `point_count` |