nmr-processing 7.4.3 → 8.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.
Files changed (114) hide show
  1. package/lib/assignment/getAssignments.js +1 -1
  2. package/lib/assignment/getAssignments.js.map +1 -1
  3. package/lib/assignment/utils/getAssignment/checkIDs.d.ts +1 -1
  4. package/lib/assignment/utils/getAssignment/checkIDs.js.map +1 -1
  5. package/lib/databases/getDatabase.d.ts +6 -1
  6. package/lib/databases/getDatabase.js +13 -3
  7. package/lib/databases/getDatabase.js.map +1 -1
  8. package/lib/index.d.ts +4 -2
  9. package/lib/index.js +3 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/peaks/NMRPeak1D.d.ts +0 -1
  12. package/lib/peaks/peaksToRanges.d.ts +16 -0
  13. package/lib/peaks/peaksToRanges.js +2 -1
  14. package/lib/peaks/peaksToRanges.js.map +1 -1
  15. package/lib/peaks/solventSuppression.d.ts +3 -0
  16. package/lib/peaks/solventSuppression.js +155 -0
  17. package/lib/peaks/solventSuppression.js.map +1 -0
  18. package/lib/peaks/util/jAnalyzer.d.ts +1 -1
  19. package/lib/peaks/util/jAnalyzer.js +3 -2
  20. package/lib/peaks/util/jAnalyzer.js.map +1 -1
  21. package/lib/prediction/predictAllSpectra.d.ts +22 -4
  22. package/lib/prediction/predictAllSpectra.js +102 -16
  23. package/lib/prediction/predictAllSpectra.js.map +1 -1
  24. package/lib/ranges/markSolventSignal.d.ts +3 -0
  25. package/lib/ranges/markSolventSignal.js +107 -0
  26. package/lib/ranges/markSolventSignal.js.map +1 -0
  27. package/lib/ranges/rangesToXY.js +27 -3
  28. package/lib/ranges/rangesToXY.js.map +1 -1
  29. package/lib/signals/addDummySignals.d.ts +2 -0
  30. package/lib/signals/addDummySignals.js +56 -0
  31. package/lib/signals/addDummySignals.js.map +1 -0
  32. package/lib/signals/hackSignalsToXY.js +2 -48
  33. package/lib/signals/hackSignalsToXY.js.map +1 -1
  34. package/lib/signals/simulation/simulate1D.d.ts +1 -39
  35. package/lib/signals/simulation/simulate1D.js +13 -240
  36. package/lib/signals/simulation/simulate1D.js.map +1 -1
  37. package/lib/signals/simulation/simulateXYPeaks.d.ts +47 -0
  38. package/lib/signals/simulation/simulateXYPeaks.js +246 -0
  39. package/lib/signals/simulation/simulateXYPeaks.js.map +1 -0
  40. package/lib/utilities/getFrequency.d.ts +1 -1
  41. package/lib/utilities/getFrequency.js +4 -4
  42. package/lib/utilities/getFrequency.js.map +1 -1
  43. package/lib/xyz/NMRSignal2D.d.ts +3 -3
  44. package/lib/xyz/util/formatZone.d.ts +3 -0
  45. package/lib/xyz/util/formatZone.js +38 -0
  46. package/lib/xyz/util/formatZone.js.map +1 -0
  47. package/lib/xyz/xyzAutoZonesPicking.d.ts +1 -2
  48. package/lib/xyz/xyzAutoZonesPicking.js +2 -34
  49. package/lib/xyz/xyzAutoZonesPicking.js.map +1 -1
  50. package/lib/xyz/xyzJResAnalyzer.d.ts +6 -1
  51. package/lib/xyz/xyzJResAnalyzer.js +9 -8
  52. package/lib/xyz/xyzJResAnalyzer.js.map +1 -1
  53. package/lib-esm/assignment/getAssignments.js +1 -1
  54. package/lib-esm/assignment/getAssignments.js.map +1 -1
  55. package/lib-esm/assignment/utils/getAssignment/checkIDs.js.map +1 -1
  56. package/lib-esm/databases/getDatabase.js +13 -3
  57. package/lib-esm/databases/getDatabase.js.map +1 -1
  58. package/lib-esm/index.js +3 -1
  59. package/lib-esm/index.js.map +1 -1
  60. package/lib-esm/peaks/peaksToRanges.js +1 -1
  61. package/lib-esm/peaks/peaksToRanges.js.map +1 -1
  62. package/lib-esm/peaks/solventSuppression.js +151 -0
  63. package/lib-esm/peaks/solventSuppression.js.map +1 -0
  64. package/lib-esm/peaks/util/jAnalyzer.js +3 -2
  65. package/lib-esm/peaks/util/jAnalyzer.js.map +1 -1
  66. package/lib-esm/prediction/predictAllSpectra.js +102 -16
  67. package/lib-esm/prediction/predictAllSpectra.js.map +1 -1
  68. package/lib-esm/ranges/markSolventSignal.js +100 -0
  69. package/lib-esm/ranges/markSolventSignal.js.map +1 -0
  70. package/lib-esm/ranges/rangesToXY.js +27 -3
  71. package/lib-esm/ranges/rangesToXY.js.map +1 -1
  72. package/lib-esm/signals/addDummySignals.js +52 -0
  73. package/lib-esm/signals/addDummySignals.js.map +1 -0
  74. package/lib-esm/signals/hackSignalsToXY.js +2 -48
  75. package/lib-esm/signals/hackSignalsToXY.js.map +1 -1
  76. package/lib-esm/signals/simulation/simulate1D.js +14 -238
  77. package/lib-esm/signals/simulation/simulate1D.js.map +1 -1
  78. package/lib-esm/signals/simulation/simulateXYPeaks.js +239 -0
  79. package/lib-esm/signals/simulation/simulateXYPeaks.js.map +1 -0
  80. package/lib-esm/utilities/getFrequency.js +1 -1
  81. package/lib-esm/utilities/getFrequency.js.map +1 -1
  82. package/lib-esm/xyz/util/formatZone.js +34 -0
  83. package/lib-esm/xyz/util/formatZone.js.map +1 -0
  84. package/lib-esm/xyz/xyzAutoZonesPicking.js +1 -33
  85. package/lib-esm/xyz/xyzAutoZonesPicking.js.map +1 -1
  86. package/lib-esm/xyz/xyzJResAnalyzer.js +9 -8
  87. package/lib-esm/xyz/xyzJResAnalyzer.js.map +1 -1
  88. package/package.json +14 -12
  89. package/src/assignment/getAssignments.ts +1 -1
  90. package/src/assignment/utils/getAssignment/checkIDs.ts +1 -1
  91. package/src/databases/getDatabase.ts +19 -2
  92. package/src/index.ts +5 -2
  93. package/src/peaks/NMRPeak1D.ts +0 -1
  94. package/src/peaks/peaksToRanges.ts +1 -1
  95. package/src/peaks/solventSuppression.ts +209 -0
  96. package/src/peaks/util/jAnalyzer.ts +5 -3
  97. package/src/prediction/predictAllSpectra.ts +151 -14
  98. package/src/ranges/markSolventSignal.ts +121 -0
  99. package/src/ranges/rangesToXY.ts +33 -4
  100. package/src/signals/addDummySignals.ts +77 -0
  101. package/src/signals/hackSignalsToXY.ts +2 -72
  102. package/src/signals/simulation/simulate1D.ts +14 -319
  103. package/src/signals/simulation/simulateXYPeaks.ts +332 -0
  104. package/src/utilities/getFrequency.ts +1 -1
  105. package/src/xyz/NMRSignal2D.ts +3 -3
  106. package/src/xyz/util/formatZone.ts +36 -0
  107. package/src/xyz/xyzAutoZonesPicking.ts +1 -35
  108. package/src/xyz/xyzJResAnalyzer.ts +14 -7
  109. package/lib/constants/gyromagneticRatio.d.ts +0 -6
  110. package/lib/constants/gyromagneticRatio.js +0 -26
  111. package/lib/constants/gyromagneticRatio.js.map +0 -1
  112. package/lib-esm/constants/gyromagneticRatio.js +0 -23
  113. package/lib-esm/constants/gyromagneticRatio.js.map +0 -1
  114. package/src/constants/gyromagneticRatio.ts +0 -49
