nmr-processing 3.3.4 → 5.0.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 (109) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/lib/assignment/get13CAssignments.d.ts +35 -0
  3. package/lib/assignment/get13CAssignments.js +54 -0
  4. package/lib/assignment/get13CAssignments.js.map +1 -0
  5. package/lib/assignment/get1HAssignments.d.ts +42 -0
  6. package/lib/assignment/get1HAssignments.js +55 -0
  7. package/lib/assignment/get1HAssignments.js.map +1 -0
  8. package/lib/assignment/utils/buildAssignments.d.ts +33 -0
  9. package/lib/assignment/utils/buildAssignments.js +93 -0
  10. package/lib/assignment/utils/buildAssignments.js.map +1 -0
  11. package/lib/assignment/utils/createMapPossibleAssignments.d.ts +15 -0
  12. package/lib/assignment/utils/createMapPossibleAssignments.js +51 -0
  13. package/lib/assignment/utils/createMapPossibleAssignments.js.map +1 -0
  14. package/lib/assignment/utils/exploreTreeRec.d.ts +22 -0
  15. package/lib/assignment/utils/exploreTreeRec.js +77 -0
  16. package/lib/assignment/utils/exploreTreeRec.js.map +1 -0
  17. package/lib/assignment/utils/generateID.d.ts +1 -0
  18. package/lib/assignment/utils/generateID.js +13 -0
  19. package/lib/assignment/utils/generateID.js.map +1 -0
  20. package/lib/assignment/utils/partialScore.d.ts +16 -0
  21. package/lib/assignment/utils/partialScore.js +91 -0
  22. package/lib/assignment/utils/partialScore.js.map +1 -0
  23. package/lib/index.d.ts +2 -5
  24. package/lib/index.js +2 -5
  25. package/lib/index.js.map +1 -1
  26. package/lib/peaks/peaksFilterImpurities.js +1 -1
  27. package/lib/peaks/peaksFilterImpurities.js.map +1 -1
  28. package/lib/peaks/peaksToRanges.js +11 -17
  29. package/lib/peaks/peaksToRanges.js.map +1 -1
  30. package/lib/peaks/util/determineRealTop.js +3 -2
  31. package/lib/peaks/util/determineRealTop.js.map +1 -1
  32. package/lib/peaks/util/jAnalyzer.js +33 -35
  33. package/lib/peaks/util/jAnalyzer.js.map +1 -1
  34. package/lib/ranges/rangesToXY.d.ts +2 -2
  35. package/lib/ranges/rangesToXY.js +10 -2
  36. package/lib/ranges/rangesToXY.js.map +1 -1
  37. package/lib/signals/signals2DToZ.d.ts +2 -2
  38. package/lib/signals/signalsToXY.d.ts +2 -2
  39. package/lib/signals/simulation/simulate1D.d.ts +4 -3
  40. package/lib/signals/simulation/simulate1D.js.map +1 -1
  41. package/lib/types/NMRPeak1D.d.ts +2 -9
  42. package/lib/types/NMRRange.d.ts +1 -0
  43. package/lib/types/NMRSignal1D.d.ts +1 -0
  44. package/lib/types/NMRSignal2D.d.ts +3 -4
  45. package/lib/types/NMRZone.d.ts +4 -3
  46. package/lib/xy/xyAutoPeaksPicking.d.ts +4 -60
  47. package/lib/xy/xyAutoPeaksPicking.js +3 -3
  48. package/lib/xy/xyAutoPeaksPicking.js.map +1 -1
  49. package/lib/xyz/xyzAutoPeaksPicking.js +4 -2
  50. package/lib/xyz/xyzAutoPeaksPicking.js.map +1 -1
  51. package/lib-esm/assignment/get13CAssignments.js +47 -0
  52. package/lib-esm/assignment/get13CAssignments.js.map +1 -0
  53. package/lib-esm/assignment/get1HAssignments.js +48 -0
  54. package/lib-esm/assignment/get1HAssignments.js.map +1 -0
  55. package/lib-esm/assignment/utils/buildAssignments.js +86 -0
  56. package/lib-esm/assignment/utils/buildAssignments.js.map +1 -0
  57. package/lib-esm/assignment/utils/createMapPossibleAssignments.js +47 -0
  58. package/lib-esm/assignment/utils/createMapPossibleAssignments.js.map +1 -0
  59. package/lib-esm/assignment/utils/exploreTreeRec.js +73 -0
  60. package/lib-esm/assignment/utils/exploreTreeRec.js.map +1 -0
  61. package/lib-esm/assignment/utils/generateID.js +10 -0
  62. package/lib-esm/assignment/utils/generateID.js.map +1 -0
  63. package/lib-esm/assignment/utils/partialScore.js +87 -0
  64. package/lib-esm/assignment/utils/partialScore.js.map +1 -0
  65. package/lib-esm/index.js +2 -5
  66. package/lib-esm/index.js.map +1 -1
  67. package/lib-esm/peaks/peaksFilterImpurities.js +1 -1
  68. package/lib-esm/peaks/peaksFilterImpurities.js.map +1 -1
  69. package/lib-esm/peaks/peaksToRanges.js +11 -17
  70. package/lib-esm/peaks/peaksToRanges.js.map +1 -1
  71. package/lib-esm/peaks/util/determineRealTop.js +4 -3
  72. package/lib-esm/peaks/util/determineRealTop.js.map +1 -1
  73. package/lib-esm/peaks/util/jAnalyzer.js +33 -35
  74. package/lib-esm/peaks/util/jAnalyzer.js.map +1 -1
  75. package/lib-esm/ranges/rangesToXY.js +10 -2
  76. package/lib-esm/ranges/rangesToXY.js.map +1 -1
  77. package/lib-esm/signals/simulation/simulate1D.js.map +1 -1
  78. package/lib-esm/xy/xyAutoPeaksPicking.js +3 -3
  79. package/lib-esm/xy/xyAutoPeaksPicking.js.map +1 -1
  80. package/lib-esm/xyz/xyzAutoPeaksPicking.js +4 -2
  81. package/lib-esm/xyz/xyzAutoPeaksPicking.js.map +1 -1
  82. package/package.json +4 -4
  83. package/src/assignment/get13CAssignments.ts +100 -0
  84. package/src/assignment/get1HAssignments.ts +116 -0
  85. package/src/assignment/utils/buildAssignments.ts +155 -0
  86. package/src/assignment/utils/createMapPossibleAssignments.ts +76 -0
  87. package/src/assignment/utils/exploreTreeRec.ts +138 -0
  88. package/src/assignment/utils/generateID.ts +11 -0
  89. package/src/assignment/utils/partialScore.ts +128 -0
  90. package/src/index.ts +3 -6
  91. package/src/peaks/peaksFilterImpurities.ts +1 -1
  92. package/src/peaks/peaksToRanges.ts +11 -17
  93. package/src/peaks/util/determineRealTop.ts +4 -6
  94. package/src/peaks/util/jAnalyzer.ts +34 -36
  95. package/src/ranges/rangesToXY.ts +14 -7
  96. package/src/signals/signals2DToZ.ts +2 -2
  97. package/src/signals/signalsToXY.ts +2 -2
  98. package/src/signals/simulation/simulate1D.ts +4 -3
  99. package/src/types/NMRPeak1D.ts +3 -9
  100. package/src/types/NMRRange.ts +1 -0
  101. package/src/types/NMRSignal1D.ts +1 -0
  102. package/src/types/NMRSignal2D.ts +4 -4
  103. package/src/types/NMRZone.ts +4 -3
  104. package/src/types/ml-spectra-processing/index.d.ts +8 -8
  105. package/src/types/ml-tree-set/index.d.ts +18 -0
  106. package/src/types/openchemlib-utils/index..d.ts +2 -2
  107. package/src/xy/xyAutoPeaksPicking.ts +19 -58
  108. package/src/xyz/xyzAutoPeaksPicking.ts +4 -2
  109. package/src/types/ml-gsd/index.d.ts +0 -164
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.0.0](https://www.github.com/cheminfo/nmr-processing/compare/v4.0.0...v5.0.0) (2021-11-26)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * xyzAutoPeaksPicking change structure NMRSignal2D
9
+
10
+ ### Features
11
+
12
+ * xyzAutoPeaksPicking change structure NMRSignal2D ([bc5192f](https://www.github.com/cheminfo/nmr-processing/commit/bc5192f1155743c225b92353c2750519a8eaf1ab))
13
+
14
+ ## [4.0.0](https://www.github.com/cheminfo/nmr-processing/compare/v3.4.1...v4.0.0) (2021-11-23)
15
+
16
+
17
+ ### ⚠ BREAKING CHANGES
18
+
19
+ * change shape1D n NMRPeak1D structure (#119)
20
+
21
+ ### Features
22
+
23
+ * change shape1D n NMRPeak1D structure ([#119](https://www.github.com/cheminfo/nmr-processing/issues/119)) ([0255510](https://www.github.com/cheminfo/nmr-processing/commit/02555100407fe2ff80a4c41fff1ddd66d97fbaef))
24
+
25
+ ### [3.4.1](https://www.github.com/cheminfo/nmr-processing/compare/v3.4.0...v3.4.1) (2021-11-06)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * **rangesToXY:** draw massive ranges ([#117](https://www.github.com/cheminfo/nmr-processing/issues/117)) ([a80025a](https://www.github.com/cheminfo/nmr-processing/commit/a80025a5b5805625f036b478ed9d24f269cfa2b7))
31
+
32
+ ## [3.4.0](https://www.github.com/cheminfo/nmr-processing/compare/v3.3.4...v3.4.0) (2021-11-04)
33
+
34
+
35
+ ### Features
36
+
37
+ * add get13CAssignments function ([#116](https://www.github.com/cheminfo/nmr-processing/issues/116)) ([73f9df6](https://www.github.com/cheminfo/nmr-processing/commit/73f9df6c1d88599828409f8194fb58c1323e0ae9))
38
+ * automatic assignment for proton ([#114](https://www.github.com/cheminfo/nmr-processing/issues/114)) ([f50932e](https://www.github.com/cheminfo/nmr-processing/commit/f50932e78f93db5a4c8dd0c798240a4b18df153a))
39
+
40
+
41
+ ### Bug Fixes
42
+
43
+ * export get1HAssignment ([7753e7f](https://www.github.com/cheminfo/nmr-processing/commit/7753e7fbb1e3927b1d32746ab0f4f3b380d98dca))
44
+
3
45
  ### [3.3.4](https://www.github.com/cheminfo/nmr-processing/compare/v3.3.3...v3.3.4) (2021-10-26)
4
46
 
5
47
 
@@ -0,0 +1,35 @@
1
+ import { Molecule } from 'openchemlib';
2
+ import { NMRRange } from '..';
3
+ import { PredictCarbonOptions } from '../prediction/predictCarbon';
4
+ import { RestrictionByCS } from './utils/buildAssignments';
5
+ export interface Get13CAssignmentsOptions {
6
+ restrictionByCS?: Partial<RestrictionByCS>;
7
+ /**
8
+ * min score to accept an assignment
9
+ * @default 1
10
+ */
11
+ minScore?: number;
12
+ /**
13
+ * maximal number of assignments to return
14
+ * @default 10
15
+ */
16
+ maxSolutions?: number;
17
+ /**
18
+ * number of allowed unassignment signals
19
+ * @default 0
20
+ */
21
+ nbAllowedUnAssigned?: number;
22
+ /**
23
+ * time limit in miliseconds to finish the assignment procedure.
24
+ * @default 6000
25
+ */
26
+ timeout?: number;
27
+ /**
28
+ * prediction options
29
+ */
30
+ predictionOptions?: PredictCarbonOptions;
31
+ }
32
+ export declare function get13CAssignments(ranges: NMRRange[], molecule: Molecule, options?: Get13CAssignmentsOptions): Promise<{
33
+ score: any;
34
+ assignment: unknown[];
35
+ }[]>;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.get13CAssignments = void 0;
7
+ const openchemlib_utils_1 = require("openchemlib-utils");
8
+ const predictCarbon_1 = require("../prediction/predictCarbon");
9
+ const buildAssignments_1 = require("./utils/buildAssignments");
10
+ const generateID_1 = __importDefault(require("./utils/generateID"));
11
+ function checkAtomsAndDiaIDs(signals) {
12
+ for (const signal of signals) {
13
+ if (!signal.atoms)
14
+ throw new Error('signal has not atoms property');
15
+ if (!signal.diaIDs)
16
+ throw new Error('signal has not diaIDs property');
17
+ if (!signal.nbAtoms)
18
+ throw new Error('signal has not nbAtoms property');
19
+ }
20
+ }
21
+ function checkIntegration(ranges) {
22
+ for (let range of ranges) {
23
+ if (range.integration === undefined)
24
+ range.integration = 0;
25
+ }
26
+ return ranges;
27
+ }
28
+ async function get13CAssignments(ranges, molecule, options = {}) {
29
+ let { restrictionByCS = {}, minScore = 1, maxSolutions = 10, nbAllowedUnAssigned = 0, timeout = 6000, predictionOptions = {}, } = options;
30
+ if (!molecule) {
31
+ throw new Error('It is needed a OCL molecule instance to assign');
32
+ }
33
+ (0, openchemlib_utils_1.addDiastereotopicMissingChirality)(molecule);
34
+ const { joinedSignals } = await (0, predictCarbon_1.predictCarbon)(molecule, predictionOptions);
35
+ checkAtomsAndDiaIDs(joinedSignals);
36
+ const copyRanges = checkIntegration(ranges);
37
+ const targets = {};
38
+ for (const range of copyRanges) {
39
+ const { id = (0, generateID_1.default)() } = range;
40
+ targets[id] = JSON.parse(JSON.stringify(range));
41
+ }
42
+ return (0, buildAssignments_1.buildAssignments)({
43
+ restrictionByCS,
44
+ timeout,
45
+ minScore,
46
+ nbAllowedUnAssigned,
47
+ maxSolutions,
48
+ targets,
49
+ joinedSignals,
50
+ useIntegrationRestriction: false,
51
+ });
52
+ }
53
+ exports.get13CAssignments = get13CAssignments;
54
+ //# sourceMappingURL=get13CAssignments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get13CAssignments.js","sourceRoot":"","sources":["../../src/assignment/get13CAssignments.ts"],"names":[],"mappings":";;;;;;AACA,yDAAsE;AAGtE,+DAGqC;AAIrC,+DAA6E;AAC7E,oEAA4C;AAE5C,SAAS,mBAAmB,CAC1B,OAAsB;IAEtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACzE;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAkB;IAC1C,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;QACxB,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;KAC5D;IACD,OAAO,MAAmC,CAAC;AAC7C,CAAC;AA8BM,KAAK,UAAU,iBAAiB,CACrC,MAAkB,EAClB,QAAkB,EAClB,UAAoC,EAAE;IAEtC,IAAI,EACF,eAAe,GAAG,EAAE,EACpB,QAAQ,GAAG,CAAC,EACZ,YAAY,GAAG,EAAE,EACjB,mBAAmB,GAAG,CAAC,EACvB,OAAO,GAAG,IAAI,EACd,iBAAiB,GAAG,EAAE,GACvB,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACnE;IAED,IAAA,qDAAiC,EAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,6BAAa,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAE3E,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;QAC9B,MAAM,EAAE,EAAE,GAAG,IAAA,oBAAU,GAAE,EAAE,GAAG,KAAK,CAAC;QACpC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACjD;IAED,OAAO,IAAA,mCAAgB,EAAC;QACtB,eAAe;QACf,OAAO;QACP,QAAQ;QACR,mBAAmB;QACnB,YAAY;QACZ,OAAO;QACP,aAAa;QACb,yBAAyB,EAAE,KAAK;KACjC,CAAC,CAAC;AACL,CAAC;AAxCD,8CAwCC"}
@@ -0,0 +1,42 @@
1
+ import { Molecule } from 'openchemlib';
2
+ import { NMRRange } from '..';
3
+ import { PredictProtonOptions } from '../prediction/predictProton';
4
+ import { MakeMandatory } from '../types/MakeMandatory';
5
+ import type { NMRSignal1D } from '../types/NMRSignal1D';
6
+ import { RestrictionByCS } from './utils/buildAssignments';
7
+ export declare type NMRSignal1DWithAtomsAndDiaIDs = MakeMandatory<NMRSignal1D, 'atoms' | 'diaIDs' | 'nbAtoms'>;
8
+ export declare type NMRRangeWithIntegration = MakeMandatory<NMRRange, 'integration'>;
9
+ export interface Get1HAssignmentsOptions {
10
+ restrictionByCS?: Partial<RestrictionByCS>;
11
+ /**
12
+ * min score to accept an assignment
13
+ * @default 1
14
+ */
15
+ minScore?: number;
16
+ /**
17
+ * maximal number of assignments to return
18
+ * @default 10
19
+ */
20
+ maxSolutions?: number;
21
+ /**
22
+ * number of allowed unassignment signals
23
+ * @default 0
24
+ */
25
+ nbAllowedUnAssigned?: number;
26
+ /**
27
+ * time limit in miliseconds to finish the assignment procedure.
28
+ * @default 6000
29
+ */
30
+ timeout?: number;
31
+ /**
32
+ * prediction options
33
+ */
34
+ predictionOptions?: PredictProtonOptions;
35
+ }
36
+ export interface Targets {
37
+ [key: string]: NMRRangeWithIntegration;
38
+ }
39
+ export declare function get1HAssignments(ranges: NMRRange[], molecule: Molecule, options?: Get1HAssignmentsOptions): Promise<{
40
+ score: any;
41
+ assignment: unknown[];
42
+ }[]>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.get1HAssignments = void 0;
7
+ const openchemlib_utils_1 = require("openchemlib-utils");
8
+ const predictProton_1 = require("../prediction/predictProton");
9
+ const buildAssignments_1 = require("./utils/buildAssignments");
10
+ const generateID_1 = __importDefault(require("./utils/generateID"));
11
+ function checkAtomsAndDiaIDs(signals) {
12
+ for (const signal of signals) {
13
+ if (!signal.atoms)
14
+ throw new Error('signal has not atoms property');
15
+ if (!signal.diaIDs)
16
+ throw new Error('signal has not diaIDs property');
17
+ if (!signal.nbAtoms)
18
+ throw new Error('signal has not nbAtoms property');
19
+ }
20
+ }
21
+ function checkForIntegration(ranges) {
22
+ for (let range of ranges) {
23
+ if (range.integration === undefined) {
24
+ throw new Error('ranges has not integration property');
25
+ }
26
+ }
27
+ }
28
+ async function get1HAssignments(ranges, molecule, options = {}) {
29
+ let { restrictionByCS, minScore = 1, maxSolutions = 10, nbAllowedUnAssigned = 0, timeout = 6000, predictionOptions = {}, } = options;
30
+ if (!molecule) {
31
+ throw new Error('It is needed a OCL molecule instance to assign');
32
+ }
33
+ molecule.addImplicitHydrogens();
34
+ (0, openchemlib_utils_1.addDiastereotopicMissingChirality)(molecule);
35
+ const { joinedSignals } = await (0, predictProton_1.predictProton)(molecule, predictionOptions);
36
+ checkForIntegration(ranges);
37
+ checkAtomsAndDiaIDs(joinedSignals);
38
+ const targets = {};
39
+ for (const range of ranges) {
40
+ const { id = (0, generateID_1.default)() } = range;
41
+ targets[id] = JSON.parse(JSON.stringify(range));
42
+ }
43
+ return (0, buildAssignments_1.buildAssignments)({
44
+ restrictionByCS,
45
+ timeout,
46
+ minScore,
47
+ nbAllowedUnAssigned,
48
+ maxSolutions,
49
+ targets,
50
+ joinedSignals,
51
+ useIntegrationRestriction: true,
52
+ });
53
+ }
54
+ exports.get1HAssignments = get1HAssignments;
55
+ //# sourceMappingURL=get1HAssignments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get1HAssignments.js","sourceRoot":"","sources":["../../src/assignment/get1HAssignments.ts"],"names":[],"mappings":";;;;;;AACA,yDAAsE;AAGtE,+DAGqC;AAIrC,+DAA6E;AAC7E,oEAA4C;AAO5C,SAAS,mBAAmB,CAC1B,OAAsB;IAEtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACzE;AACH,CAAC;AAID,SAAS,mBAAmB,CAC1B,MAAkB;IAElB,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE;QACxB,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;KACF;AACH,CAAC;AAkCM,KAAK,UAAU,gBAAgB,CACpC,MAAkB,EAClB,QAAkB,EAClB,UAAmC,EAAE;IAErC,IAAI,EACF,eAAe,EACf,QAAQ,GAAG,CAAC,EACZ,YAAY,GAAG,EAAE,EACjB,mBAAmB,GAAG,CAAC,EACvB,OAAO,GAAG,IAAI,EACd,iBAAiB,GAAG,EAAE,GACvB,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACnE;IAED,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IAChC,IAAA,qDAAiC,EAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,6BAAa,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAE3E,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,EAAE,EAAE,GAAG,IAAA,oBAAU,GAAE,EAAE,GAAG,KAAK,CAAC;QACpC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACjD;IAED,OAAO,IAAA,mCAAgB,EAAC;QACtB,eAAe;QACf,OAAO;QACP,QAAQ;QACR,mBAAmB;QACnB,YAAY;QACZ,OAAO;QACP,aAAa;QACb,yBAAyB,EAAE,IAAI;KAChC,CAAC,CAAC;AACL,CAAC;AA1CD,4CA0CC"}
@@ -0,0 +1,33 @@
1
+ import treeSet from 'ml-tree-set';
2
+ import { Targets, NMRSignal1DWithAtomsAndDiaIDs } from '../get1HAssignments';
3
+ export interface RestrictionByCS {
4
+ chemicalShiftRestriction: boolean;
5
+ tolerance: number;
6
+ useChemicalShiftScore: boolean;
7
+ }
8
+ export interface BuildAssignmentsProps {
9
+ restrictionByCS?: Partial<RestrictionByCS>;
10
+ timeout: number;
11
+ minScore: number;
12
+ useIntegrationRestriction: boolean;
13
+ nbAllowedUnAssigned: number;
14
+ maxSolutions: number;
15
+ targets: Targets;
16
+ joinedSignals: NMRSignal1DWithAtomsAndDiaIDs[];
17
+ }
18
+ export interface Signals1DAssignment extends NMRSignal1DWithAtomsAndDiaIDs {
19
+ diaIDIndex: number;
20
+ allHydrogens: number;
21
+ error?: number;
22
+ }
23
+ export interface Predictions1Dassignments {
24
+ [key: string]: Signals1DAssignment;
25
+ }
26
+ export interface StoreAssignments1D {
27
+ solutions: treeSet;
28
+ nSolutions: number;
29
+ }
30
+ export declare function buildAssignments(props: BuildAssignmentsProps): Promise<{
31
+ score: any;
32
+ assignment: unknown[];
33
+ }[]>;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildAssignments = void 0;
7
+ const ml_tree_set_1 = __importDefault(require("ml-tree-set"));
8
+ const createMapPossibleAssignments_1 = require("./createMapPossibleAssignments");
9
+ const exploreTreeRec_1 = require("./exploreTreeRec");
10
+ const comparator = (a, b) => {
11
+ return b.score - a.score;
12
+ };
13
+ async function buildAssignments(props) {
14
+ const { restrictionByCS = {}, useIntegrationRestriction, timeout, minScore, nbAllowedUnAssigned, maxSolutions, targets, joinedSignals, } = props;
15
+ const { tolerance = 1, useChemicalShiftScore = false, chemicalShiftRestriction = true, } = restrictionByCS;
16
+ let date = new Date();
17
+ let timeStart = date.getTime();
18
+ let store = {
19
+ solutions: new ml_tree_set_1.default(comparator),
20
+ nSolutions: 0,
21
+ };
22
+ let nSources = joinedSignals.length;
23
+ const predictions = {};
24
+ for (let prediction of joinedSignals) {
25
+ const diaID = prediction.diaIDs[0];
26
+ const index = prediction.atoms[0];
27
+ predictions[diaID] = {
28
+ ...prediction,
29
+ diaIDIndex: index,
30
+ allHydrogens: prediction.nbAtoms,
31
+ };
32
+ }
33
+ const possibleAssignmentMap = (0, createMapPossibleAssignments_1.createMapPossibleAssignments)({
34
+ restrictionByCS: {
35
+ tolerance,
36
+ useChemicalShiftScore,
37
+ chemicalShiftRestriction,
38
+ },
39
+ useIntegrationRestriction,
40
+ predictions,
41
+ targets,
42
+ });
43
+ const diaIDPeerPossibleAssignment = Object.keys(possibleAssignmentMap);
44
+ let partial = fillPartial(nSources);
45
+ store = {
46
+ solutions: new ml_tree_set_1.default(comparator),
47
+ nSolutions: 0,
48
+ };
49
+ (0, exploreTreeRec_1.exploreTreeRec)({
50
+ nSources,
51
+ restrictionByCS: {
52
+ tolerance,
53
+ useChemicalShiftScore,
54
+ chemicalShiftRestriction,
55
+ },
56
+ timeout,
57
+ timeStart,
58
+ targets,
59
+ predictions,
60
+ maxSolutions,
61
+ lowerBoundScore: minScore,
62
+ nbAllowedUnAssigned,
63
+ possibleAssignmentMap,
64
+ diaIDPeerPossibleAssignment,
65
+ useIntegrationRestriction,
66
+ }, 0, partial, store);
67
+ const assignments = [];
68
+ for (const solution of store.solutions.elements) {
69
+ const { assignment, score } = solution;
70
+ const currentAssignment = JSON.parse(JSON.stringify(targets));
71
+ for (let i = 0; i < assignment.length; i++) {
72
+ let range = currentAssignment[assignment[i]];
73
+ if (!range.diaIDs)
74
+ range.diaIDs = [];
75
+ if (assignment[i])
76
+ range.diaIDs.push(diaIDPeerPossibleAssignment[i]);
77
+ }
78
+ assignments.push({
79
+ score,
80
+ assignment: Object.values(currentAssignment),
81
+ });
82
+ }
83
+ return assignments;
84
+ }
85
+ exports.buildAssignments = buildAssignments;
86
+ function fillPartial(nSources, value = null) {
87
+ const partial = new Array(nSources);
88
+ for (let i = 0; i < nSources; i++) {
89
+ partial[i] = value;
90
+ }
91
+ return partial;
92
+ }
93
+ //# sourceMappingURL=buildAssignments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildAssignments.js","sourceRoot":"","sources":["../../../src/assignment/utils/buildAssignments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { MakeMandatory } from '../../types/MakeMandatory';
2
+ import type { Targets } from '../get1HAssignments';
3
+ import type { RestrictionByCS, Predictions1Dassignments } from './buildAssignments';
4
+ declare type RestrictionByCSMandatory = MakeMandatory<RestrictionByCS, 'chemicalShiftRestriction' | 'tolerance' | 'useChemicalShiftScore'>;
5
+ interface CreateMapPossibleAssignments {
6
+ predictions: Predictions1Dassignments;
7
+ restrictionByCS: RestrictionByCSMandatory;
8
+ targets: Targets;
9
+ useIntegrationRestriction: boolean;
10
+ }
11
+ export interface PossibleAssignmentMap {
12
+ [key: string]: string[];
13
+ }
14
+ export declare function createMapPossibleAssignments(props: CreateMapPossibleAssignments): PossibleAssignmentMap;
15
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMapPossibleAssignments = void 0;
4
+ function createMapPossibleAssignments(props) {
5
+ const { restrictionByCS, predictions, targets, useIntegrationRestriction } = props;
6
+ const { tolerance: toleranceCS, chemicalShiftRestriction } = restrictionByCS;
7
+ let errorAbs = Math.abs(toleranceCS);
8
+ const expandMap = {};
9
+ for (const diaID in predictions) {
10
+ let prediction = predictions[diaID];
11
+ if (prediction.error)
12
+ prediction.error = Math.abs(prediction.error);
13
+ expandMap[diaID] = [];
14
+ if (targets) {
15
+ for (const targetID in targets) {
16
+ let target = targets[targetID];
17
+ const { nbAtoms } = prediction;
18
+ const { integration } = target;
19
+ const couldBeAssigned = useIntegrationRestriction
20
+ ? integration > 0
21
+ ? nbAtoms - integration < 1
22
+ : true
23
+ : true;
24
+ if (couldBeAssigned) {
25
+ if (!chemicalShiftRestriction ||
26
+ typeof prediction.delta === 'undefined') {
27
+ // Chemical shift is not a restriction
28
+ expandMap[diaID].push(targetID);
29
+ }
30
+ else {
31
+ let error = errorAbs;
32
+ if (prediction.error) {
33
+ error = Math.max(error, prediction.error);
34
+ }
35
+ const delta = target.signals && target.signals.length > 0
36
+ ? target.signals[0].delta
37
+ : (target.to + target.from) / 2;
38
+ let distAfterLimit = Math.abs(prediction.delta - delta - errorAbs);
39
+ if (distAfterLimit < 4 * errorAbs) {
40
+ expandMap[diaID].push(targetID);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ expandMap[diaID].push('*');
47
+ }
48
+ return expandMap;
49
+ }
50
+ exports.createMapPossibleAssignments = createMapPossibleAssignments;
51
+ //# sourceMappingURL=createMapPossibleAssignments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMapPossibleAssignments.js","sourceRoot":"","sources":["../../../src/assignment/utils/createMapPossibleAssignments.ts"],"names":[],"mappings":";;;AAoBA,SAAgB,4BAA4B,CAC1C,KAAmC;IAEnC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,yBAAyB,EAAE,GACxE,KAAK,CAAC;IAER,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE,GAAG,eAAe,CAAC;IAE7E,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;QAC/B,IAAI,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,KAAK;YAAE,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAEtB,IAAI,OAAO,EAAE;YACX,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE;gBAC9B,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;gBAC/B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;gBAE/B,MAAM,eAAe,GAAG,yBAAyB;oBAC/C,CAAC,CAAC,WAAW,GAAG,CAAC;wBACf,CAAC,CAAC,OAAO,GAAG,WAAW,GAAG,CAAC;wBAC3B,CAAC,CAAC,IAAI;oBACR,CAAC,CAAC,IAAI,CAAC;gBAET,IAAI,eAAe,EAAE;oBACnB,IACE,CAAC,wBAAwB;wBACzB,OAAO,UAAU,CAAC,KAAK,KAAK,WAAW,EACvC;wBACA,sCAAsC;wBACtC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBACjC;yBAAM;wBACL,IAAI,KAAK,GAAG,QAAQ,CAAC;wBACrB,IAAI,UAAU,CAAC,KAAK,EAAE;4BACpB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;yBAC3C;wBACD,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;4BACzC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;4BACzB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAEpC,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;wBACnE,IAAI,cAAc,GAAG,CAAC,GAAG,QAAQ,EAAE;4BACjC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;yBACjC;qBACF;iBACF;aACF;SACF;QACD,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAvDD,oEAuDC"}
@@ -0,0 +1,22 @@
1
+ import type { Targets } from '../get1HAssignments';
2
+ import type { RestrictionByCS, StoreAssignments1D, Predictions1Dassignments } from './buildAssignments';
3
+ import type { PossibleAssignmentMap } from './createMapPossibleAssignments';
4
+ export interface ExploreTreeRecProps {
5
+ nSources: number;
6
+ restrictionByCS: RestrictionByCS;
7
+ timeout: number;
8
+ timeStart: number;
9
+ maxSolutions: number;
10
+ targets: Targets;
11
+ useIntegrationRestriction: boolean;
12
+ predictions: Predictions1Dassignments;
13
+ lowerBoundScore: number;
14
+ nbAllowedUnAssigned: number;
15
+ possibleAssignmentMap: PossibleAssignmentMap;
16
+ diaIDPeerPossibleAssignment: string[];
17
+ }
18
+ export declare function exploreTreeRec(props: ExploreTreeRecProps, currentIndex: number, partial: Array<string | null>, store: StoreAssignments1D): StoreAssignments1D | undefined;
19
+ export interface SolutionAssignment {
20
+ assignment: string[];
21
+ score: number;
22
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exploreTreeRec = void 0;
4
+ const partialScore_1 = require("./partialScore");
5
+ function exploreTreeRec(props, currentIndex, partial, store) {
6
+ const { nSources, restrictionByCS, timeout, timeStart, maxSolutions, targets, predictions, lowerBoundScore, nbAllowedUnAssigned, possibleAssignmentMap, useIntegrationRestriction, diaIDPeerPossibleAssignment, } = props;
7
+ const currentDate = new Date();
8
+ if (currentDate.getTime() - timeStart > timeout) {
9
+ new Error('timeout expired');
10
+ return store;
11
+ }
12
+ const diaID = diaIDPeerPossibleAssignment[currentIndex];
13
+ const possibleAssignments = possibleAssignmentMap[diaID];
14
+ for (let targetID of possibleAssignments) {
15
+ partial[currentIndex] = targetID;
16
+ let score = (0, partialScore_1.partialScore)(partial, {
17
+ useIntegrationRestriction,
18
+ diaIDPeerPossibleAssignment,
19
+ nbAllowedUnAssigned,
20
+ restrictionByCS,
21
+ predictions,
22
+ targets,
23
+ });
24
+ if (score === 0) {
25
+ if (targetID === '*') {
26
+ partial[currentIndex] = null;
27
+ }
28
+ continue;
29
+ }
30
+ if (currentIndex === nSources - 1 && score >= lowerBoundScore) {
31
+ addSolution(store, { predictions, partial, score, maxSolutions });
32
+ }
33
+ else if (currentIndex < nSources - 1) {
34
+ exploreTreeRec({
35
+ nSources,
36
+ restrictionByCS,
37
+ timeout,
38
+ timeStart,
39
+ maxSolutions,
40
+ targets,
41
+ predictions,
42
+ lowerBoundScore,
43
+ nbAllowedUnAssigned,
44
+ possibleAssignmentMap,
45
+ useIntegrationRestriction,
46
+ diaIDPeerPossibleAssignment,
47
+ }, currentIndex + 1, JSON.parse(JSON.stringify(partial)), store);
48
+ }
49
+ }
50
+ }
51
+ exports.exploreTreeRec = exploreTreeRec;
52
+ function addSolution(store, props) {
53
+ let { score, maxSolutions, partial, predictions } = props;
54
+ score /= doubleAssignmentPenalty(partial, predictions);
55
+ store.nSolutions++;
56
+ let solution = {
57
+ assignment: JSON.parse(JSON.stringify(partial)),
58
+ score: score,
59
+ };
60
+ if (store.nSolutions >= maxSolutions) {
61
+ if (solution.score > store.solutions.last().score) {
62
+ store.solutions.pollLast();
63
+ store.solutions.add(solution);
64
+ }
65
+ }
66
+ else {
67
+ store.solutions.add(solution);
68
+ store.nSolutions++;
69
+ }
70
+ }
71
+ function doubleAssignmentPenalty(partial, predictions) {
72
+ const nbSources = Object.keys(predictions).length;
73
+ let assignments = new Set(partial);
74
+ let nbDoubleAssignment = nbSources - assignments.size;
75
+ return nbDoubleAssignment > 0 ? 2 * nbDoubleAssignment : 1;
76
+ }
77
+ //# sourceMappingURL=exploreTreeRec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exploreTreeRec.js","sourceRoot":"","sources":["../../../src/assignment/utils/exploreTreeRec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function generateID(): string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const BASE62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
4
+ const LENGTH = 8;
5
+ function generateID() {
6
+ let id = '';
7
+ for (let i = 0; i < LENGTH; i++) {
8
+ id += BASE62.charAt(Math.floor(Math.random() * 62));
9
+ }
10
+ return id;
11
+ }
12
+ exports.default = generateID;
13
+ //# sourceMappingURL=generateID.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateID.js","sourceRoot":"","sources":["../../../src/assignment/utils/generateID.ts"],"names":[],"mappings":";;AAAA,MAAM,MAAM,GAAG,gEAAgE,CAAC;AAEhF,MAAM,MAAM,GAAG,CAAC,CAAC;AAEjB,SAAwB,UAAU;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;KACrD;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAND,6BAMC"}
@@ -0,0 +1,16 @@
1
+ import { Targets } from '../get1HAssignments';
2
+ import type { Predictions1Dassignments, RestrictionByCS } from './buildAssignments';
3
+ interface PartialScoreOptions {
4
+ restrictionByCS: RestrictionByCS;
5
+ /**
6
+ * number of allowed unassignment signals
7
+ * @default 0
8
+ */
9
+ useIntegrationRestriction: boolean;
10
+ nbAllowedUnAssigned: number;
11
+ diaIDPeerPossibleAssignment: string[];
12
+ predictions: Predictions1Dassignments;
13
+ targets: Targets;
14
+ }
15
+ export declare function partialScore(partial: Array<string | null>, options: PartialScoreOptions): number;
16
+ export {};