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.
Files changed (57) hide show
  1. package/lib/datum/data1d/utils/mapIntegrals.d.ts +2 -2
  2. package/lib/datum/data1d/utils/mapIntegrals.js +7 -7
  3. package/lib/datum/data1d/utils/mapIntegrals.js.map +1 -1
  4. package/lib/datum/data1d/utils/mapPeaks.d.ts +6 -1
  5. package/lib/datum/data1d/utils/mapPeaks.js +2 -1
  6. package/lib/datum/data1d/utils/mapPeaks.js.map +1 -1
  7. package/lib/datum/data1d/utils/mapRanges.d.ts +12 -4
  8. package/lib/datum/data1d/utils/mapRanges.js +22 -12
  9. package/lib/datum/data1d/utils/mapRanges.js.map +1 -1
  10. package/lib/datum/data1d/utils/mapValues.d.ts +4 -4
  11. package/lib/datum/data2d/utils/mapZones.d.ts +32 -12
  12. package/lib/datum/data2d/utils/mapZones.js +67 -8
  13. package/lib/datum/data2d/utils/mapZones.js.map +1 -1
  14. package/lib/index.d.ts +1 -0
  15. package/lib/index.js +1 -0
  16. package/lib/index.js.map +1 -1
  17. package/lib/peaks/NMRPeak1D.d.ts +1 -0
  18. package/lib/ranges/rangesToACS.d.ts +2 -2
  19. package/lib/ranges/rangesToACS.js +25 -14
  20. package/lib/ranges/rangesToACS.js.map +1 -1
  21. package/lib/types/Integral.d.ts +2 -2
  22. package/lib/types/Peaks/Peak2D.d.ts +3 -3
  23. package/lib/types/Ranges/Ranges.d.ts +2 -2
  24. package/lib/types/Signals/Signal1D.d.ts +1 -1
  25. package/lib/types/Signals/Signal2D.d.ts +1 -1
  26. package/lib/types/Zones/Zone.d.ts +2 -0
  27. package/lib/utilities/getSum.js +1 -1
  28. package/lib/utilities/getSum.js.map +1 -1
  29. package/lib-esm/datum/data1d/utils/mapIntegrals.js +7 -7
  30. package/lib-esm/datum/data1d/utils/mapIntegrals.js.map +1 -1
  31. package/lib-esm/datum/data1d/utils/mapPeaks.js +1 -1
  32. package/lib-esm/datum/data1d/utils/mapPeaks.js.map +1 -1
  33. package/lib-esm/datum/data1d/utils/mapRanges.js +22 -12
  34. package/lib-esm/datum/data1d/utils/mapRanges.js.map +1 -1
  35. package/lib-esm/datum/data2d/utils/mapZones.js +67 -8
  36. package/lib-esm/datum/data2d/utils/mapZones.js.map +1 -1
  37. package/lib-esm/index.js +1 -0
  38. package/lib-esm/index.js.map +1 -1
  39. package/lib-esm/ranges/rangesToACS.js +22 -14
  40. package/lib-esm/ranges/rangesToACS.js.map +1 -1
  41. package/lib-esm/utilities/getSum.js +1 -1
  42. package/lib-esm/utilities/getSum.js.map +1 -1
  43. package/package.json +10 -8
  44. package/src/datum/data1d/utils/mapIntegrals.ts +7 -7
  45. package/src/datum/data1d/utils/mapPeaks.ts +6 -1
  46. package/src/datum/data1d/utils/mapRanges.ts +23 -12
  47. package/src/datum/data2d/utils/mapZones.ts +69 -8
  48. package/src/index.ts +1 -0
  49. package/src/peaks/NMRPeak1D.ts +1 -0
  50. package/src/ranges/rangesToACS.ts +32 -21
  51. package/src/types/Integral.ts +2 -2
  52. package/src/types/Peaks/Peak2D.ts +3 -3
  53. package/src/types/Ranges/Ranges.ts +2 -2
  54. package/src/types/Signals/Signal1D.ts +1 -1
  55. package/src/types/Signals/Signal2D.ts +1 -1
  56. package/src/types/Zones/Zone.ts +2 -0
  57. package/src/utilities/getSum.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nmr-processing",
