nmr-processing 7.0.1 → 7.3.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 (127) 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/index.d.ts +2 -0
  51. package/lib/index.js +7 -1
  52. package/lib/index.js.map +1 -1
  53. package/lib/peaks/peaksToRanges.js +1 -0
  54. package/lib/peaks/peaksToRanges.js.map +1 -1
  55. package/lib/prediction/predictAllSpectra.d.ts +18 -0
  56. package/lib/prediction/predictAllSpectra.js +40 -0
  57. package/lib/prediction/predictAllSpectra.js.map +1 -0
  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/xyz/xyzAutoZonesPicking.js +5 -1
  62. package/lib/xyz/xyzAutoZonesPicking.js.map +1 -1
  63. package/lib-esm/assignment/get13CAssignments.js.map +1 -1
  64. package/lib-esm/assignment/get1HAssignments.js.map +1 -1
  65. package/lib-esm/assignment/getAssignments.js +37 -0
  66. package/lib-esm/assignment/getAssignments.js.map +1 -0
  67. package/lib-esm/assignment/utils/buildAssignments.js.map +1 -1
  68. package/lib-esm/assignment/utils/exploreTreeRec.js.map +1 -1
  69. package/lib-esm/assignment/utils/getAssignment/buildAssignments.js +198 -0
  70. package/lib-esm/assignment/utils/getAssignment/buildAssignments.js.map +1 -0
  71. package/lib-esm/assignment/utils/getAssignment/checkIDs.js +48 -0
  72. package/lib-esm/assignment/utils/getAssignment/checkIDs.js.map +1 -0
  73. package/lib-esm/assignment/utils/getAssignment/createMapPossibleAssignment.js +51 -0
  74. package/lib-esm/assignment/utils/getAssignment/createMapPossibleAssignment.js.map +1 -0
  75. package/lib-esm/assignment/utils/getAssignment/exploreTree.js +89 -0
  76. package/lib-esm/assignment/utils/getAssignment/exploreTree.js.map +1 -0
  77. package/lib-esm/assignment/utils/getAssignment/formatData.js +16 -0
  78. package/lib-esm/assignment/utils/getAssignment/formatData.js.map +1 -0
  79. package/lib-esm/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js +10 -0
  80. package/lib-esm/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js.map +1 -0
  81. package/lib-esm/assignment/utils/getAssignment/getTargetsAndCorrelations.js +33 -0
  82. package/lib-esm/assignment/utils/getAssignment/getTargetsAndCorrelations.js.map +1 -0
  83. package/lib-esm/assignment/utils/getAssignment/getWorkFlow.js +50 -0
  84. package/lib-esm/assignment/utils/getAssignment/getWorkFlow.js.map +1 -0
  85. package/lib-esm/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js +41 -0
  86. package/lib-esm/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js.map +1 -0
  87. package/lib-esm/assignment/utils/getAssignment/isSpectraData1D.js +4 -0
  88. package/lib-esm/assignment/utils/getAssignment/isSpectraData1D.js.map +1 -0
  89. package/lib-esm/assignment/utils/getAssignment/partialScore.js +214 -0
  90. package/lib-esm/assignment/utils/getAssignment/partialScore.js.map +1 -0
  91. package/lib-esm/assignment/utils/getAssignment/searchIndices.js +17 -0
  92. package/lib-esm/assignment/utils/getAssignment/searchIndices.js.map +1 -0
  93. package/lib-esm/index.js +2 -0
  94. package/lib-esm/index.js.map +1 -1
  95. package/lib-esm/peaks/peaksToRanges.js +1 -0
  96. package/lib-esm/peaks/peaksToRanges.js.map +1 -1
  97. package/lib-esm/prediction/predictAllSpectra.js +36 -0
  98. package/lib-esm/prediction/predictAllSpectra.js.map +1 -0
  99. package/lib-esm/prediction/utils/predict2D.js +13 -12
  100. package/lib-esm/prediction/utils/predict2D.js.map +1 -1
  101. package/package.json +14 -13
  102. package/src/assignment/get13CAssignments.ts +2 -2
  103. package/src/assignment/get1HAssignments.ts +2 -2
  104. package/src/assignment/getAssignments.ts +149 -0
  105. package/src/assignment/utils/buildAssignments.ts +4 -4
  106. package/src/assignment/utils/createMapPossibleAssignments.ts +2 -2
  107. package/src/assignment/utils/exploreTreeRec.ts +5 -5
  108. package/src/assignment/utils/getAssignment/buildAssignments.ts +339 -0
  109. package/src/assignment/utils/getAssignment/checkIDs.ts +76 -0
  110. package/src/assignment/utils/getAssignment/createMapPossibleAssignment.ts +85 -0
  111. package/src/assignment/utils/getAssignment/data/correlations.js +713 -0
  112. package/src/assignment/utils/getAssignment/data/predictions.js +34 -0
  113. package/src/assignment/utils/getAssignment/exploreTree.ts +171 -0
  114. package/src/assignment/utils/getAssignment/formatData.ts +35 -0
  115. package/src/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.ts +16 -0
  116. package/src/assignment/utils/getAssignment/getTargetsAndCorrelations.ts +63 -0
  117. package/src/assignment/utils/getAssignment/getWorkFlow.ts +72 -0
  118. package/src/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.ts +55 -0
  119. package/src/assignment/utils/getAssignment/isSpectraData1D.ts +7 -0
  120. package/src/assignment/utils/getAssignment/partialScore.ts +308 -0
  121. package/src/assignment/utils/getAssignment/searchIndices.ts +19 -0
  122. package/src/assignment/utils/partialScore.ts +2 -2
  123. package/src/index.ts +2 -0
  124. package/src/ml-tree-set.d.ts +1 -1
  125. package/src/peaks/peaksToRanges.ts +1 -0
  126. package/src/prediction/predictAllSpectra.ts +48 -0
  127. package/src/prediction/utils/predict2D.ts +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"get1HAssignments.js","sourceRoot":"","sources":["../../src/assignment/get1HAssignments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EACL,aAAa,GAEd,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,UAAU,MAAM,oBAAoB,CAAC;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;AAkCD,MAAM,CAAC,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,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,aAAa,CAAC,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,UAAU,EAAE,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,gBAAgB,CAAC;QACtB,eAAe;QACf,OAAO;QACP,QAAQ;QACR,mBAAmB;QACnB,YAAY;QACZ,OAAO;QACP,aAAa;QACb,yBAAyB,EAAE,IAAI;KAChC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"get1HAssignments.js","sourceRoot":"","sources":["../../src/assignment/get1HAssignments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EACL,aAAa,GAEd,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EAAE,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,UAAU,MAAM,oBAAoB,CAAC;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;AAkCD,MAAM,CAAC,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,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,aAAa,CAAC,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,UAAU,EAAE,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,gBAAgB,CAAC;QACtB,eAAe;QACf,OAAO;QACP,QAAQ;QACR,mBAAmB;QACnB,YAAY;QACZ,OAAO;QACP,aAAa;QACb,yBAAyB,EAAE,IAAI;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { addDiastereotopicMissingChirality } from 'openchemlib-utils';
2
+ import { buildAssignments, } from './utils/getAssignment/buildAssignments';
3
+ import { checkIDs } from './utils/getAssignment/checkIDs';
4
+ import { getTargetsAndCorrelations } from './utils/getAssignment/getTargetsAndCorrelations';
5
+ import getWorkFlow from './utils/getAssignment/getWorkFlow';
6
+ export async function getAssignments(input, options = {}) {
7
+ let { restrictionByCS = {}, justAssign, minScore = 1, maxSolutions = 10, nbAllowedUnAssigned, timeout = 6000, predictionOptions = {}, predictions = {}, correlation: correlationOptions = {}, } = options;
8
+ const { tolerance = { H: 0.2, C: 1 }, useChemicalShiftScore = false, chemicalShiftRestriction = true, } = restrictionByCS;
9
+ const molecule = input.molecule;
10
+ if (!molecule)
11
+ throw new Error('It is needed a molecule to assign');
12
+ molecule.addImplicitHydrogens();
13
+ addDiastereotopicMissingChirality(molecule);
14
+ const spectra = checkIDs(input.spectra);
15
+ const { targets, correlations } = getTargetsAndCorrelations(spectra, correlationOptions);
16
+ const { assignmentOrder } = getWorkFlow(correlations, justAssign);
17
+ const solutions = await buildAssignments({
18
+ restrictionByCS: {
19
+ tolerance,
20
+ useChemicalShiftScore,
21
+ chemicalShiftRestriction,
22
+ },
23
+ spectra,
24
+ molecule,
25
+ timeout,
26
+ minScore,
27
+ maxSolutions,
28
+ assignmentOrder,
29
+ nbAllowedUnAssigned,
30
+ correlations,
31
+ targets,
32
+ predictionOptions,
33
+ predictions,
34
+ });
35
+ return solutions;
36
+ }
37
+ //# sourceMappingURL=getAssignments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAssignments.js","sourceRoot":"","sources":["../../src/assignment/getAssignments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAQtE,OAAO,EAEL,gBAAgB,GAEjB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,WAAW,MAAM,mCAAmC,CAAC;AA2E5D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAA6B,EAC7B,UAAiC,EAAE;IAEnC,IAAI,EACF,eAAe,GAAG,EAAE,EACpB,UAAU,EACV,QAAQ,GAAG,CAAC,EACZ,YAAY,GAAG,EAAE,EACjB,mBAAmB,EACnB,OAAO,GAAG,IAAI,EACd,iBAAiB,GAAG,EAAE,EACtB,WAAW,GAAG,EAAE,EAChB,WAAW,EAAE,kBAAkB,GAAG,EAAE,GACrC,GAAG,OAAO,CAAC;IAEZ,MAAM,EACJ,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAC5B,qBAAqB,GAAG,KAAK,EAC7B,wBAAwB,GAAG,IAAI,GAChC,GAAG,eAAe,CAAC;IAEpB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEhC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEpE,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IAChC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAExC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,yBAAyB,CACzD,OAAO,EACP,kBAAkB,CACnB,CAAC;IACF,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;QACvC,eAAe,EAAE;YACf,SAAS;YACT,qBAAqB;YACrB,wBAAwB;SACzB;QACD,OAAO;QACP,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,YAAY;QACZ,eAAe;QACf,mBAAmB;QACnB,YAAY;QACZ,OAAO;QACP,iBAAiB;QACjB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildAssignments.js","sourceRoot":"","sources":["../../../src/assignment/utils/buildAssignments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildAssignments.js","sourceRoot":"","sources":["../../../src/assignment/utils/buildAssignments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exploreTreeRec.js","sourceRoot":"","sources":["../../../src/assignment/utils/exploreTreeRec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exploreTreeRec.js","sourceRoot":"","sources":["../../../src/assignment/utils/exploreTreeRec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ import treeSet from 'ml-tree-set';
2
+ import { getConnectivityMatrix } from 'openchemlib-utils';
3
+ import { predictCarbon } from '../../../prediction/predictCarbon';
4
+ import { predictProton } from '../../../prediction/predictProton';
5
+ import { createMapPossibleAssignment, } from './createMapPossibleAssignment';
6
+ import { exploreTree } from './exploreTree';
7
+ import { isSpectraData1D } from './isSpectraData1D';
8
+ import { searchIndices } from './searchIndices';
9
+ const comparator = (a, b) => {
10
+ return b.score - a.score;
11
+ };
12
+ const predictor = { H: predictProton, C: predictCarbon };
13
+ function checkNMRSignal1D(signals) {
14
+ const keys = [
15
+ 'nbAtoms',
16
+ 'diaIDs',
17
+ 'atoms',
18
+ ];
19
+ for (const signal of signals) {
20
+ for (let key of keys) {
21
+ if (!signal[key])
22
+ throw new Error(`property ${key} does not exist`);
23
+ }
24
+ }
25
+ }
26
+ export const getAllHydrogens = {
27
+ C: (m, i) => m.getAllHydrogens(i),
28
+ H: () => 1,
29
+ };
30
+ export async function buildAssignments(props) {
31
+ const { spectra, molecule, restrictionByCS, timeout, minScore, nbAllowedUnAssigned = {}, maxSolutions, correlations, assignmentOrder, predictionOptions, predictions: inputPrediction = {}, targets, } = props;
32
+ let date = new Date();
33
+ let timeStart = date.getTime();
34
+ let lowerBoundScore = minScore;
35
+ let store = {
36
+ solutions: new treeSet(comparator),
37
+ nSolutions: 0,
38
+ };
39
+ const pathLengthMatrix = getConnectivityMatrix(molecule, {
40
+ pathLength: true,
41
+ });
42
+ let infoByAtomType = {};
43
+ const predictions = {};
44
+ let possibleAssignmentMap = {};
45
+ let diaIDPeerPossibleAssignment = {};
46
+ for (const atomTypesToPredict of assignmentOrder) {
47
+ for (const atomType of atomTypesToPredict) {
48
+ const options = predictionOptions[atomType];
49
+ const predictedSignals = inputPrediction[atomType];
50
+ let { joinedSignals } = predictedSignals
51
+ ? { joinedSignals: predictedSignals }
52
+ : await predictor[atomType](molecule, options);
53
+ checkNMRSignal1D(joinedSignals);
54
+ if (!predictions[atomType])
55
+ predictions[atomType] = {};
56
+ for (let prediction of joinedSignals) {
57
+ const diaID = prediction.diaIDs[0];
58
+ const index = prediction.atoms[0];
59
+ const allHydrogens = getAllHydrogens[atomType](molecule, index);
60
+ predictions[atomType][diaID] = {
61
+ ...prediction,
62
+ diaIDIndex: index,
63
+ allHydrogens: prediction.nbAtoms * allHydrogens,
64
+ protonsCount: allHydrogens,
65
+ pathLength: pathLengthMatrix[index],
66
+ };
67
+ }
68
+ infoByAtomType[atomType] = {
69
+ nSources: joinedSignals.length,
70
+ currentIndex: 0,
71
+ nbAllowedUnAssigned: nbAllowedUnAssigned[atomType] || 0,
72
+ };
73
+ }
74
+ possibleAssignmentMap = createMapPossibleAssignment(possibleAssignmentMap, {
75
+ restrictionByCS,
76
+ predictions,
77
+ targets,
78
+ });
79
+ diaIDPeerPossibleAssignment = {};
80
+ for (const atomType in possibleAssignmentMap) {
81
+ diaIDPeerPossibleAssignment[atomType] = Object.keys(possibleAssignmentMap[atomType]);
82
+ }
83
+ let sourceOfPartials = getSourceOfPartials(store, infoByAtomType, atomTypesToPredict);
84
+ store = {
85
+ solutions: new treeSet(comparator),
86
+ nSolutions: 0,
87
+ };
88
+ for (let partial of sourceOfPartials) {
89
+ exploreTree({
90
+ currentAtomTypes: atomTypesToPredict,
91
+ restrictionByCS,
92
+ timeout,
93
+ timeStart,
94
+ targets,
95
+ predictions,
96
+ correlations,
97
+ maxSolutions,
98
+ lowerBoundScore,
99
+ possibleAssignmentMap,
100
+ diaIDPeerPossibleAssignment,
101
+ }, infoByAtomType, partial, store);
102
+ }
103
+ }
104
+ return annotateSpectraData({
105
+ store,
106
+ spectra,
107
+ diaIDPeerPossibleAssignment,
108
+ targets,
109
+ });
110
+ }
111
+ function annotateSpectraData(input) {
112
+ var _a;
113
+ const { store, spectra, diaIDPeerPossibleAssignment, targets } = input;
114
+ const { solutions } = store;
115
+ const mapSignalId = {};
116
+ const atomTypes = Object.keys(targets);
117
+ for (const atomType of atomTypes) {
118
+ const targetByAtomType = targets[atomType];
119
+ for (const targetId in targetByAtomType) {
120
+ let target = targetByAtomType[targetId];
121
+ for (const link of target.link) {
122
+ const signalId = link.signal.id;
123
+ if (mapSignalId[signalId])
124
+ continue;
125
+ mapSignalId[link.signal.id] = searchIndices(signalId, spectra);
126
+ }
127
+ }
128
+ }
129
+ const result = [];
130
+ for (let solution of solutions.elements) {
131
+ const spectraResult = JSON.parse(JSON.stringify(spectra));
132
+ const { assignment, score } = solution;
133
+ const atomTypes = Object.keys(assignment);
134
+ for (const atomType of atomTypes) {
135
+ const targetByAtomType = targets[atomType];
136
+ const assignmentPeerAtomType = assignment[atomType];
137
+ for (let index = 0; index < assignmentPeerAtomType.length; index++) {
138
+ const targetID = assignmentPeerAtomType[index];
139
+ if (targetID === '*' || !targetID)
140
+ continue;
141
+ const target = targetByAtomType[targetID];
142
+ const diaId = diaIDPeerPossibleAssignment[atomType][index];
143
+ for (let link of target.link) {
144
+ const { spectrumIndex, elementIndex, signalIndex } = mapSignalId[link.signal.id];
145
+ const spectrum = spectraResult[spectrumIndex];
146
+ if (isSpectraData1D(spectrum)) {
147
+ let { ranges } = spectrum;
148
+ let range = ranges[elementIndex];
149
+ let signal = range.signals[signalIndex];
150
+ if (!signal.diaIDs)
151
+ signal.diaIDs = [];
152
+ signal.diaIDs.push(diaId);
153
+ }
154
+ else {
155
+ const axis = link.axis;
156
+ const signal = spectrum.zones[elementIndex].signals[signalIndex];
157
+ if (!signal[axis].diaIDs)
158
+ signal[axis].diaIDs = [];
159
+ (_a = signal[axis].diaIDs) === null || _a === void 0 ? void 0 : _a.push(diaId);
160
+ }
161
+ }
162
+ }
163
+ }
164
+ result.push({
165
+ score,
166
+ assignment: spectraResult,
167
+ });
168
+ }
169
+ return result;
170
+ }
171
+ function getSourceOfPartials(store, infoByAtomType, currentAtoms) {
172
+ return store.nSolutions > 0
173
+ ? store.solutions.elements.map((e) => {
174
+ let currentAssignment = e.assignment;
175
+ for (const atom of currentAtoms) {
176
+ currentAssignment[atom] = fillPartial(infoByAtomType[atom].nSources);
177
+ }
178
+ return currentAssignment;
179
+ })
180
+ : initializePartials(infoByAtomType, currentAtoms);
181
+ }
182
+ function initializePartials(infoByAtomType, currentAtoms) {
183
+ const partial = {};
184
+ const atomsType = Object.keys(infoByAtomType);
185
+ for (const atom of atomsType) {
186
+ const value = currentAtoms.includes(atom) ? null : '*';
187
+ partial[atom] = fillPartial(infoByAtomType[atom].nSources, value);
188
+ }
189
+ return [partial];
190
+ }
191
+ function fillPartial(nSources, value = null) {
192
+ const partial = new Array(nSources);
193
+ for (let i = 0; i < nSources; i++) {
194
+ partial[i] = value;
195
+ }
196
+ return partial;
197
+ }
198
+ //# sourceMappingURL=buildAssignments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildAssignments.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/buildAssignments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import generateID from '../generateID';
2
+ import { isSpectraData1D } from './isSpectraData1D';
3
+ export function checkIDs(input = []) {
4
+ let inputClone = JSON.parse(JSON.stringify(input));
5
+ let spectra = [];
6
+ for (const spectraData of inputClone) {
7
+ const { info, id } = spectraData;
8
+ if (isSpectraData1D(spectraData)) {
9
+ let data = addIDs(spectraData.ranges);
10
+ for (const element of data) {
11
+ const { integration } = element;
12
+ for (let signal of element.signals || []) {
13
+ if (!signal.integration)
14
+ signal.integration = integration;
15
+ }
16
+ }
17
+ spectra.push({ id, info, ranges: data });
18
+ }
19
+ else {
20
+ let data = addIDs(spectraData.zones);
21
+ spectra.push({ id, info, zones: data });
22
+ }
23
+ }
24
+ return spectra;
25
+ }
26
+ export function hasIDs(data) {
27
+ for (const element of data) {
28
+ if (!element.id)
29
+ throw new Error('A range/zone has not an ID');
30
+ for (let signal of element.signals || []) {
31
+ if (!signal.id)
32
+ throw new Error('A signal has not an ID');
33
+ }
34
+ }
35
+ }
36
+ export function addIDs(data) {
37
+ for (const element of data) {
38
+ if (!element.id)
39
+ element.id = generateID();
40
+ for (let signal of element.signals || []) {
41
+ if (!signal.id)
42
+ signal.id = generateID();
43
+ }
44
+ }
45
+ hasIDs(data);
46
+ return data;
47
+ }
48
+ //# sourceMappingURL=checkIDs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkIDs.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/checkIDs.ts"],"names":[],"mappings":"AAOA,OAAO,UAAU,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAwBpD,MAAM,UAAU,QAAQ,CAAC,QAAuB,EAAE;IAChD,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAkB,CAAC;IACpE,IAAI,OAAO,GAAyB,EAAE,CAAC;IACvC,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE;QACpC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC;QACjC,IAAI,eAAe,CAAC,WAAW,CAAC,EAAE;YAChC,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAsB,CAAC;YAC3D,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;gBAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;gBAChC,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE;oBACxC,IAAI,CAAC,MAAM,CAAC,WAAW;wBAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;iBAC3D;aACF;YACD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1C;aAAM;YACL,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAqB,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACzC;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,IAA4B;IAE5B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;QAC1B,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC/D,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3D;KACF;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAA4B;IACjD,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;QAC1B,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;QAC3C,KAAK,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC;SAC1C;KACF;IACD,MAAM,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { getCorrelationDelta } from 'nmr-correlation';
2
+ export function createMapPossibleAssignment(expandMap, props) {
3
+ const { restrictionByCS, predictions, targets } = props;
4
+ const { tolerance: toleranceCS, chemicalShiftRestriction } = restrictionByCS;
5
+ const atomTypes = Object.keys(predictions);
6
+ for (const atomType of atomTypes) {
7
+ let errorAbs = toleranceCS[atomType];
8
+ let predictionByAtomType = predictions[atomType];
9
+ let targetByAtomType = targets[atomType];
10
+ if (!expandMap[atomType])
11
+ expandMap[atomType] = {};
12
+ for (const diaID in predictionByAtomType) {
13
+ let prediction = predictionByAtomType[diaID];
14
+ expandMap[atomType][diaID] = [];
15
+ if (targetByAtomType) {
16
+ for (const targetID in targetByAtomType) {
17
+ let target = targetByAtomType[targetID];
18
+ const { nbAtoms, protonsCount: protonsCountFromPrediction } = prediction;
19
+ const { integration, protonsCount } = target;
20
+ const couldBeAssigned = !integration
21
+ ? true
22
+ : atomType === 'H'
23
+ ? nbAtoms - integration < 1
24
+ : protonsCount.length > 0
25
+ ? protonsCount.some((count) => protonsCountFromPrediction === count)
26
+ : true;
27
+ if (couldBeAssigned) {
28
+ if (!chemicalShiftRestriction ||
29
+ typeof prediction.delta === 'undefined') {
30
+ // Chemical shift is not a restriction
31
+ expandMap[atomType][diaID].push(targetID);
32
+ }
33
+ else {
34
+ let targetDelta = getCorrelationDelta(target);
35
+ if (targetDelta === undefined) {
36
+ throw new Error(`Correlation has not delta`);
37
+ }
38
+ let distAfterLimit = Math.abs(prediction.delta - targetDelta - errorAbs);
39
+ if (distAfterLimit < 4 * errorAbs) {
40
+ expandMap[atomType][diaID].push(targetID);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ expandMap[atomType][diaID].push('*');
47
+ }
48
+ }
49
+ return expandMap;
50
+ }
51
+ //# sourceMappingURL=createMapPossibleAssignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMapPossibleAssignment.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/createMapPossibleAssignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAsBtD,MAAM,UAAU,2BAA2B,CACzC,SAAiC,EACjC,KAAyC;IAEzC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAExD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,wBAAwB,EAAE,GAAG,eAAe,CAAC;IAE7E,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAgB,CAAC;IAE1D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE;YACxC,IAAI,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC7C,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAEhC,IAAI,gBAAgB,EAAE;gBACpB,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE;oBACvC,IAAI,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACxC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,GACzD,UAAU,CAAC;oBACb,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;oBAE7C,MAAM,eAAe,GAAG,CAAC,WAAW;wBAClC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,QAAQ,KAAK,GAAG;4BAClB,CAAC,CAAC,OAAO,GAAG,WAAW,GAAG,CAAC;4BAC3B,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gCACzB,CAAC,CAAC,YAAY,CAAC,IAAI,CACf,CAAC,KAAa,EAAE,EAAE,CAAC,0BAA0B,KAAK,KAAK,CACxD;gCACH,CAAC,CAAC,IAAI,CAAC;oBACT,IAAI,eAAe,EAAE;wBACnB,IACE,CAAC,wBAAwB;4BACzB,OAAO,UAAU,CAAC,KAAK,KAAK,WAAW,EACvC;4BACA,sCAAsC;4BACtC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;yBAC3C;6BAAM;4BACL,IAAI,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;4BAC9C,IAAI,WAAW,KAAK,SAAS,EAAE;gCAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;6BAC9C;4BACD,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAC3B,UAAU,CAAC,KAAK,GAAG,WAAW,GAAG,QAAQ,CAC1C,CAAC;4BAEF,IAAI,cAAc,GAAG,CAAC,GAAG,QAAQ,EAAE;gCACjC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;6BAC3C;yBACF;qBACF;iBACF;aACF;YACD,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACtC;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { partialScore } from './partialScore';
2
+ export function exploreTree(props, infoByAtomTypes, partial, store) {
3
+ const { currentAtomTypes, restrictionByCS, timeout, timeStart, maxSolutions, targets, predictions, correlations, lowerBoundScore, possibleAssignmentMap, diaIDPeerPossibleAssignment, } = props;
4
+ const currentDate = new Date();
5
+ if (currentDate.getTime() - timeStart > timeout) {
6
+ new Error('timeout expired');
7
+ return store;
8
+ }
9
+ for (const atomType of currentAtomTypes) {
10
+ const { currentIndex, nSources } = infoByAtomTypes[atomType];
11
+ if (currentIndex >= nSources - 1 &&
12
+ partial[atomType][currentIndex] !== null) {
13
+ continue;
14
+ }
15
+ const diaID = diaIDPeerPossibleAssignment[atomType][currentIndex];
16
+ const possibleAssignments = possibleAssignmentMap[atomType][diaID];
17
+ for (let targetID of possibleAssignments) {
18
+ partial[atomType][currentIndex] = targetID;
19
+ let score = partialScore(partial, {
20
+ diaIDPeerPossibleAssignment,
21
+ infoByAtomTypes,
22
+ restrictionByCS,
23
+ predictions,
24
+ correlations,
25
+ targets,
26
+ });
27
+ if (score === 0) {
28
+ continue;
29
+ }
30
+ if (isLastOne(currentAtomTypes, infoByAtomTypes) &&
31
+ score >= lowerBoundScore) {
32
+ addSolution(store, { predictions, partial, score, maxSolutions });
33
+ }
34
+ else {
35
+ const newInfo = JSON.parse(JSON.stringify(infoByAtomTypes));
36
+ newInfo[atomType].currentIndex += 1;
37
+ exploreTree({
38
+ currentAtomTypes,
39
+ restrictionByCS,
40
+ timeout,
41
+ timeStart,
42
+ maxSolutions,
43
+ targets,
44
+ predictions,
45
+ correlations,
46
+ lowerBoundScore,
47
+ possibleAssignmentMap,
48
+ diaIDPeerPossibleAssignment,
49
+ }, newInfo, JSON.parse(JSON.stringify(partial)), store);
50
+ }
51
+ }
52
+ }
53
+ }
54
+ function addSolution(store, props) {
55
+ let { score, maxSolutions, partial, predictions } = props;
56
+ score /= doubleAssignmentPenalty(partial, predictions);
57
+ let solution = {
58
+ assignment: JSON.parse(JSON.stringify(partial)),
59
+ score,
60
+ };
61
+ if (store.nSolutions >= maxSolutions) {
62
+ if (solution.score > store.solutions.last().score) {
63
+ store.solutions.pollLast();
64
+ store.solutions.add(solution);
65
+ }
66
+ }
67
+ else {
68
+ store.solutions.add(solution);
69
+ store.nSolutions++;
70
+ }
71
+ }
72
+ function isLastOne(currentAtomTypes, infoByAtomTypes) {
73
+ let lastOne = true;
74
+ for (const atomType of currentAtomTypes) {
75
+ const { currentIndex, nSources } = infoByAtomTypes[atomType];
76
+ lastOne = lastOne && currentIndex >= nSources - 1;
77
+ }
78
+ return lastOne;
79
+ }
80
+ function doubleAssignmentPenalty(partial, predictions) {
81
+ let nbDoubleAssignment = 0;
82
+ for (const atomType in predictions) {
83
+ const nbSources = Object.keys(predictions[atomType]).length;
84
+ let assignments = new Set(partial[atomType]);
85
+ nbDoubleAssignment += nbSources - assignments.size;
86
+ }
87
+ return nbDoubleAssignment > 0 ? 2 * nbDoubleAssignment : 1;
88
+ }
89
+ //# sourceMappingURL=exploreTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exploreTree.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/exploreTree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { isSpectraData1D } from './isSpectraData1D';
2
+ export function formatData(input = []) {
3
+ let inputClone = JSON.parse(JSON.stringify(input));
4
+ let spectra = [];
5
+ for (const spectraData of inputClone) {
6
+ const { info } = spectraData;
7
+ if (isSpectraData1D(spectraData)) {
8
+ spectra.push({ info, ranges: { values: spectraData.ranges } });
9
+ }
10
+ else {
11
+ spectra.push({ info, zones: { values: spectraData.zones } });
12
+ }
13
+ }
14
+ return spectra;
15
+ }
16
+ //# sourceMappingURL=formatData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatData.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/formatData.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAapD,MAAM,UAAU,UAAU,CACxB,QAA8B,EAAE;IAEhC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAyB,CAAC;IAC3E,IAAI,OAAO,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE;QACpC,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;QAC7B,IAAI,eAAe,CAAC,WAAW,CAAC,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC9D;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export function getIntegrationOfAttachedProtons(target, correlations) {
2
+ const { H: attachment = [] } = target.attachment;
3
+ let integration = 0;
4
+ for (const match of attachment) {
5
+ const correlation = correlations[match];
6
+ integration += Number(correlation.link[0].signal.integration);
7
+ }
8
+ return integration;
9
+ }
10
+ //# sourceMappingURL=getIntegrationOfAttachedProtons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getIntegrationOfAttachedProtons.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,+BAA+B,CAC7C,MAAkC,EAClC,YAAoB;IAEpB,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;IACjD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;QAC9B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACxC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC/D;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { buildCorrelationData } from 'nmr-correlation';
2
+ import { formatData } from './formatData';
3
+ import { getIntegrationOfAttachedProtons } from './getIntegrationOfAttachedProtons';
4
+ export function getTargetsAndCorrelations(spectra, options = {}) {
5
+ //add indirect links, if a carbon C1 is attached to a proton H1 that correlating
6
+ //with carbon C2, so the carbon C1 and C2 are also correlating
7
+ const { tolerance = { C: 0.25, H: 0.05 } } = options;
8
+ const spectraData = formatData(spectra);
9
+ const { values: correlations } = buildCorrelationData(spectraData, {
10
+ tolerance,
11
+ });
12
+ let targets = {};
13
+ for (const correlation of correlations) {
14
+ if (correlation.pseudo)
15
+ continue;
16
+ const { id: targetID, atomType } = correlation;
17
+ if (!targets[atomType])
18
+ targets[atomType] = {};
19
+ targets[atomType][targetID] = correlation;
20
+ if (atomType === 'H') {
21
+ targets[atomType][targetID].integration =
22
+ correlation.link[0].signal.integration;
23
+ }
24
+ else {
25
+ targets[atomType][targetID].integration = getIntegrationOfAttachedProtons(correlation, correlations);
26
+ }
27
+ }
28
+ return {
29
+ targets,
30
+ correlations,
31
+ };
32
+ }
33
+ //# sourceMappingURL=getTargetsAndCorrelations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTargetsAndCorrelations.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/getTargetsAndCorrelations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAIvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAsBpF,MAAM,UAAU,yBAAyB,CACvC,OAA6B,EAC7B,UAAe,EAAE;IAEjB,gFAAgF;IAChF,8DAA8D;IAE9D,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,WAAW,EAAE;QACjE,SAAS;KACV,CAAC,CAAC;IAEH,IAAI,OAAO,GAAQ,EAAE,CAAC;IACtB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACtC,IAAI,WAAW,CAAC,MAAM;YAAE,SAAS;QACjC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC/C,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QAC1C,IAAI,QAAQ,KAAK,GAAG,EAAE;YACpB,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW;gBACrC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;SAC1C;aAAM;YACL,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,GAAG,+BAA+B,CACvE,WAAW,EACX,YAAY,CACb,CAAC;SACH;KACF;IAED,OAAO;QACL,OAAO;QACP,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * if hsqc is present in experimentTypes we can just predict 13C
3
+ * spectrum and try to assign the carbons first.
4
+ * @param {*} correlations
5
+ * @param {*} justAssign
6
+ */
7
+ function getWorkFlow(correlations, justAssign = []) {
8
+ const experimentTypes = extractExperimentType(correlations);
9
+ const { hasHSQC, types } = experimentTypes;
10
+ if (justAssign.length > 0) {
11
+ return { assignmentOrder: justAssign, experimentTypes };
12
+ }
13
+ const assignmentOrder = [];
14
+ if (hasHSQC) {
15
+ assignmentOrder.push(['C'], ['H']);
16
+ }
17
+ else {
18
+ assignmentOrder.push(types.filter((type) => type === 'H' || type === 'C'));
19
+ }
20
+ return { assignmentOrder, experimentTypes };
21
+ }
22
+ export default getWorkFlow;
23
+ function extractExperimentType(correlations) {
24
+ const types = [];
25
+ for (const correlation of correlations) {
26
+ let experimentType = correlation.experimentType;
27
+ if (experimentType === '1d') {
28
+ experimentType = `${correlation.atomType.toUpperCase()}`;
29
+ }
30
+ if (!types.includes(experimentType)) {
31
+ types.push(experimentType);
32
+ }
33
+ for (const link of correlation.link) {
34
+ experimentType = link.experimentType;
35
+ if (experimentType === '1d') {
36
+ experimentType = `${link.atomType[0].toUpperCase()}`;
37
+ }
38
+ if (!types.includes(experimentType)) {
39
+ types.push(experimentType);
40
+ }
41
+ }
42
+ }
43
+ return {
44
+ types,
45
+ hasProton: types.includes('H'),
46
+ hasCarbon: types.includes('C'),
47
+ hasHSQC: types.includes('hsqc'),
48
+ };
49
+ }
50
+ //# sourceMappingURL=getWorkFlow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getWorkFlow.js","sourceRoot":"","sources":["../../../../src/assignment/utils/getAssignment/getWorkFlow.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,SAAS,WAAW,CAClB,YAAoB,EACpB,aAAiC,EAAE;IAEnC,MAAM,eAAe,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAE5D,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC;IAE3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;KACzD;IAED,MAAM,eAAe,GAAuB,EAAE,CAAC;IAE/C,IAAI,OAAO,EAAE;QACX,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACpC;SAAM;QACL,eAAe,CAAC,IAAI,CAClB,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAgB,CACpE,CAAC;KACH;IAED,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAC9C,CAAC;AAED,eAAe,WAAW,CAAC;AAS3B,SAAS,qBAAqB,CAAC,YAAoB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;QACtC,IAAI,cAAc,GAAW,WAAW,CAAC,cAAc,CAAC;QACxD,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3B,cAAc,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;SAC1D;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YACnC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC5B;QACD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE;YACnC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YACrC,IAAI,cAAc,KAAK,IAAI,EAAE;gBAC3B,cAAc,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;aACtD;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBACnC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC5B;SACF;KACF;IAED,OAAO;QACL,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC9B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC9B,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC"}