@@ -0,0 +1,36 @@
1
+ import { NMRSignal2D } from '../NMRSignal2D';
2
+ import { NMRZone } from '../NMRZone';
3
+
4
+ export function formatZones(signals: NMRSignal2D[]) {
5
+ let zones: NMRZone[] = [];
6
+ for (const signal of signals) {
7
+ let minMax1 = [Number.MAX_VALUE, 0];
8
+ let minMax2 = [Number.MAX_VALUE, 0];
9
+ for (const peak of signal.peaks || []) {
10
+ if (peak.minX < minMax1[0]) {
11
+ minMax1[0] = peak.minX;
12
+ }
13
+ if (peak.maxX > minMax1[1]) {
14
+ minMax1[1] = peak.maxX;
15
+ }
16
+ if (peak.minY < minMax2[0]) {
17
+ minMax2[0] = peak.minY;
18
+ }
19
+ if (peak.maxY > minMax2[1]) {
20
+ minMax2[1] = peak.maxY;
21
+ }
22
+ }
23
+ zones.push({
24
+ x: {
25
+ from: minMax1[0],
26
+ to: minMax1[1],
27
+ },
28
+ y: {
29
+ from: minMax2[0],
30
+ to: minMax2[1],
31
+ },
32
+ signals: [signal],
33
+ });
34
+ }
35
+ return zones;
36
+ }
@@ -4,13 +4,13 @@ import * as matrixPeakFinders from 'ml-matrix-peaks-finder';
4
4
  import type { Peak2D } from 'ml-matrix-peaks-finder';
