convert-to-jcamp

convert-to-jcamp

Convert strings into JCAMP.

Zakodium logo

Maintained by Zakodium

NPM version build status Test coverage npm download DOI

$ npm install convert-to-jcamp

const { fromVariables } = require('convert-to-jcamp');
const variables = {
x: {
data: [1, 2, 3, 4],
label: 'x value',
units: 'x unit',
isDependent: false,
},
y: { data: [2, 3, 4, 5], label: 'y value', units: 'y unit' },
};

const jcamp = fromVariables(variables, {
forceNtuples: true,
meta: {
meta1: 'value1',
meta2: 'value2',
},
info: {
title: 'Hello world',
dataType: 'TEST',
},
});

There are two functions for NMR. from1DNMRVariables and from2DNMRVariables generate a NMR JCAMP file from variables.

const { from2DNMRVariables } = require('convert-to-jcamp');

const variables = {
y: {
data: [1, 2],
symbol: 'F1',
label: 'y',
units: 'Hz a',
isDependent: false,
},
x: {
data: [0, 1, 2, 3, 4],
symbol: 'F2',
label: 'x',
units: 'Hz',
isDependent: false,
},
z: {
data: [
[2, 3, 4, 5, 7],
[1, 2, 3, 4, 5],
],
symbol: 'Y',
label: 'z',
units: 'arbitrary',
isDependent: true,
},
};

const jcamp = from2DNMRVariables(variables, {
xyEncoding: 'DIFDUP',
nmrInfo: {
title: '2D NMR',
owner: 'cheminfo',
dataType: 'nD NMR SPECTRUM',
origin: 'lab',
},
meta: {
NUC1: '1H',
NUC2: '13C',
SFO1: 400, // Spectrometer frequency for F2 (MHz)
SFO2: 100, // Spectrometer frequency for F1 (MHz)
}, // Optional: additional metadata
info: { '.OBSERVE NUCLEUS': '1H', '.OBSERVER FREQUENCY': 400 }, // Optional: additional JCAMP info fields
});
const { from1DNMRVariables } = require('convert-to-jcamp');
const variables = {
x: {
data: xMultiply(data.x, observeFrequency),
label: 'Frequencies',
units: 'Hz',
symbol: 'X',
isDependent: false,
},
r: {
data: data.re,
label: 'real data',
units: 'arbitratry units',
symbol: 'R',
isDependent: true,
},
i: {
data: data.im,
label: 'imaginary data',
units: 'arbitratry units',
symbol: 'I',
isDependent: true,
},
};

const jcamp = from1DNMRVariables(variables, {
xyEncoding: 'DIFDUP',
nmrInfo: {
title: 'jcamp 1D',
owner: 'cheminfo',
dataType: 'NMR Spectrum',
origin: 'lab',
isFid: false, // true for FID, false for spectrum
baseFrequency: 600, // MHz
originFrequency: 600, // MHz
nucleus: '1H',
// Optional fields:
// digitalFilter, decim, dspfvs, frequencyOffset, baseFrequency, spectralWidth, solvent, scaleFactor
},
meta: { SFO1: 400, NUC1: '1H' }, // Optional: additional metadata would be with ##$ prefix
// info: { ... }, // Optional: additional JCAMP info fields would be with ## prefix
});

An example for 1D NMR bruker-to-jcamp conversion is in the demo folder

npm install;
npx ts-node demo/bruker-to-jcamp.ts

MIT