jcampconverter 9.1.1 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/lib/postProcessing.d.ts.map +1 -1
- package/lib/postProcessing.js +43 -0
- package/lib/postProcessing.js.map +1 -1
- package/lib-esm/postProcessing.d.ts.map +1 -1
- package/lib-esm/postProcessing.js +43 -0
- package/lib-esm/postProcessing.js.map +1 -1
- package/package.json +14 -14
- package/src/postProcessing.js +45 -0
package/README.md
CHANGED
|
@@ -4,12 +4,10 @@
|
|
|
4
4
|
[![npm download][download-image]][download-url]
|
|
5
5
|
[](https://doi.org/10.5281/zenodo.5091526)
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
# JCAMP-DX converter
|
|
9
8
|
|
|
10
9
|
Parse and convert JCAMP-DX data
|
|
11
10
|
|
|
12
|
-
|
|
13
11
|
## Installation
|
|
14
12
|
|
|
15
13
|
### Node JS
|
|
@@ -29,7 +27,7 @@ Returns an object with information about the converted file and uncompressed spe
|
|
|
29
27
|
|
|
30
28
|
**Arguments**
|
|
31
29
|
|
|
32
|
-
- `jcamp` - String or ArrayBuffer containing the JCAMP data
|
|
30
|
+
- `jcamp` - String or ArrayBuffer containing the JCAMP-DX data
|
|
33
31
|
- `options` - Object with options to pass to the converter
|
|
34
32
|
|
|
35
33
|
**Options**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postProcessing.d.ts","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postProcessing.d.ts","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":"AAQA,0FA2CC"}
|
package/lib/postProcessing.js
CHANGED
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const dynamic_typing_1 = require("dynamic-typing");
|
|
6
7
|
const add2D_1 = __importDefault(require("./2d/add2D"));
|
|
7
8
|
const complexChromatogram_1 = require("./complexChromatogram");
|
|
8
9
|
const postProcessingNMR_1 = __importDefault(require("./postProcessingNMR"));
|
|
@@ -11,6 +12,7 @@ const simpleChromatogram_1 = __importDefault(require("./simpleChromatogram"));
|
|
|
11
12
|
function postProcessing(entriesFlat, result, options) {
|
|
12
13
|
// converting Hz to ppm
|
|
13
14
|
(0, postProcessingNMR_1.default)(entriesFlat);
|
|
15
|
+
createArray(entriesFlat, options);
|
|
14
16
|
for (let entry of entriesFlat) {
|
|
15
17
|
if (Object.keys(entry.ntuples).length > 0) {
|
|
16
18
|
let newNtuples = [];
|
|
@@ -47,4 +49,45 @@ function postProcessing(entriesFlat, result, options) {
|
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
exports.default = postProcessing;
|
|
52
|
+
function createArray(entriesFlat, options) {
|
|
53
|
+
for (const entry of entriesFlat) {
|
|
54
|
+
for (const key in entry.meta) {
|
|
55
|
+
const value = entry.meta[key];
|
|
56
|
+
if (typeof value === 'string') {
|
|
57
|
+
if (value[0] === '{') {
|
|
58
|
+
// could be an array
|
|
59
|
+
if (value[value.length - 1] === '}') {
|
|
60
|
+
const array = value
|
|
61
|
+
.slice(1, -1)
|
|
62
|
+
.split(/[,; ]+/)
|
|
63
|
+
.filter((e) => e);
|
|
64
|
+
for (let i = 0; i < array.length; i++) {
|
|
65
|
+
entry.meta[key + String(i)] = options.dynamicTyping
|
|
66
|
+
? (0, dynamic_typing_1.parseString)(array[i])
|
|
67
|
+
: array[i];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else if (value[0] === '(') {
|
|
72
|
+
const lines = value.split(/\r?\n/);
|
|
73
|
+
const regexp = /^\((?<from>\d+)\.\.(?<to>\d+)\)$/;
|
|
74
|
+
if (regexp.test(lines[0])) {
|
|
75
|
+
// parsing '(0..63)'
|
|
76
|
+
const [from, to] = lines[0].match(regexp).slice(1).map(Number);
|
|
77
|
+
const array = lines
|
|
78
|
+
.slice(1)
|
|
79
|
+
.join(' ')
|
|
80
|
+
.split(/[,; ]+/)
|
|
81
|
+
.filter((e) => e);
|
|
82
|
+
for (let i = from; i <= to; i++) {
|
|
83
|
+
entry.meta[key + String(i)] = options.dynamicTyping
|
|
84
|
+
? (0, dynamic_typing_1.parseString)(array[i - from])
|
|
85
|
+
: array[i - from];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
50
93
|
//# sourceMappingURL=postProcessing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postProcessing.js","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":";;;;;AAAA,uDAA+B;AAC/B,+DAA4D;AAC5D,4EAAoD;AACpD,4DAAoC;AACpC,8EAAsD;AAEtD,SAAwB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO;IACjE,uBAAuB;IACvB,IAAA,2BAAiB,EAAC,WAAW,CAAC,CAAC;IAE/B,KAAK,IAAI,KAAK,IAAI,WAAW,EAAE;QAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;iBAChC;aACF;YACD,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;SAC5B;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;YAChC,IAAA,eAAK,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEtB,IAAA,mBAAS,EAAC,MAAM,EAAE,oCAAoC,EAAE,OAAO,CAAC,CAAC;YAEjE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBACxB,OAAO,KAAK,CAAC,OAAO,CAAC;aACtB;SACF;QAED,iEAAiE;QACjE,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,IAAA,yCAAmB,EAAC,KAAK,CAAC,CAAC;aAC5B;iBAAM;gBACL,IAAA,4BAAkB,EAAC,KAAK,CAAC,CAAC;aAC3B;YACD,IAAA,mBAAS,EAAC,MAAM,EAAE,mCAAmC,EAAE,OAAO,CAAC,CAAC;SACjE;QAED,OAAO,KAAK,CAAC,GAAG,CAAC;KAClB;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"postProcessing.js","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postProcessing.d.ts","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postProcessing.d.ts","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":"AAQA,0FA2CC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseString } from 'dynamic-typing';
|
|
1
2
|
import add2D from './2d/add2D';
|
|
2
3
|
import { complexChromatogram } from './complexChromatogram';
|
|
3
4
|
import postProcessingNMR from './postProcessingNMR';
|
|
@@ -6,6 +7,7 @@ import simpleChromatogram from './simpleChromatogram';
|
|
|
6
7
|
export default function postProcessing(entriesFlat, result, options) {
|
|
7
8
|
// converting Hz to ppm
|
|
8
9
|
postProcessingNMR(entriesFlat);
|
|
10
|
+
createArray(entriesFlat, options);
|
|
9
11
|
for (let entry of entriesFlat) {
|
|
10
12
|
if (Object.keys(entry.ntuples).length > 0) {
|
|
11
13
|
let newNtuples = [];
|
|
@@ -41,4 +43,45 @@ export default function postProcessing(entriesFlat, result, options) {
|
|
|
41
43
|
delete entry.tmp;
|
|
42
44
|
}
|
|
43
45
|
}
|
|
46
|
+
function createArray(entriesFlat, options) {
|
|
47
|
+
for (const entry of entriesFlat) {
|
|
48
|
+
for (const key in entry.meta) {
|
|
49
|
+
const value = entry.meta[key];
|
|
50
|
+
if (typeof value === 'string') {
|
|
51
|
+
if (value[0] === '{') {
|
|
52
|
+
// could be an array
|
|
53
|
+
if (value[value.length - 1] === '}') {
|
|
54
|
+
const array = value
|
|
55
|
+
.slice(1, -1)
|
|
56
|
+
.split(/[,; ]+/)
|
|
57
|
+
.filter((e) => e);
|
|
58
|
+
for (let i = 0; i < array.length; i++) {
|
|
59
|
+
entry.meta[key + String(i)] = options.dynamicTyping
|
|
60
|
+
? parseString(array[i])
|
|
61
|
+
: array[i];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (value[0] === '(') {
|
|
66
|
+
const lines = value.split(/\r?\n/);
|
|
67
|
+
const regexp = /^\((?<from>\d+)\.\.(?<to>\d+)\)$/;
|
|
68
|
+
if (regexp.test(lines[0])) {
|
|
69
|
+
// parsing '(0..63)'
|
|
70
|
+
const [from, to] = lines[0].match(regexp).slice(1).map(Number);
|
|
71
|
+
const array = lines
|
|
72
|
+
.slice(1)
|
|
73
|
+
.join(' ')
|
|
74
|
+
.split(/[,; ]+/)
|
|
75
|
+
.filter((e) => e);
|
|
76
|
+
for (let i = from; i <= to; i++) {
|
|
77
|
+
entry.meta[key + String(i)] = options.dynamicTyping
|
|
78
|
+
? parseString(array[i - from])
|
|
79
|
+
: array[i - from];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
44
87
|
//# sourceMappingURL=postProcessing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postProcessing.js","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO;IACjE,uBAAuB;IACvB,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE/B,KAAK,IAAI,KAAK,IAAI,WAAW,EAAE;QAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;iBAChC;aACF;YACD,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;SAC5B;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;YAChC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEtB,SAAS,CAAC,MAAM,EAAE,oCAAoC,EAAE,OAAO,CAAC,CAAC;YAEjE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBACxB,OAAO,KAAK,CAAC,OAAO,CAAC;aACtB;SACF;QAED,iEAAiE;QACjE,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,mBAAmB,CAAC,KAAK,CAAC,CAAC;aAC5B;iBAAM;gBACL,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAC3B;YACD,SAAS,CAAC,MAAM,EAAE,mCAAmC,EAAE,OAAO,CAAC,CAAC;SACjE;QAED,OAAO,KAAK,CAAC,GAAG,CAAC;KAClB;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"postProcessing.js","sourceRoot":"","sources":["../src/postProcessing.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jcampconverter",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.0",
|
|
4
4
|
"description": "Parse and convert JCAMP data",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -44,29 +44,29 @@
|
|
|
44
44
|
},
|
|
45
45
|
"homepage": "https://github.com/cheminfo/jcampconverter#readme",
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@types/jest": "^29.5.
|
|
47
|
+
"@types/jest": "^29.5.5",
|
|
48
48
|
"@types/pino": "^7.0.5",
|
|
49
|
-
"@vitest/coverage-
|
|
49
|
+
"@vitest/coverage-v8": "^0.34.5",
|
|
50
50
|
"benchmark": "^2.1.4",
|
|
51
|
-
"c8": "^
|
|
51
|
+
"c8": "^8.0.1",
|
|
52
52
|
"cheminfo-build": "^1.2.0",
|
|
53
|
-
"eslint": "^8.
|
|
54
|
-
"eslint-config-cheminfo-typescript": "^
|
|
53
|
+
"eslint": "^8.49.0",
|
|
54
|
+
"eslint-config-cheminfo-typescript": "^12.0.4",
|
|
55
55
|
"esm": "^3.2.25",
|
|
56
56
|
"fifo-logger": "^0.6.1",
|
|
57
57
|
"jest-matcher-deep-close-to": "^3.0.2",
|
|
58
|
-
"jscpd": "^3.5.
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
58
|
+
"jscpd": "^3.5.10",
|
|
59
|
+
"ml-spectra-processing": "^12.5.1",
|
|
60
|
+
"prettier": "^3.0.3",
|
|
61
|
+
"rimraf": "^5.0.1",
|
|
62
|
+
"typescript": "^5.2.2",
|
|
63
|
+
"vitest": "^0.34.5"
|
|
63
64
|
},
|
|
64
65
|
"dependencies": {
|
|
65
|
-
"cheminfo-types": "^1.7.
|
|
66
|
+
"cheminfo-types": "^1.7.2",
|
|
66
67
|
"dynamic-typing": "^1.0.0",
|
|
67
68
|
"ensure-string": "^1.2.0",
|
|
68
69
|
"gyromagnetic-ratio": "^1.0.0",
|
|
69
|
-
"ml-array-median": "^1.1.6"
|
|
70
|
-
"ml-spectra-processing": "^12.2.0"
|
|
70
|
+
"ml-array-median": "^1.1.6"
|
|
71
71
|
}
|
|
72
72
|
}
|
package/src/postProcessing.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { parseString } from 'dynamic-typing';
|
|
2
|
+
|
|
1
3
|
import add2D from './2d/add2D';
|
|
2
4
|
import { complexChromatogram } from './complexChromatogram';
|
|
3
5
|
import postProcessingNMR from './postProcessingNMR';
|
|
@@ -8,6 +10,8 @@ export default function postProcessing(entriesFlat, result, options) {
|
|
|
8
10
|
// converting Hz to ppm
|
|
9
11
|
postProcessingNMR(entriesFlat);
|
|
10
12
|
|
|
13
|
+
createArray(entriesFlat, options);
|
|
14
|
+
|
|
11
15
|
for (let entry of entriesFlat) {
|
|
12
16
|
if (Object.keys(entry.ntuples).length > 0) {
|
|
13
17
|
let newNtuples = [];
|
|
@@ -46,3 +50,44 @@ export default function postProcessing(entriesFlat, result, options) {
|
|
|
46
50
|
delete entry.tmp;
|
|
47
51
|
}
|
|
48
52
|
}
|
|
53
|
+
|
|
54
|
+
function createArray(entriesFlat, options) {
|
|
55
|
+
for (const entry of entriesFlat) {
|
|
56
|
+
for (const key in entry.meta) {
|
|
57
|
+
const value = entry.meta[key];
|
|
58
|
+
if (typeof value === 'string') {
|
|
59
|
+
if (value[0] === '{') {
|
|
60
|
+
// could be an array
|
|
61
|
+
if (value[value.length - 1] === '}') {
|
|
62
|
+
const array = value
|
|
63
|
+
.slice(1, -1)
|
|
64
|
+
.split(/[,; ]+/)
|
|
65
|
+
.filter((e) => e);
|
|
66
|
+
for (let i = 0; i < array.length; i++) {
|
|
67
|
+
entry.meta[key + String(i)] = options.dynamicTyping
|
|
68
|
+
? parseString(array[i])
|
|
69
|
+
: array[i];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} else if (value[0] === '(') {
|
|
73
|
+
const lines = value.split(/\r?\n/);
|
|
74
|
+
const regexp = /^\((?<from>\d+)\.\.(?<to>\d+)\)$/;
|
|
75
|
+
if (regexp.test(lines[0])) {
|
|
76
|
+
// parsing '(0..63)'
|
|
77
|
+
const [from, to] = lines[0].match(regexp).slice(1).map(Number);
|
|
78
|
+
const array = lines
|
|
79
|
+
.slice(1)
|
|
80
|
+
.join(' ')
|
|
81
|
+
.split(/[,; ]+/)
|
|
82
|
+
.filter((e) => e);
|
|
83
|
+
for (let i = from; i <= to; i++) {
|
|
84
|
+
entry.meta[key + String(i)] = options.dynamicTyping
|
|
85
|
+
? parseString(array[i - from])
|
|
86
|
+
: array[i - from];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|