3
- "version": "10.0.7",
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.3",
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.46.0",
45
+ "eslint": "^8.49.0",
45
46
  "eslint-config-cheminfo-typescript": "^12.0.4",
46
47
  "fifo-logger": "^0.6.1",
47
- "jest": "^29.6.2",
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.1",
53
+ "prettier": "^3.0.3",
53
54
  "rimraf": "^5.0.1",
54
55
  "ts-jest": "^29.1.1",
55
- "typescript": "^5.1.6"
56
+ "typescript": "~5.2.2"
56
57
  },
57
58
  "dependencies": {
58
59
  "@lukeed/uuid": "^2.0.1",
59
- "@types/lodash": "^4.14.196",
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.0",
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 { originFrom, originTo, from, to } = integral;
11
+ const { originalFrom, originalTo, from, to } = integral;
12
12
  if (shiftTarget === 'origin') {
13
13
  return {
14
- originFrom: from - shift,
15
- originTo: to - shift,
14
+ originalFrom: from - shift,
15
+ originalTo: to - shift,
16
16
  from,
17
17
  to,
18
18
  };
19
19
  } else {
20
20
  return {
21
- originFrom,
22
- originTo,
23
- from: originFrom + shift,
24
- to: originTo + shift,
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(peak: Peak1D, shiftTarget: ShiftTarget, shift: number) {
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 { originFrom, originTo, from, to } = range;
33
+ const { originalFrom, originalTo, from, to } = range;
33
34
  if (shiftTarget === 'origin') {
34
35
  return {
35
- originFrom: from - shift,
36
- originTo: to - shift,
36
+ originalFrom: from - shift,
37
+ originalTo: to - shift,
37
38
  from,
38
39
  to,
39
40
  };
40
41
  } else {
41
42
  return {
42
- originFrom,
43
- originTo,
44
- from: (originFrom || 0) + shift,
45
- to: (originTo || 0) + shift,
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, originDelta } = signal;
56
+ const { delta, originalDelta } = signal;
56
57
  if (shiftTarget === 'origin') {
57
58
  return {
58
- originDelta: delta - shift,
59
+ originalDelta: delta - shift,
59
60
  delta,
60
61
  };
61
62
  } else {
62
63
  return {
63
- originDelta,
64
- delta: (originDelta || 0) + shift,
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
- originDelta: x.delta - shift.x,
22
+ originalDelta: x.delta - shift.x,
22
23
  },
23
24
  y: {
24
25
  ...y,
25
- originDelta: y.delta - shift.y,
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.originDelta + shift.x,
34
+ delta: x.originalDelta + shift.x,
34
35
  },
35
36
  y: {
36
37
  ...y,
37
- delta: y.originDelta + shift.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
- const x = zone.x || { from: 0, to: 0 };
60
- const y = zone.y || { from: 0, to: 0 };
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
- x: { from: x.from, to: x.to },
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';
@@ -5,4 +5,5 @@ export interface NMRPeak1D extends PeakXYWidth {
5
5
  id?: string;
6
6
  kind?: string;
7
7
  shape?: Shape1D;
8
+ originalX?: number;
8
9
  }
@@ -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: number;
13
- nbDecimalJ: number;
14
+ nbDecimalDelta: string;
15
+ nbDecimalJ: string;
14
16
  observedFrequency: number;
15
17
  }
16
18
  > = {
17
19
  h: {
18
20
  nucleus: '1H',
19
- nbDecimalDelta: 2,
20
- nbDecimalJ: 1,
21
+ nbDecimalDelta: '0.00',
22
+ nbDecimalJ: '0.0',
21
23
  observedFrequency: 400,
22
24
  },
23
25
  c: {
24
26
  nucleus: '13C',
25
- nbDecimalDelta: 1,
26
- nbDecimalJ: 1,
27
+ nbDecimalDelta: '0.0',
28
+ nbDecimalJ: '0.0',
27
29
  observedFrequency: 100,
28
30
  },
29
31
  f: {
30
32
  nucleus: '19F',
31
- nbDecimalDelta: 2,
32
- nbDecimalJ: 1,
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?: number;
51
+ nbDecimalDelta?: string;
50
52
  /**
51
53
  * Number of decimals to round the scalar coupling value
52
54
  * @default 1
53
55
  */
54
- nbDecimalJ?: number;
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(`${(options.observedFrequency * 1).toFixed(0)} MHz`);
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
- strings += `${Math.min(...fromTo).toFixed(
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
- )}-${Math.max(...fromTo).toFixed(options.nbDecimalDelta)}`;
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.toFixed(options.nbDecimalDelta);
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.toFixed(options.nbDecimalDelta);
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
- strings += `${Math.min(...fromTo).toFixed(
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
- )}-${Math.max(...fromTo).toFixed(options.nbDecimalDelta)}`;
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
- strings += `${Math.min(...fromTo).toFixed(
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
- )}-${Math.max(...fromTo).toFixed(options.nbDecimalDelta)}`;
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 = range.integration.toFixed(0) + nucleus[nucleus.length - 1];
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.toFixed(options.nbDecimalJ));
304
+ values.push(numeral(j.coupling).format(options.nbDecimalJ));
294
305
  }
295
306
  }
296
307
  if (values.length > 0) {
@@ -1,7 +1,7 @@
1
1
  export interface Integral {
2
2
  id: string;
3
- originFrom: number;
4
- originTo: number;
3
+ originalFrom: number;
4
+ originalTo: number;
5
5
  from: number;
6
6
  to: number;
7
7
  absolute: number;
@@ -4,8 +4,8 @@ export interface Peak2D extends BasePeak {
4
4
  x: number;
5
5
  y: number;
6
6
  z: number;
7
- originX?: number;
8
- originY?: number;
9
- originZ?: number;
7
+ originalX?: number;
8
+ originalY?: number;
9
+ originalZ?: number;
10
10
  width?: number | { x: number; y: number };
11
11
  }
@@ -9,8 +9,8 @@ export interface Ranges {
9
9
 
10
10
  export interface Range extends Omit<NMRRange, 'signals' | 'id'> {
11
11
  id: string;
12
- originFrom?: number;
13
- originTo?: number;
12
+ originalFrom?: number;
13
+ originalTo?: number;
14
14
  absolute: number;
15
15
  signals: Signal1D[];
16
16
  integration: number;
@@ -4,5 +4,5 @@ type ObjectKeys = 'id' | 'multiplicity' | 'js';
4
4
  export interface Signal1D
5
5
  extends Required<Pick<NMRSignal1D, ObjectKeys>>,
6
6
  Omit<NMRSignal1D, ObjectKeys> {
7
- originDelta?: number;
7
+ originalDelta?: number;
8
8
  }
@@ -8,7 +8,7 @@ interface SignalAxis {
8
8
  delta: number;
9
9
  nbAtoms?: number;
10
10
  diaIDs?: string[];
11
- originDelta: number;
11
+ originalDelta: number;
12
12
  }
13
13
 
14
14
  export interface Signal2D extends Signal {
@@ -5,6 +5,8 @@ import { Signal2D } from '../Signals/Signal2D';
5
5
  interface ZoneAxis extends FromTo {
6
6
  nbAtoms?: number;
7
7
  diaIDs?: string[];
8
+ originalFrom?: number;
9
+ originalTo?: number;
8
10
  }
9
11
 
10
12
  export interface Zone {
@@ -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 || isNaN(value)) continue;
18
+ if (!value || typeof value !== 'number') continue;
19
19
  sum += Math.abs(value);
20
20
  }
21
21
  }