This vignette is based on
readJDX version 0.6.4.
The JCAMP-DX format was developed as an manufacturer-independent means of sharing spectroscopic data. The standard is described in a series of publications (McDonald and Wilks 1988; Grasselli 1991; A. Davies and Lampen 1993; Lampen et al. 1994, 1999; Baumbach et al. 2001; Cammack et al. 2006; Woollett et al. 2012). There is a recent overview of the standard (A. N. Davies et al. 2022). JCAMP-DX was developed during a time when data storage was expensive, and hence makes extensive use of compression schemes. The original application was to IR spectroscopy, but the standard has evolved over time to accommodate other spectroscopies.
JCAMP-DX files consist of two parts:
The JCAMP-DX standard allows a lot of flexibility and instrument manufacturers have written widely varying export functions. Some of the challenges in reading a JCAMP-DX file include:
readJDX and will not be supported in the future.
splitMultiblockDX can separate these compound files into separate files that can be read by
readJDX is geared toward raw spectral data. Therefore variable lists formats representing derived information like PEAK ASSIGNMENTS are not supported (but your pull requests are welcomed!).
readJDX tries its best to deal with all these options. If you have a file that you believe should be supported but gives an error, please file an issue at GitHub. Be sure to attach the file that is giving you problems.
readJDX is tested against a large collection of files with varying formats. A few of these files were obtained locally. Others were collected from publically available sources (e.g. www.jcamp-dx.org). These files are not included with the package to save space, and in addition, while they are publically available, for many of them the licensing status is unclear (i.e. the OWNER entry).
The JCAMP standard requires a number of checks on the integrity of the data decompression process.
readJDX implements most of these either directly or indirectly. Verification is important, and we have found JCAMP files that were not written correctly in the process of checking integrity. For details about how data decompression is checked, please see the original source files.