5
5
  import simpleClustering from 'ml-simple-clustering';
6
6
 
7
- import { NMRZone } from '..';
8
7
  import { determineRealTop } from '../peaks/util/determineRealTop';
9
8
  import { getKernel } from '../peaks/util/getKernel';
10
9
  import type { GetKernelOptions } from '../peaks/util/getKernel';
11
10
  import * as PeakOptimizer from '../peaks/util/peakOptimizer';
12
11
 
13
12
  import type { NMRSignal2D } from './NMRSignal2D';
13
+ import { formatZones } from './util/formatZone';
14
14
 
15
15
  const smallFilter = [
16
16
  [0, 0, 1, 2, 2, 2, 1, 0, 0],
@@ -183,40 +183,6 @@ export function xyzAutoZonesPicking(
183
183
  return formatZones(signals);
184
184
  }
185
185
 
186
- function formatZones(signals: NMRSignal2D[]) {
187
- let zones: NMRZone[] = [];
188
- for (const signal of signals) {
189
- let minMax1 = [Number.MAX_VALUE, 0];
190
- let minMax2 = [Number.MAX_VALUE, 0];
191
- for (const peak of signal.peaks || []) {
192
- if (peak.minX < minMax1[0]) {
193
- minMax1[0] = peak.minX;
194
- }
195
- if (peak.maxX > minMax1[1]) {
196
- minMax1[1] = peak.maxX;
197
- }
198
- if (peak.minY < minMax2[0]) {
199
- minMax2[0] = peak.minY;
200
- }
201
- if (peak.maxY > minMax2[1]) {
202
- minMax2[1] = peak.maxY;
203
- }
204
- }
205
- zones.push({
206
- x: {
207
- from: minMax1[0],
208
- to: minMax1[1],
209
- },
210
- y: {
211
- from: minMax2[0],
212
- to: minMax2[1],
213
- },
214
- signals: [signal],
215
- });
216
- }
217
- return zones;
218
- }
219
-
220
186
  /**
221
187
  * This function converts a set of 2D-peaks in 2D-signals. Each signal could be composed
222
188
  * of many 2D-peaks, and it has some additional information related to the NMR spectrum.
@@ -6,6 +6,7 @@ import jAnalyzer from '../peaks/util/jAnalyzer';
6
6
  import type { MakeMandatory } from '../utilities/MakeMandatory';
7
7
 
8
8
  import type { NMRSignal2D } from './NMRSignal2D';
9
+ import { formatZones } from './util/formatZone';
9
10
 
10
11
  interface CompilePatternOptions {
11
12
  observedFrequencies?: number[] | Float64Array;
@@ -25,6 +26,11 @@ interface XYZJResAnalyzerOptions extends CompilePatternOptions {
25
26
  * @default 0
26
27
  */
27
28
  reference?: number;
29
+ /**
30
+ * if it is true returns zones instead of signals 2D
31
+ * @default false
32
+ */
33
+ getZones?: boolean;
28
34
  }
