Thermo Galactic GRAMS SPC files parser.
Maintained by Zakodium
$ npm i spc-parser
import { readFileSync } from 'fs';
import { join } from 'path';
import { parse } from 'spc-parser';
const arrayBuffer = readFileSync(join(__dirname, 'spectrum.spc'));
const result = parse(arrayBuffer);
// result is a JSON object containing everything that was parsed
SPC is a file format used in the GRAMS Software Suite for storing all kinds of spectroscopic data, including infrared spectra, Raman spectra and UV/VIS spectra. The data is stored in binary with some parts encoded in ASCII. As such, the file must be viewed in either a hex editor or any compatible spectroscopy software.
An SPC file is organized in three blocks:
The File Header contains information about the whole file, such as how values are read, the type of format (Old, New LSB, New MSB), the structure of the data block (XY, XYY or XYXY) and the number of spectra.
The Data block contains the spectrum data and is composed of a subheader for each spectrum, the X values before the subheader if XY or XYY, else after each subheader if XYXY. After the subheader and X values come the Y values, which are read according to the method determined in the Main Header.
The Log block contains miscellaneous information that varies for each file, with a part written in ASCII and another one in binary.
Useful files for the specification for the spc-format can be found at the docs folder in the Github repo