nmr-processing 7.1.0 → 7.4.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 (137) hide show
  1. package/lib/assignment/get13CAssignments.d.ts +3 -3
  2. package/lib/assignment/get13CAssignments.js.map +1 -1
  3. package/lib/assignment/get1HAssignments.d.ts +3 -3
  4. package/lib/assignment/get1HAssignments.js.map +1 -1
  5. package/lib/assignment/getAssignments.d.ts +81 -0
  6. package/lib/assignment/getAssignments.js +44 -0
  7. package/lib/assignment/getAssignments.js.map +1 -0
  8. package/lib/assignment/utils/buildAssignments.d.ts +4 -4
  9. package/lib/assignment/utils/buildAssignments.js.map +1 -1
  10. package/lib/assignment/utils/createMapPossibleAssignments.d.ts +2 -2
  11. package/lib/assignment/utils/exploreTreeRec.d.ts +3 -3
  12. package/lib/assignment/utils/exploreTreeRec.js.map +1 -1
  13. package/lib/assignment/utils/getAssignment/buildAssignments.d.ts +72 -0
  14. package/lib/assignment/utils/getAssignment/buildAssignments.js +205 -0
  15. package/lib/assignment/utils/getAssignment/buildAssignments.js.map +1 -0
  16. package/lib/assignment/utils/getAssignment/checkIDs.d.ts +23 -0
  17. package/lib/assignment/utils/getAssignment/checkIDs.js +57 -0
  18. package/lib/assignment/utils/getAssignment/checkIDs.js.map +1 -0
  19. package/lib/assignment/utils/getAssignment/createMapPossibleAssignment.d.ts +15 -0
  20. package/lib/assignment/utils/getAssignment/createMapPossibleAssignment.js +55 -0
  21. package/lib/assignment/utils/getAssignment/createMapPossibleAssignment.js.map +1 -0
  22. package/lib/assignment/utils/getAssignment/exploreTree.d.ts +22 -0
  23. package/lib/assignment/utils/getAssignment/exploreTree.js +93 -0
  24. package/lib/assignment/utils/getAssignment/exploreTree.js.map +1 -0
  25. package/lib/assignment/utils/getAssignment/formatData.d.ts +14 -0
  26. package/lib/assignment/utils/getAssignment/formatData.js +20 -0
  27. package/lib/assignment/utils/getAssignment/formatData.js.map +1 -0
  28. package/lib/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.d.ts +3 -0
  29. package/lib/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js +14 -0
  30. package/lib/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js.map +1 -0
  31. package/lib/assignment/utils/getAssignment/getTargetsAndCorrelations.d.ts +18 -0
  32. package/lib/assignment/utils/getAssignment/getTargetsAndCorrelations.js +37 -0
  33. package/lib/assignment/utils/getAssignment/getTargetsAndCorrelations.js.map +1 -0
  34. package/lib/assignment/utils/getAssignment/getWorkFlow.d.ts +19 -0
  35. package/lib/assignment/utils/getAssignment/getWorkFlow.js +52 -0
  36. package/lib/assignment/utils/getAssignment/getWorkFlow.js.map +1 -0
  37. package/lib/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.d.ts +7 -0
  38. package/lib/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js +43 -0
  39. package/lib/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js.map +1 -0
  40. package/lib/assignment/utils/getAssignment/isSpectraData1D.d.ts +2 -0
  41. package/lib/assignment/utils/getAssignment/isSpectraData1D.js +8 -0
  42. package/lib/assignment/utils/getAssignment/isSpectraData1D.js.map +1 -0
  43. package/lib/assignment/utils/getAssignment/partialScore.d.ts +13 -0
  44. package/lib/assignment/utils/getAssignment/partialScore.js +221 -0
  45. package/lib/assignment/utils/getAssignment/partialScore.js.map +1 -0
  46. package/lib/assignment/utils/getAssignment/searchIndices.d.ts +6 -0
  47. package/lib/assignment/utils/getAssignment/searchIndices.js +21 -0
  48. package/lib/assignment/utils/getAssignment/searchIndices.js.map +1 -0
  49. package/lib/assignment/utils/partialScore.d.ts +2 -2
  50. package/lib/constants/gyromagneticRatio.d.ts +5 -19
  51. package/lib/constants/gyromagneticRatio.js +2 -3
  52. package/lib/constants/gyromagneticRatio.js.map +1 -1
  53. package/lib/index.d.ts +2 -0
  54. package/lib/index.js +2 -0
  55. package/lib/index.js.map +1 -1
  56. package/lib/peaks/peaksToRanges.js +1 -0
  57. package/lib/peaks/peaksToRanges.js.map +1 -1
  58. package/lib/prediction/utils/predict2D.d.ts +0 -2
  59. package/lib/prediction/utils/predict2D.js +13 -12
  60. package/lib/prediction/utils/predict2D.js.map +1 -1
  61. package/lib/signals/signals2DToZ.d.ts +1 -0
  62. package/lib/signals/signals2DToZ.js +19 -4
  63. package/lib/signals/signals2DToZ.js.map +1 -1
  64. package/lib/utilities/getFrequency.d.ts +21 -0
  65. package/lib/utilities/getFrequency.js +30 -0
  66. package/lib/utilities/getFrequency.js.map +1 -0
  67. package/lib-esm/assignment/get13CAssignments.js.map +1 -1
  68. package/lib-esm/assignment/get1HAssignments.js.map +1 -1
  69. package/lib-esm/assignment/getAssignments.js +37 -0
  70. package/lib-esm/assignment/getAssignments.js.map +1 -0
  71. package/lib-esm/assignment/utils/buildAssignments.js.map +1 -1
  72. package/lib-esm/assignment/utils/exploreTreeRec.js.map +1 -1
  73. package/lib-esm/assignment/utils/getAssignment/buildAssignments.js +198 -0
  74. package/lib-esm/assignment/utils/getAssignment/buildAssignments.js.map +1 -0
  75. package/lib-esm/assignment/utils/getAssignment/checkIDs.js +48 -0
  76. package/lib-esm/assignment/utils/getAssignment/checkIDs.js.map +1 -0
  77. package/lib-esm/assignment/utils/getAssignment/createMapPossibleAssignment.js +51 -0
  78. package/lib-esm/assignment/utils/getAssignment/createMapPossibleAssignment.js.map +1 -0
  79. package/lib-esm/assignment/utils/getAssignment/exploreTree.js +89 -0
  80. package/lib-esm/assignment/utils/getAssignment/exploreTree.js.map +1 -0
  81. package/lib-esm/assignment/utils/getAssignment/formatData.js +16 -0
  82. package/lib-esm/assignment/utils/getAssignment/formatData.js.map +1 -0
  83. package/lib-esm/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js +10 -0
  84. package/lib-esm/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js.map +1 -0
  85. package/lib-esm/assignment/utils/getAssignment/getTargetsAndCorrelations.js +33 -0
  86. package/lib-esm/assignment/utils/getAssignment/getTargetsAndCorrelations.js.map +1 -0
  87. package/lib-esm/assignment/utils/getAssignment/getWorkFlow.js +50 -0
  88. package/lib-esm/assignment/utils/getAssignment/getWorkFlow.js.map +1 -0
  89. package/lib-esm/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js +41 -0
  90. package/lib-esm/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js.map +1 -0
  91. package/lib-esm/assignment/utils/getAssignment/isSpectraData1D.js +4 -0
  92. package/lib-esm/assignment/utils/getAssignment/isSpectraData1D.js.map +1 -0
  93. package/lib-esm/assignment/utils/getAssignment/partialScore.js +214 -0
  94. package/lib-esm/assignment/utils/getAssignment/partialScore.js.map +1 -0
  95. package/lib-esm/assignment/utils/getAssignment/searchIndices.js +17 -0
  96. package/lib-esm/assignment/utils/getAssignment/searchIndices.js.map +1 -0
  97. package/lib-esm/constants/gyromagneticRatio.js +1 -2
  98. package/lib-esm/constants/gyromagneticRatio.js.map +1 -1
  99. package/lib-esm/index.js +2 -0
  100. package/lib-esm/index.js.map +1 -1
  101. package/lib-esm/peaks/peaksToRanges.js +1 -0
  102. package/lib-esm/peaks/peaksToRanges.js.map +1 -1
  103. package/lib-esm/prediction/utils/predict2D.js +13 -12
  104. package/lib-esm/prediction/utils/predict2D.js.map +1 -1
  105. package/lib-esm/signals/signals2DToZ.js +19 -4
  106. package/lib-esm/signals/signals2DToZ.js.map +1 -1
  107. package/lib-esm/utilities/getFrequency.js +26 -0
  108. package/lib-esm/utilities/getFrequency.js.map +1 -0
  109. package/package.json +10 -9
  110. package/src/assignment/get13CAssignments.ts +2 -2
  111. package/src/assignment/get1HAssignments.ts +2 -2
  112. package/src/assignment/getAssignments.ts +149 -0
  113. package/src/assignment/utils/buildAssignments.ts +4 -4
  114. package/src/assignment/utils/createMapPossibleAssignments.ts +2 -2
  115. package/src/assignment/utils/exploreTreeRec.ts +5 -5
  116. package/src/assignment/utils/getAssignment/buildAssignments.ts +339 -0
  117. package/src/assignment/utils/getAssignment/checkIDs.ts +76 -0
  118. package/src/assignment/utils/getAssignment/createMapPossibleAssignment.ts +85 -0
  119. package/src/assignment/utils/getAssignment/data/correlations.js +713 -0
  120. package/src/assignment/utils/getAssignment/data/predictions.js +34 -0
  121. package/src/assignment/utils/getAssignment/exploreTree.ts +171 -0
  122. package/src/assignment/utils/getAssignment/formatData.ts +35 -0
  123. package/src/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.ts +16 -0
  124. package/src/assignment/utils/getAssignment/getTargetsAndCorrelations.ts +63 -0
  125. package/src/assignment/utils/getAssignment/getWorkFlow.ts +72 -0
  126. package/src/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.ts +55 -0
  127. package/src/assignment/utils/getAssignment/isSpectraData1D.ts +7 -0
  128. package/src/assignment/utils/getAssignment/partialScore.ts +308 -0
  129. package/src/assignment/utils/getAssignment/searchIndices.ts +19 -0
  130. package/src/assignment/utils/partialScore.ts +2 -2
  131. package/src/constants/gyromagneticRatio.ts +25 -1
  132. package/src/index.ts +2 -0
  133. package/src/ml-tree-set.d.ts +1 -1
  134. package/src/peaks/peaksToRanges.ts +1 -0
  135. package/src/prediction/utils/predict2D.ts +16 -16
  136. package/src/signals/signals2DToZ.ts +29 -5
  137. package/src/utilities/getFrequency.ts +47 -0