29
35
 
30
36
  type CompilePatternOptionsMandatory = MakeMandatory<
@@ -38,6 +44,7 @@ export function xyzJResAnalyzer(
38
44
  ) {
39
45
  let {
40
46
  reference = 0,
47
+ getZones = false,
41
48
  referenceMaxShiftError = 0.08,
42
49
  tolerances = [10, 100],
43
50
  nuclei = ['1H', '1H'],
@@ -46,20 +53,20 @@ export function xyzJResAnalyzer(
46
53
  jAxisKey: { jAxis: 'y', intensity: 'z' },
47
54
  },
48
55
  } = options;
49
- let temporalSignals = compilePattern(signals, {
56
+ let temporalSignals = compilePattern([...signals], {
50
57
  observedFrequencies,
51
58
  tolerances,
52
59
  nuclei,
53
60
  jAnalyzer,
54
61
  });
55
62
  //check if the signal are symmetric around the reference
56
- let result = [];
63
+ let signals2D = [];
57
64
  for (const tempSignal of temporalSignals) {
58
65
  let delta = tempSignal.y.delta;
59
66
  if (Math.abs(delta - reference) > referenceMaxShiftError) continue;
60
- result.push(tempSignal);
67
+ signals2D.push(tempSignal);
61
68
  }
62
- return result;
69
+ return getZones ? formatZones(signals2D) : signals2D;
63
70
  }
64
71
 
65
72
  function compilePattern(
@@ -122,10 +129,10 @@ function compilePattern(
122
129
  }
123
130
  if (peaksO.length > 0) {
124
131
  peaksO.reverse();
125
- let ranges = createSignals2D(peaksO, signalOptions);
132
+ let signals2D = createSignals2D(peaksO, signalOptions);
126
133
 
127
- for (const range of ranges) {
128
- newSignals.push(range);
134
+ for (const signal of signals2D) {
135
+ newSignals.push(signal);
129
136
  }
130
137
  }
131
138
  }
@@ -1,6 +0,0 @@
1
- export declare type Nuclei = '1H' | '2H' | '3H' | '3He' | '7Li' | '13C' | '14N' | '15N' | '17O' | '19F' | '23Na' | '27Al' | '29Si' | '31P' | '57Fe' | '63Cu' | '67Zn' | '129Xe';
2
- declare type GyromagneticRatio = {
3
- [key in Nuclei]: number;
4
- };
5
- export declare const gyromagneticRatio: GyromagneticRatio;
6
- export {};
@@ -1,26 +0,0 @@
1
- "use strict";
2
- // sources:
3
- // https://en.wikipedia.org/wiki/Gyromagnetic_ratio
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.gyromagneticRatio = void 0;
6
- exports.gyromagneticRatio = {
7
- '1H': 267.52218744e6,
8
- '2H': 41.065e6,
9
- '3H': 285.3508e6,
10
- '3He': -203.789e6,
11
- '7Li': 103.962e6,
12
- '13C': 67.28284e6,
13
- '14N': 19.331e6,
14
- '15N': -27.116e6,
15
- '17O': -36.264e6,
16
- '19F': 251.662e6,
17
- '23Na': 70.761e6,
18
- '27Al': 69.763e6,
19
- '29Si': -53.19e6,
20
- '31P': 108.291e6,
21
- '57Fe': 8.681e6,
22
- '63Cu': 71.118e6,
23
- '67Zn': 16.767e6,
24
- '129Xe': -73.997e6,
25
- };
26
- //# sourceMappingURL=gyromagneticRatio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gyromagneticRatio.js","sourceRoot":"","sources":["../../src/constants/gyromagneticRatio.ts"],"names":[],"mappings":";AAAA,WAAW;AACX,mDAAmD;;;AA4BtC,QAAA,iBAAiB,GAAsB;IAClD,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,CAAC,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,QAAQ;IAChB,KAAK,EAAE,CAAC,QAAQ;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,CAAC,OAAO;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,CAAC,QAAQ;CACnB,CAAC"}
@@ -1,23 +0,0 @@
1
- // sources:
2
- // https://en.wikipedia.org/wiki/Gyromagnetic_ratio
3
- export const gyromagneticRatio = {
4
- '1H': 267.52218744e6,
5
- '2H': 41.065e6,
6
- '3H': 285.3508e6,
7
- '3He': -203.789e6,
8
- '7Li': 103.962e6,
9
- '13C': 67.28284e6,
10
- '14N': 19.331e6,
11
- '15N': -27.116e6,
12
- '17O': -36.264e6,
13
- '19F': 251.662e6,
14
- '23Na': 70.761e6,
15
- '27Al': 69.763e6,
16
- '29Si': -53.19e6,
17
- '31P': 108.291e6,
18
- '57Fe': 8.681e6,
19
- '63Cu': 71.118e6,
20
- '67Zn': 16.767e6,
21
- '129Xe': -73.997e6,
22
- };
23
- //# sourceMappingURL=gyromagneticRatio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gyromagneticRatio.js","sourceRoot":"","sources":["../../src/constants/gyromagneticRatio.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,mDAAmD;AA4BnD,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,CAAC,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,QAAQ;IAChB,KAAK,EAAE,CAAC,QAAQ;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,CAAC,OAAO;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,CAAC,QAAQ;CACnB,CAAC"}
@@ -1,49 +0,0 @@
1
- // sources:
2
- // https://en.wikipedia.org/wiki/Gyromagnetic_ratio
3
-
4
- // TODO: #13 can we have a better source and more digits ? @jwist
5
-
6
- export type Nuclei =
7
- | '1H'
8
- | '2H'
9
- | '3H'
10
- | '3He'
11
- | '7Li'
12
- | '13C'
13
- | '14N'
14
- | '15N'
15
- | '17O'
16
- | '19F'
17
- | '23Na'
18
- | '27Al'
19
- | '29Si'
20
- | '31P'
21
- | '57Fe'
22
- | '63Cu'
23
- | '67Zn'
24
- | '129Xe';
25
-
26
- type GyromagneticRatio = {
27
- [key in Nuclei]: number;
28
- };
29
-
30
- export const gyromagneticRatio: GyromagneticRatio = {
31
- '1H': 267.52218744e6,
32
- '2H': 41.065e6,
33
- '3H': 285.3508e6,
34
- '3He': -203.789e6,
35
- '7Li': 103.962e6,
36
- '13C': 67.28284e6,
37
- '14N': 19.331e6,
38
- '15N': -27.116e6,
39
- '17O': -36.264e6,
40
- '19F': 251.662e6,
41
- '23Na': 70.761e6,
42
- '27Al': 69.763e6,
43
- '29Si': -53.19e6,
44
- '31P': 108.291e6,
45
- '57Fe': 8.681e6,
46
- '63Cu': 71.118e6,
47
- '67Zn': 16.767e6,
48
- '129Xe': -73.997e6,
49
- };