nmr-processing 10.0.7 → 11.1.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/lib/datum/data1d/utils/mapIntegrals.d.ts +2 -2
- package/lib/datum/data1d/utils/mapIntegrals.js +7 -7
- package/lib/datum/data1d/utils/mapIntegrals.js.map +1 -1
- package/lib/datum/data1d/utils/mapPeaks.d.ts +6 -1
- package/lib/datum/data1d/utils/mapPeaks.js +2 -1
- package/lib/datum/data1d/utils/mapPeaks.js.map +1 -1
- package/lib/datum/data1d/utils/mapRanges.d.ts +12 -4
- package/lib/datum/data1d/utils/mapRanges.js +22 -12
- package/lib/datum/data1d/utils/mapRanges.js.map +1 -1
- package/lib/datum/data1d/utils/mapValues.d.ts +4 -4
- package/lib/datum/data2d/utils/mapZones.d.ts +32 -12
- package/lib/datum/data2d/utils/mapZones.js +67 -8
- package/lib/datum/data2d/utils/mapZones.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/peaks/NMRPeak1D.d.ts +1 -0
- package/lib/ranges/rangesToACS.d.ts +2 -2
- package/lib/ranges/rangesToACS.js +25 -14
- package/lib/ranges/rangesToACS.js.map +1 -1
- package/lib/types/Integral.d.ts +2 -2
- package/lib/types/Peaks/Peak2D.d.ts +3 -3
- package/lib/types/Ranges/Ranges.d.ts +2 -2
- package/lib/types/Signals/Signal1D.d.ts +1 -1
- package/lib/types/Signals/Signal2D.d.ts +1 -1
- package/lib/types/Zones/Zone.d.ts +2 -0
- package/lib/utilities/getSum.js +1 -1
- package/lib/utilities/getSum.js.map +1 -1
- package/lib-esm/datum/data1d/utils/mapIntegrals.js +7 -7
- package/lib-esm/datum/data1d/utils/mapIntegrals.js.map +1 -1
- package/lib-esm/datum/data1d/utils/mapPeaks.js +1 -1
- package/lib-esm/datum/data1d/utils/mapPeaks.js.map +1 -1
- package/lib-esm/datum/data1d/utils/mapRanges.js +22 -12
- package/lib-esm/datum/data1d/utils/mapRanges.js.map +1 -1
- package/lib-esm/datum/data2d/utils/mapZones.js +67 -8
- package/lib-esm/datum/data2d/utils/mapZones.js.map +1 -1
- package/lib-esm/index.js +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/ranges/rangesToACS.js +22 -14
- package/lib-esm/ranges/rangesToACS.js.map +1 -1
- package/lib-esm/utilities/getSum.js +1 -1
- package/lib-esm/utilities/getSum.js.map +1 -1
- package/package.json +10 -8
- package/src/datum/data1d/utils/mapIntegrals.ts +7 -7
- package/src/datum/data1d/utils/mapPeaks.ts +6 -1
- package/src/datum/data1d/utils/mapRanges.ts +23 -12
- package/src/datum/data2d/utils/mapZones.ts +69 -8
- package/src/index.ts +1 -0
- package/src/peaks/NMRPeak1D.ts +1 -0
- package/src/ranges/rangesToACS.ts +32 -21
- package/src/types/Integral.ts +2 -2
- package/src/types/Peaks/Peak2D.ts +3 -3
- package/src/types/Ranges/Ranges.ts +2 -2
- package/src/types/Signals/Signal1D.ts +1 -1
- package/src/types/Signals/Signal2D.ts +1 -1
- package/src/types/Zones/Zone.ts +2 -0
- package/src/utilities/getSum.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nmr-processing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.1.0",
|
|
4
4
|
"description": "Pure functions allowing to process NMR spectra.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -38,25 +38,26 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://github.com/cheminfo/nmr-processing#readme",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@types/jest": "^29.5.
|
|
41
|
+
"@types/jest": "^29.5.4",
|
|
42
|
+
"@types/numeral": "^2.0.2",
|
|
42
43
|
"cheminfo-build": "^1.2.0",
|
|
43
44
|
"cheminfo-types": "^1.7.2",
|
|
44
|
-
"eslint": "^8.
|
|
45
|
+
"eslint": "^8.49.0",
|
|
45
46
|
"eslint-config-cheminfo-typescript": "^12.0.4",
|
|
46
47
|
"fifo-logger": "^0.6.1",
|
|
47
|
-
"jest": "^29.
|
|
48
|
+
"jest": "^29.7.0",
|
|
48
49
|
"jest-matcher-deep-close-to": "^3.0.2",
|
|
49
50
|
"md5": "^2.3.0",
|
|
50
51
|
"nmr-xy-testdata": "^0.5.1",
|
|
51
52
|
"openchemlib": "^8.5.0",
|
|
52
|
-
"prettier": "^3.0.
|
|
53
|
+
"prettier": "^3.0.3",
|
|
53
54
|
"rimraf": "^5.0.1",
|
|
54
55
|
"ts-jest": "^29.1.1",
|
|
55
|
-
"typescript": "
|
|
56
|
+
"typescript": "~5.2.2"
|
|
56
57
|
},
|
|
57
58
|
"dependencies": {
|
|
58
59
|
"@lukeed/uuid": "^2.0.1",
|
|
59
|
-
"@types/lodash": "^4.14.
|
|
60
|
+
"@types/lodash": "^4.14.198",
|
|
60
61
|
"binary-search": "^1.3.6",
|
|
61
62
|
"cross-fetch": "^4.0.0",
|
|
62
63
|
"form-data": "^4.0.0",
|
|
@@ -77,9 +78,10 @@
|
|
|
77
78
|
"ml-signal-processing": "^1.0.3",
|
|
78
79
|
"ml-simple-clustering": "^0.1.0",
|
|
79
80
|
"ml-sparse-matrix": "^2.1.0",
|
|
80
|
-
"ml-spectra-processing": "^12.5.
|
|
81
|
+
"ml-spectra-processing": "^12.5.1",
|
|
81
82
|
"ml-tree-set": "^0.1.1",
|
|
82
83
|
"nmr-correlation": "^2.3.3",
|
|
84
|
+
"numeral": "^2.0.6",
|
|
83
85
|
"openchemlib-utils": "^5.2.0",
|
|
84
86
|
"spectrum-generator": "^8.0.8"
|
|
85
87
|
}
|
|
@@ -8,20 +8,20 @@ import { Entry1D } from '../Entry1D';
|
|
|
8
8
|
import { getShiftX } from './getShiftX';
|
|
9
9
|
|
|
10
10
|
function getRange(integral: Integral, shiftTarget: ShiftTarget, shift: number) {
|
|
11
|
-
const {
|
|
11
|
+
const { originalFrom, originalTo, from, to } = integral;
|
|
12
12
|
if (shiftTarget === 'origin') {
|
|
13
13
|
return {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
originalFrom: from - shift,
|
|
15
|
+
originalTo: to - shift,
|
|
16
16
|
from,
|
|
17
17
|
to,
|
|
18
18
|
};
|
|
19
19
|
} else {
|
|
20
20
|
return {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
from:
|
|
24
|
-
to:
|
|
21
|
+
originalFrom,
|
|
22
|
+
originalTo,
|
|
23
|
+
from: originalFrom + shift,
|
|
24
|
+
to: originalTo + shift,
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -6,6 +6,7 @@ import { Entry1D } from '../Entry1D';
|
|
|
6
6
|
|
|
7
7
|
import { getShiftX } from './getShiftX';
|
|
8
8
|
import { getSpectrumErrorValue } from './getSpectrumErrorValue';
|
|
9
|
+
import { NMRPeak1D } from '../../..';
|
|
9
10
|
|
|
10
11
|
function isExists(peak: Peak1D, spectrum: Entry1D, error: number) {
|
|
11
12
|
// check if the Peak is already exists
|
|
@@ -17,7 +18,11 @@ function isExists(peak: Peak1D, spectrum: Entry1D, error: number) {
|
|
|
17
18
|
return false;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
function getPeakDelta(
|
|
21
|
+
export function getPeakDelta(
|
|
22
|
+
peak: Peak1D | NMRPeak1D,
|
|
23
|
+
shiftTarget: ShiftTarget,
|
|
24
|
+
shift: number,
|
|
25
|
+
) {
|
|
21
26
|
const { originalX = 0, x } = peak;
|
|
22
27
|
if (shiftTarget === 'origin') {
|
|
23
28
|
return {
|
|
@@ -11,6 +11,7 @@ import { Entry1D } from '../Entry1D';
|
|
|
11
11
|
|
|
12
12
|
import { getShiftX } from './getShiftX';
|
|
13
13
|
import { getSpectrumErrorValue } from './getSpectrumErrorValue';
|
|
14
|
+
import { getPeakDelta } from './mapPeaks';
|
|
14
15
|
|
|
15
16
|
function checkRange(range: Range, spectrum: Entry1D, error: number) {
|
|
16
17
|
// check if the range is already exists
|
|
@@ -29,20 +30,20 @@ function getRange(
|
|
|
29
30
|
shiftTarget: 'origin' | 'current',
|
|
30
31
|
shift: number,
|
|
31
32
|
) {
|
|
32
|
-
const {
|
|
33
|
+
const { originalFrom, originalTo, from, to } = range;
|
|
33
34
|
if (shiftTarget === 'origin') {
|
|
34
35
|
return {
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
originalFrom: from - shift,
|
|
37
|
+
originalTo: to - shift,
|
|
37
38
|
from,
|
|
38
39
|
to,
|
|
39
40
|
};
|
|
40
41
|
} else {
|
|
41
42
|
return {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
from: (
|
|
45
|
-
to: (
|
|
43
|
+
originalFrom,
|
|
44
|
+
originalTo,
|
|
45
|
+
from: (originalFrom || 0) + shift,
|
|
46
|
+
to: (originalTo || 0) + shift,
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -52,16 +53,16 @@ function getSignalDelta(
|
|
|
52
53
|
shiftTarget: ShiftTarget,
|
|
53
54
|
shift: number,
|
|
54
55
|
) {
|
|
55
|
-
const { delta,
|
|
56
|
+
const { delta, originalDelta } = signal;
|
|
56
57
|
if (shiftTarget === 'origin') {
|
|
57
58
|
return {
|
|
58
|
-
|
|
59
|
+
originalDelta: delta - shift,
|
|
59
60
|
delta,
|
|
60
61
|
};
|
|
61
62
|
} else {
|
|
62
63
|
return {
|
|
63
|
-
|
|
64
|
-
delta: (
|
|
64
|
+
originalDelta,
|
|
65
|
+
delta: (originalDelta || 0) + shift,
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
68
|
}
|
|
@@ -112,10 +113,20 @@ export function mapRanges(
|
|
|
112
113
|
{ from: rangeBoundary.from, to: rangeBoundary.to, reverse: true },
|
|
113
114
|
);
|
|
114
115
|
const signals = range.signals.map((signal) => {
|
|
115
|
-
const { kind = null, id, ...resSignal } = signal;
|
|
116
|
+
const { kind = null, id, peaks: inputPeaks = [], ...resSignal } = signal;
|
|
117
|
+
|
|
118
|
+
const peaks = inputPeaks.map((peak) => {
|
|
119
|
+
const peakDelta = getPeakDelta(peak, shiftTarget, shiftX);
|
|
120
|
+
return {
|
|
121
|
+
id: peak?.id || v4(),
|
|
122
|
+
...peak,
|
|
123
|
+
...peakDelta,
|
|
124
|
+
};
|
|
125
|
+
});
|
|
116
126
|
return {
|
|
117
127
|
kind: kind || 'signal',
|
|
118
128
|
id: id || v4(),
|
|
129
|
+
peaks,
|
|
119
130
|
...resSignal,
|
|
120
131
|
...getSignalDelta(signal, shiftTarget, shiftX),
|
|
121
132
|
};
|
|
@@ -9,6 +9,7 @@ import { Entry2D } from '../Entry2D';
|
|
|
9
9
|
import { get2DSpectrumErrorValue } from './get2DSpectrumErrorValue';
|
|
10
10
|
import { getShift, Shift2D } from './getShift';
|
|
11
11
|
import { isZoneExists } from './isZoneExists';
|
|
12
|
+
import { Peak2D } from '../../..';
|
|
12
13
|
|
|
13
14
|
function getSignal(signal: Signal2D, shiftTarget: ShiftTarget, shift: Shift2D) {
|
|
14
15
|
const { x, y } = signal;
|
|
@@ -18,11 +19,11 @@ function getSignal(signal: Signal2D, shiftTarget: ShiftTarget, shift: Shift2D) {
|
|
|
18
19
|
...signal,
|
|
19
20
|
x: {
|
|
20
21
|
...x,
|
|
21
|
-
|
|
22
|
+
originalDelta: x.delta - shift.x,
|
|
22
23
|
},
|
|
23
24
|
y: {
|
|
24
25
|
...y,
|
|
25
|
-
|
|
26
|
+
originalDelta: y.delta - shift.y,
|
|
26
27
|
},
|
|
27
28
|
};
|
|
28
29
|
} else {
|
|
@@ -30,16 +31,65 @@ function getSignal(signal: Signal2D, shiftTarget: ShiftTarget, shift: Shift2D) {
|
|
|
30
31
|
...signal,
|
|
31
32
|
x: {
|
|
32
33
|
...x,
|
|
33
|
-
delta: x.
|
|
34
|
+
delta: x.originalDelta + shift.x,
|
|
34
35
|
},
|
|
35
36
|
y: {
|
|
36
37
|
...y,
|
|
37
|
-
delta: y.
|
|
38
|
+
delta: y.originalDelta + shift.y,
|
|
38
39
|
},
|
|
39
40
|
};
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
|
|
44
|
+
function getZoneAxis(zone: Zone, shiftTarget: ShiftTarget, shift: Shift2D) {
|
|
45
|
+
const { x, y } = zone;
|
|
46
|
+
|
|
47
|
+
if (shiftTarget === 'origin') {
|
|
48
|
+
return {
|
|
49
|
+
x: {
|
|
50
|
+
...x,
|
|
51
|
+
originalFrom: x.from - shift.x,
|
|
52
|
+
originalTo: x.to - shift.x,
|
|
53
|
+
},
|
|
54
|
+
y: {
|
|
55
|
+
...y,
|
|
56
|
+
originalFrom: y.from - shift.y,
|
|
57
|
+
originalTo: y.to - shift.y,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
} else {
|
|
61
|
+
return {
|
|
62
|
+
x: {
|
|
63
|
+
...x,
|
|
64
|
+
from: (x?.originalFrom || 0) + shift.x,
|
|
65
|
+
to: (x?.originalTo || 0) + shift.x,
|
|
66
|
+
},
|
|
67
|
+
y: {
|
|
68
|
+
...y,
|
|
69
|
+
from: (y?.originalFrom || 0) + shift.y,
|
|
70
|
+
to: (y?.originalTo || 0) + shift.y,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function getPeak(peak: Peak2D, shiftTarget: ShiftTarget, shift: Shift2D) {
|
|
76
|
+
const { x, y, originalX = 0, originalY = 0 } = peak;
|
|
77
|
+
|
|
78
|
+
if (shiftTarget === 'origin') {
|
|
79
|
+
return {
|
|
80
|
+
...peak,
|
|
81
|
+
originalX: x - shift.x,
|
|
82
|
+
originalY: y - shift.y,
|
|
83
|
+
};
|
|
84
|
+
} else {
|
|
85
|
+
return {
|
|
86
|
+
...peak,
|
|
87
|
+
x: originalX + shift.x,
|
|
88
|
+
y: originalY + shift.y,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
43
93
|
export function mapZones(
|
|
44
94
|
zones: Zone[],
|
|
45
95
|
datum: Entry2D,
|
|
@@ -56,13 +106,25 @@ export function mapZones(
|
|
|
56
106
|
}
|
|
57
107
|
|
|
58
108
|
return _zones.map((zone: Zone) => {
|
|
59
|
-
|
|
60
|
-
|
|
109
|
+
zone.x = zone.x || { from: 0, to: 0 };
|
|
110
|
+
zone.y = zone.y || { from: 0, to: 0 };
|
|
61
111
|
|
|
62
112
|
const signals = zone.signals.map((signal) => {
|
|
63
113
|
const { id, kind } = signal;
|
|
114
|
+
let peaks;
|
|
115
|
+
if (signal?.peaks) {
|
|
116
|
+
peaks = (signal?.peaks || []).map((peak) => {
|
|
117
|
+
const peakDelta = getPeak(peak, shiftTarget, shift);
|
|
118
|
+
return {
|
|
119
|
+
...peak,
|
|
120
|
+
...peakDelta,
|
|
121
|
+
id: peak?.id || v4(),
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
}
|
|
64
125
|
return {
|
|
65
126
|
...getSignal(signal, shiftTarget, shift),
|
|
127
|
+
peaks,
|
|
66
128
|
id: id || v4(),
|
|
67
129
|
kind: kind || 'signal',
|
|
68
130
|
};
|
|
@@ -71,8 +133,7 @@ export function mapZones(
|
|
|
71
133
|
return {
|
|
72
134
|
...zone,
|
|
73
135
|
id: zone.id || v4(),
|
|
74
|
-
|
|
75
|
-
y: { from: y.from, to: y.to },
|
|
136
|
+
...getZoneAxis(zone, shiftTarget, shift),
|
|
76
137
|
signals,
|
|
77
138
|
kind: zone.kind || DatumKind.signal,
|
|
78
139
|
};
|
package/src/index.ts
CHANGED
|
@@ -65,6 +65,7 @@ export * from './datum/data1d/utils/getShiftX';
|
|
|
65
65
|
export * from './datum/data1d/utils/getSpectrumErrorValue';
|
|
66
66
|
export * from './datum/data1d/utils/mapPeaks';
|
|
67
67
|
export * from './datum/data1d/utils/mapRanges';
|
|
68
|
+
export * from './datum/data2d/utils/mapZones';
|
|
68
69
|
export * from './datum/data1d/utils/mapIntegrals';
|
|
69
70
|
export * from './datum/data1d/utils/updateRanges';
|
|
70
71
|
export * from './datum/data1d/utils/checkIntegralKind';
|
package/src/peaks/NMRPeak1D.ts
CHANGED
|
@@ -5,31 +5,33 @@ import { signalMultiplicityPattern } from '../signal/signalMultiplicityPattern';
|
|
|
5
5
|
import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
6
6
|
import type { NMRRange } from '../xy/NMRRange';
|
|
7
7
|
|
|
8
|
+
import numeral from 'numeral';
|
|
9
|
+
|
|
8
10
|
const globalOptions: Record<
|
|
9
11
|
string,
|
|
10
12
|
{
|
|
11
13
|
nucleus: string;
|
|
12
|
-
nbDecimalDelta:
|
|
13
|
-
nbDecimalJ:
|
|
14
|
+
nbDecimalDelta: string;
|
|
15
|
+
nbDecimalJ: string;
|
|
14
16
|
observedFrequency: number;
|
|
15
17
|
}
|
|
16
18
|
> = {
|
|
17
19
|
h: {
|
|
18
20
|
nucleus: '1H',
|
|
19
|
-
nbDecimalDelta:
|
|
20
|
-
nbDecimalJ:
|
|
21
|
+
nbDecimalDelta: '0.00',
|
|
22
|
+
nbDecimalJ: '0.0',
|
|
21
23
|
observedFrequency: 400,
|
|
22
24
|
},
|
|
23
25
|
c: {
|
|
24
26
|
nucleus: '13C',
|
|
25
|
-
nbDecimalDelta:
|
|
26
|
-
nbDecimalJ:
|
|
27
|
+
nbDecimalDelta: '0.0',
|
|
28
|
+
nbDecimalJ: '0.0',
|
|
27
29
|
observedFrequency: 100,
|
|
28
30
|
},
|
|
29
31
|
f: {
|
|
30
32
|
nucleus: '19F',
|
|
31
|
-
nbDecimalDelta:
|
|
32
|
-
nbDecimalJ:
|
|
33
|
+
nbDecimalDelta: '0.00',
|
|
34
|
+
nbDecimalJ: '0.0',
|
|
33
35
|
observedFrequency: 400,
|
|
34
36
|
},
|
|
35
37
|
};
|
|
@@ -46,12 +48,12 @@ export interface RangesToACSOptions {
|
|
|
46
48
|
* default value depends of nucleus
|
|
47
49
|
* @default 1|2
|
|
48
50
|
*/
|
|
49
|
-
nbDecimalDelta?:
|
|
51
|
+
nbDecimalDelta?: string;
|
|
50
52
|
/**
|
|
51
53
|
* Number of decimals to round the scalar coupling value
|
|
52
54
|
* @default 1
|
|
53
55
|
*/
|
|
54
|
-
nbDecimalJ?:
|
|
56
|
+
nbDecimalJ?: string;
|
|
55
57
|
/**
|
|
56
58
|
* default value depends of nucleus
|
|
57
59
|
* @default 400|100
|
|
@@ -118,7 +120,9 @@ function spectroInformation(options: any) {
|
|
|
118
120
|
parenthesis.push(formatMF(options.solvent));
|
|
119
121
|
}
|
|
120
122
|
if (options.observedFrequency) {
|
|
121
|
-
parenthesis.push(
|
|
123
|
+
parenthesis.push(
|
|
124
|
+
`${numeral(options.observedFrequency * 1).format('0')} MHz`,
|
|
125
|
+
);
|
|
122
126
|
}
|
|
123
127
|
if (parenthesis.length > 0) {
|
|
124
128
|
strings += ` (${parenthesis.join(', ')}): δ `;
|
|
@@ -147,9 +151,11 @@ function pushDelta(range: NMRRange, acsRanges: string[], options: any) {
|
|
|
147
151
|
return a.delta - b.delta;
|
|
148
152
|
});
|
|
149
153
|
}
|
|
150
|
-
|
|
154
|
+
const to = numeral(Math.max(...fromTo));
|
|
155
|
+
const from = numeral(Math.min(...fromTo));
|
|
156
|
+
strings += `${from.format(options.nbDecimalDelta)}-${to.format(
|
|
151
157
|
options.nbDecimalDelta,
|
|
152
|
-
)}
|
|
158
|
+
)}`;
|
|
153
159
|
strings += ` (${getIntegral(range, options)}`;
|
|
154
160
|
|
|
155
161
|
if (
|
|
@@ -162,7 +168,7 @@ function pushDelta(range: NMRRange, acsRanges: string[], options: any) {
|
|
|
162
168
|
parenthesis = [];
|
|
163
169
|
if (signal.delta !== undefined) {
|
|
164
170
|
strings = appendSeparator(strings);
|
|
165
|
-
strings += signal.delta.
|
|
171
|
+
strings += numeral(signal.delta).format(options.nbDecimalDelta);
|
|
166
172
|
}
|
|
167
173
|
const range: NMRRange = {
|
|
168
174
|
from: Number.MIN_SAFE_INTEGER,
|
|
@@ -176,21 +182,25 @@ function pushDelta(range: NMRRange, acsRanges: string[], options: any) {
|
|
|
176
182
|
} else {
|
|
177
183
|
parenthesis = [];
|
|
178
184
|
if (signals[0].delta !== undefined) {
|
|
179
|
-
strings += signals[0].delta.
|
|
185
|
+
strings += numeral(signals[0].delta).format(options.nbDecimalDelta);
|
|
180
186
|
switchFormat(range, signals[0], parenthesis, options);
|
|
181
187
|
if (parenthesis.length > 0) strings += ` (${parenthesis.join(', ')})`;
|
|
182
188
|
} else {
|
|
183
|
-
|
|
189
|
+
const to = numeral(Math.max(...fromTo));
|
|
190
|
+
const from = numeral(Math.min(...fromTo));
|
|
191
|
+
strings += `${from.format(options.nbDecimalDelta)}-${to.format(
|
|
184
192
|
options.nbDecimalDelta,
|
|
185
|
-
)}
|
|
193
|
+
)}`;
|
|
186
194
|
switchFormat(range, signals[0], parenthesis, options);
|
|
187
195
|
if (parenthesis.length > 0) strings += ` (${parenthesis})`;
|
|
188
196
|
}
|
|
189
197
|
}
|
|
190
198
|
} else {
|
|
191
|
-
|
|
199
|
+
const to = numeral(Math.max(...fromTo));
|
|
200
|
+
const from = numeral(Math.min(...fromTo));
|
|
201
|
+
strings += `${from.format(options.nbDecimalDelta)}-${to.format(
|
|
192
202
|
options.nbDecimalDelta,
|
|
193
|
-
)}
|
|
203
|
+
)}`;
|
|
194
204
|
const signal: any = {};
|
|
195
205
|
switchFormat(range, signal, parenthesis, options);
|
|
196
206
|
if (parenthesis.length > 0) strings += ` (${parenthesis.join(', ')})`;
|
|
@@ -204,7 +214,8 @@ function getIntegral(range: NMRRange, options: { nucleus: string[] }) {
|
|
|
204
214
|
integration = String(range.pubIntegral);
|
|
205
215
|
} else if (range.integration) {
|
|
206
216
|
const { nucleus } = options;
|
|
207
|
-
integration =
|
|
217
|
+
integration =
|
|
218
|
+
numeral(range.integration).format('0') + nucleus[nucleus.length - 1];
|
|
208
219
|
}
|
|
209
220
|
return integration;
|
|
210
221
|
}
|
|
@@ -290,7 +301,7 @@ function pushCoupling(
|
|
|
290
301
|
const values = [];
|
|
291
302
|
for (const j of signal.js) {
|
|
292
303
|
if (j.coupling !== undefined) {
|
|
293
|
-
values.push(j.coupling.
|
|
304
|
+
values.push(numeral(j.coupling).format(options.nbDecimalJ));
|
|
294
305
|
}
|
|
295
306
|
}
|
|
296
307
|
if (values.length > 0) {
|
package/src/types/Integral.ts
CHANGED
|
@@ -9,8 +9,8 @@ export interface Ranges {
|
|
|
9
9
|
|
|
10
10
|
export interface Range extends Omit<NMRRange, 'signals' | 'id'> {
|
|
11
11
|
id: string;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
originalFrom?: number;
|
|
13
|
+
originalTo?: number;
|
|
14
14
|
absolute: number;
|
|
15
15
|
signals: Signal1D[];
|
|
16
16
|
integration: number;
|
package/src/types/Zones/Zone.ts
CHANGED
package/src/utilities/getSum.ts
CHANGED
|
@@ -15,7 +15,7 @@ export function getSum<Type extends object>(
|
|
|
15
15
|
for (const current of values) {
|
|
16
16
|
if (check?.(current)) {
|
|
17
17
|
const value = current[key];
|
|
18
|
-
if (!value ||
|
|
18
|
+
if (!value || typeof value !== 'number') continue;
|
|
19
19
|
sum += Math.abs(value);
|
|
20
20
|
}
|
|
21
21
|
}
|