@@ -0,0 +1,76 @@
1
+ import type { NMRRange, NMRSignal1D, NMRSignal2D, NMRZone } from '../../..';
2
+ import { MakeMandatory } from '../../../utilities/MakeMandatory';
3
+ import type {
4
+ SpectraData,
5
+ SpectraData1D,
6
+ SpectraData2D,
7
+ } from '../../getAssignments';
8
+ import generateID from '../generateID';
9
+
10
+ import { isSpectraData1D } from './isSpectraData1D';
11
+
12
+ export type NMRSignal1DWithId = MakeMandatory<NMRSignal1D, 'id'>;
13
+ export type NMRSignal2DWithId = MakeMandatory<NMRSignal2D, 'id'>;
14
+
15
+ export interface NMRZoneWithIds extends Omit<NMRZone, 'signals' | 'id'> {
16
+ id: string;
17
+ signals: Array<NMRSignal2DWithId>;
18
+ }
19
+
20
+ export interface NMRRangeWithIds extends Omit<NMRRange, 'id' | 'signals'> {
21
+ id: string;
22
+ signals: Array<NMRSignal1DWithId>;
23
+ }
24
+
25
+ export interface SpectraData1DWithIds extends Omit<SpectraData1D, 'ranges'> {
26
+ ranges: NMRRangeWithIds[];
27
+ }
28
+ export interface SpectraData2DWithIds extends Omit<SpectraData2D, 'zones'> {
29
+ zones: NMRZoneWithIds[];
30
+ }
31
+
32
+ export type SpectraDataWithIds = SpectraData1DWithIds | SpectraData2DWithIds;
33
+
34
+ export function checkIDs(input: SpectraData[] = []): SpectraDataWithIds[] {
35
+ let inputClone = JSON.parse(JSON.stringify(input)) as SpectraData[];
36
+ let spectra: SpectraDataWithIds[] = [];
37
+ for (const spectraData of inputClone) {
38
+ const { info, id } = spectraData;
39
+ if (isSpectraData1D(spectraData)) {
40
+ let data = addIDs(spectraData.ranges) as NMRRangeWithIds[];
41
+ for (const element of data) {
42
+ const { integration } = element;
43
+ for (let signal of element.signals || []) {
44
+ if (!signal.integration) signal.integration = integration;
45
+ }
46
+ }
47
+ spectra.push({ id, info, ranges: data });
48
+ } else {
49
+ let data = addIDs(spectraData.zones) as NMRZoneWithIds[];
50
+ spectra.push({ id, info, zones: data });
51
+ }
52
+ }
53
+ return spectra;
54
+ }
55
+
56
+ export function hasIDs(
57
+ data: NMRRange[] | NMRZone[],
58
+ ): asserts data is NMRRangeWithIds[] | NMRZoneWithIds[] {
59
+ for (const element of data) {
60
+ if (!element.id) throw new Error('A range/zone has not an ID');
61
+ for (let signal of element.signals || []) {
62
+ if (!signal.id) throw new Error('A signal has not an ID');
63
+ }
64
+ }
65
+ }
66
+
67
+ export function addIDs(data: NMRRange[] | NMRZone[]) {
68
+ for (const element of data) {
69
+ if (!element.id) element.id = generateID();
70
+ for (let signal of element.signals || []) {
71
+ if (!signal.id) signal.id = generateID();
72
+ }
73
+ }
74
+ hasIDs(data);
75
+ return data;
76
+ }
@@ -0,0 +1,85 @@
1
+ import { getCorrelationDelta } from 'nmr-correlation';
2
+
3
+ import { PossibleAssignmentMap } from '../createMapPossibleAssignments';
4
+
5
+ import {
6
+ AtomTypes,
7
+ PredictionsByAtomType,
8
+ RestrictionByCS,
9
+ } from './buildAssignments';
10
+ import { TargetsByAtomType } from './getTargetsAndCorrelations';
11
+
12
+ export interface PossibleAssignments {
13
+ [key: string]: string[];
14
+ }
15
+ export interface MapPossibleAssignments {
16
+ [key: string]: PossibleAssignmentMap;
17
+ }
18
+ export interface CreateMapPossibleAssignmentOptions {
19
+ restrictionByCS: RestrictionByCS;
20
+ predictions: PredictionsByAtomType;
21
+ targets: TargetsByAtomType;
22
+ }
23
+ export function createMapPossibleAssignment(
24
+ expandMap: MapPossibleAssignments,
25
+ props: CreateMapPossibleAssignmentOptions,
26
+ ) {
27
+ const { restrictionByCS, predictions, targets } = props;
28
+
29
+ const { tolerance: toleranceCS, chemicalShiftRestriction } = restrictionByCS;
30
+
31
+ const atomTypes = Object.keys(predictions) as AtomTypes[];
32
+
33
+ for (const atomType of atomTypes) {
34
+ let errorAbs = toleranceCS[atomType];
35
+ let predictionByAtomType = predictions[atomType];
36
+ let targetByAtomType = targets[atomType];
37
+ if (!expandMap[atomType]) expandMap[atomType] = {};
38
+ for (const diaID in predictionByAtomType) {
39
+ let prediction = predictionByAtomType[diaID];
40
+ expandMap[atomType][diaID] = [];
41
+
42
+ if (targetByAtomType) {
43
+ for (const targetID in targetByAtomType) {
44
+ let target = targetByAtomType[targetID];
45
+ const { nbAtoms, protonsCount: protonsCountFromPrediction } =
46
+ prediction;
47
+ const { integration, protonsCount } = target;
48
+
49
+ const couldBeAssigned = !integration
50
+ ? true
51
+ : atomType === 'H'
52
+ ? nbAtoms - integration < 1
53
+ : protonsCount.length > 0
54
+ ? protonsCount.some(
55
+ (count: number) => protonsCountFromPrediction === count,
56
+ )
57
+ : true;
58
+ if (couldBeAssigned) {
59
+ if (
60
+ !chemicalShiftRestriction ||
61
+ typeof prediction.delta === 'undefined'
62
+ ) {
63
+ // Chemical shift is not a restriction
64
+ expandMap[atomType][diaID].push(targetID);
65
+ } else {
66
+ let targetDelta = getCorrelationDelta(target);
67
+ if (targetDelta === undefined) {
68
+ throw new Error(`Correlation has not delta`);
69
+ }
70
+ let distAfterLimit = Math.abs(
71
+ prediction.delta - targetDelta - errorAbs,
72
+ );
73
+
74
+ if (distAfterLimit < 4 * errorAbs) {
75
+ expandMap[atomType][diaID].push(targetID);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ expandMap[atomType][diaID].push('*');
82
+ }
83
+ }
84
+ return expandMap;
85
+ }