nmr-processing 9.3.0 → 9.3.1-pre.1669891843
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.
- package/lib/apodization/shapes/WindowFunctions.d.ts +1 -1
- package/lib/assignment/get13CAssignments.d.ts +1 -1
- package/lib/assignment/get13CAssignments.js.map +1 -1
- package/lib/assignment/get1HAssignments.d.ts +3 -3
- package/lib/assignment/get1HAssignments.js.map +1 -1
- package/lib/assignment/getAssignments.d.ts +2 -2
- package/lib/assignment/getAssignments.js.map +1 -1
- package/lib/assignment/nmrAssigment.d.ts +3 -3
- package/lib/assignment/utils/createMapPossibleAssignments.d.ts +1 -1
- package/lib/assignment/utils/getAssignment/buildAssignments.d.ts +4 -4
- package/lib/assignment/utils/getAssignment/buildAssignments.js.map +1 -1
- package/lib/assignment/utils/getAssignment/formatData.d.ts +1 -1
- package/lib/peaks/peaksFilterImpurities.d.ts +1 -1
- package/lib/peaks/peaksToRanges.d.ts +1 -1
- package/lib/peaks/peaksToRanges.js +20 -19
- package/lib/peaks/peaksToRanges.js.map +1 -1
- package/lib/peaks/util/convertWidth.d.ts +1 -1
- package/lib/peaks/util/convertWidthToHz.d.ts +1 -1
- package/lib/prediction/Prediction1D.d.ts +1 -1
- package/lib/prediction/dataStructure.d.ts +1 -1
- package/lib/prediction/predictAll.d.ts +1 -1
- package/lib/prediction/predictAll.js +3 -1
- package/lib/prediction/predictAll.js.map +1 -1
- package/lib/prediction/predictAllSpectra.d.ts +1 -1
- package/lib/prediction/predictCOSY.d.ts +1 -1
- package/lib/prediction/predictCarbon.d.ts +6 -2
- package/lib/prediction/predictCarbon.js +5 -4
- package/lib/prediction/predictCarbon.js.map +1 -1
- package/lib/prediction/predictHMBC.d.ts +1 -1
- package/lib/prediction/predictHSQC.d.ts +1 -1
- package/lib/prediction/predictProton.d.ts +6 -2
- package/lib/prediction/predictProton.js +1 -1
- package/lib/prediction/predictProton.js.map +1 -1
- package/lib/prediction/utils/fetchPrediction.d.ts +1 -1
- package/lib/prediction/utils/getFilteredIDiaIDs.d.ts +3 -4
- package/lib/prediction/utils/getFilteredIDiaIDs.js +5 -6
- package/lib/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib/prediction/utils/getPredictions.d.ts +1 -1
- package/lib/prediction/utils/predict2D.d.ts +6 -2
- package/lib/prediction/utils/predict2D.js +5 -3
- package/lib/prediction/utils/predict2D.js.map +1 -1
- package/lib/signals/optimization/getInternalSignals.d.ts +3 -3
- package/lib/signals/optimization/getSumOfShapes.d.ts +1 -1
- package/lib/signals/optimizeSignals.d.ts +1 -1
- package/lib/signals/signalsJoin.d.ts +3 -3
- package/lib/signals/signalsToRanges.d.ts +1 -1
- package/lib/signals/utils/jAnalyzer.d.ts +2 -2
- package/lib/utilities/MakeMandatory.d.ts +1 -1
- package/lib/utilities/getFrequency.d.ts +1 -1
- package/lib/utilities/hasProperty.d.ts +1 -1
- package/lib/xy/xyAutoPeaksPicking.d.ts +1 -1
- package/lib/xy/xyAutoPeaksPicking.js +4 -1
- package/lib/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib/xyz/xyzAutoZonesPicking.d.ts +2 -2
- package/lib-esm/assignment/get13CAssignments.js.map +1 -1
- package/lib-esm/assignment/get1HAssignments.js.map +1 -1
- package/lib-esm/assignment/getAssignments.js.map +1 -1
- package/lib-esm/assignment/utils/getAssignment/buildAssignments.js.map +1 -1
- package/lib-esm/peaks/peaksToRanges.js +20 -19
- package/lib-esm/peaks/peaksToRanges.js.map +1 -1
- package/lib-esm/prediction/predictAll.js +3 -1
- package/lib-esm/prediction/predictAll.js.map +1 -1
- package/lib-esm/prediction/predictCarbon.js +5 -4
- package/lib-esm/prediction/predictCarbon.js.map +1 -1
- package/lib-esm/prediction/predictProton.js +1 -1
- package/lib-esm/prediction/predictProton.js.map +1 -1
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js +6 -7
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib-esm/prediction/utils/predict2D.js +6 -4
- package/lib-esm/prediction/utils/predict2D.js.map +1 -1
- package/lib-esm/xy/xyAutoPeaksPicking.js +4 -1
- package/lib-esm/xy/xyAutoPeaksPicking.js.map +1 -1
- package/package.json +8 -7
- package/src/assignment/get13CAssignments.ts +1 -1
- package/src/assignment/get1HAssignments.ts +1 -1
- package/src/assignment/getAssignments.ts +1 -1
- package/src/assignment/utils/getAssignment/buildAssignments.ts +1 -1
- package/src/openchemlib-utils.d.ts +10 -1
- package/src/peaks/peaksToRanges.ts +23 -19
- package/src/prediction/Prediction1D.ts +1 -1
- package/src/prediction/predictAll.ts +5 -2
- package/src/prediction/predictAllSpectra.ts +1 -1
- package/src/prediction/predictCOSY.ts +1 -1
- package/src/prediction/predictCarbon.ts +17 -10
- package/src/prediction/predictHMBC.ts +1 -1
- package/src/prediction/predictHSQC.ts +1 -1
- package/src/prediction/predictProton.ts +6 -2
- package/src/prediction/utils/fetchPrediction.ts +1 -1
- package/src/prediction/utils/getFilteredIDiaIDs.ts +13 -14
- package/src/prediction/utils/getPredictions.ts +1 -1
- package/src/prediction/utils/predict2D.ts +14 -6
- package/src/utilities/hasProperty.ts +1 -1
- package/src/xy/xyAutoPeaksPicking.ts +5 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
2
|
import { agnes } from 'ml-hclust';
|
|
3
3
|
import { Matrix } from 'ml-matrix';
|
|
4
|
-
import { getGroupedDiastereotopicAtomIDs, getPathsInfo, } from 'openchemlib-utils';
|
|
4
|
+
import { getGroupedDiastereotopicAtomIDs, getPathsInfo, groupDiastereotopicAtomIDs, } from 'openchemlib-utils';
|
|
5
5
|
import { setIDs } from '../../peaks/util/setIDs';
|
|
6
6
|
import { getNuclei } from './getNuclei';
|
|
7
7
|
import { getPredictions } from './getPredictions';
|
|
@@ -12,17 +12,19 @@ function checkFromTo(options) {
|
|
|
12
12
|
}
|
|
13
13
|
export async function predict2D(molecule, options = {}) {
|
|
14
14
|
checkFromTo(options);
|
|
15
|
-
let { from, to, minLength = 0, maxLength, predictOptions = {}, predictions, predictor, joinDistance = { H: 0.05, C: 0.5 }, includeDiagonal = false, } = options;
|
|
16
15
|
molecule.addImplicitHydrogens();
|
|
17
|
-
let diaIDs =
|
|
16
|
+
let { from, to, diaIDs, minLength = 0, maxLength, predictOptions = {}, predictions, predictor, joinDistance = { H: 0.05, C: 0.5 }, includeDiagonal = false, } = options;
|
|
18
17
|
const pathsInfo = getPathsInfo(molecule, {
|
|
19
18
|
fromLabel: from,
|
|
20
19
|
toLabel: to,
|
|
21
20
|
minLength,
|
|
22
21
|
maxLength,
|
|
23
22
|
});
|
|
23
|
+
const groupedDiaIDS = diaIDs
|
|
24
|
+
? groupDiastereotopicAtomIDs(diaIDs, molecule)
|
|
25
|
+
: getGroupedDiastereotopicAtomIDs(molecule);
|
|
24
26
|
let diaIDswithAtomInfo = [];
|
|
25
|
-
for (let diaID of
|
|
27
|
+
for (let diaID of groupedDiaIDS) {
|
|
26
28
|
diaIDswithAtomInfo.push({
|
|
27
29
|
...diaID,
|
|
28
30
|
pathInfo: JSON.parse(JSON.stringify(pathsInfo[diaID.atoms[0]])),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predict2D.js","sourceRoot":"","sources":["../../../src/prediction/utils/predict2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,EAAW,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"predict2D.js","sourceRoot":"","sources":["../../../src/prediction/utils/predict2D.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,10 @@ import { xyExtract, xNoiseSanPlot, xAbsoluteMedian, } from 'ml-spectra-processin
|
|
|
3
3
|
import { convertWidthToHz } from '../peaks/util/convertWidthToHz';
|
|
4
4
|
export function xyAutoPeaksPicking(data, options) {
|
|
5
5
|
const { from, to, frequency, noiseLevel, thresholdFactor = 3, minMaxRatio = 0.05, broadRatio = 0.00025, useSanPlot = false, smoothY = true, optimize = false, factorLimits = 4, realTopDetection = true, shape = { kind: 'gaussian' }, optimization = { kind: 'lm' }, broadWidth = 0.25, sgOptions = {}, direction = 'positive', } = options;
|
|
6
|
-
|
|
6
|
+
let pointsPerHz = 1 / frequency / (data.x[1] - data.x[0]);
|
|
7
|
+
// we can consider a peak with of 0.5 Hz for the windowSize
|
|
8
|
+
let ws = Math.max(Math.round(pointsPerHz / 2), 5);
|
|
9
|
+
const { windowSize = ws - (ws % 2) + 1, polynomial = 3 } = sgOptions;
|
|
7
10
|
if (data.x.length < windowSize)
|
|
8
11
|
return [];
|
|
9
12
|
if (from !== undefined && to !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xyAutoPeaksPicking.js","sourceRoot":"","sources":["../../src/xy/xyAutoPeaksPicking.ts"],"names":[],"mappings":"AACA,OAAO,EACL,GAAG,EACH,aAAa,EACb,cAAc,EAMd,QAAQ,GACT,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAgElE,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,OAAkC;IAElC,MAAM,EACJ,IAAI,EACJ,EAAE,EACF,SAAS,EACT,UAAU,EACV,eAAe,GAAG,CAAC,EACnB,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,OAAO,EACpB,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,IAAI,EACd,QAAQ,GAAG,KAAK,EAChB,YAAY,GAAG,CAAC,EAChB,gBAAgB,GAAG,IAAI,EACvB,KAAK,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAC5B,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAC7B,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,UAAU,GACvB,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"xyAutoPeaksPicking.js","sourceRoot":"","sources":["../../src/xy/xyAutoPeaksPicking.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nmr-processing",
|
|
3
|
-
"version": "9.3.
|
|
3
|
+
"version": "9.3.1-pre.1669891843",
|
|
4
4
|
"description": "Pure functions allowing to process NMR spectra.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -38,20 +38,20 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://github.com/cheminfo/nmr-processing#readme",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@types/jest": "^29.2.
|
|
41
|
+
"@types/jest": "^29.2.3",
|
|
42
42
|
"cheminfo-build": "^1.1.11",
|
|
43
43
|
"cheminfo-types": "^1.4.0",
|
|
44
|
-
"eslint": "^8.
|
|
44
|
+
"eslint": "^8.28.0",
|
|
45
45
|
"eslint-config-cheminfo-typescript": "^11.2.2",
|
|
46
46
|
"jest": "^29.3.1",
|
|
47
47
|
"jest-matcher-deep-close-to": "^3.0.2",
|
|
48
48
|
"md5": "^2.3.0",
|
|
49
49
|
"nmr-xy-testdata": "^0.5.1",
|
|
50
50
|
"openchemlib": "^8.0.1",
|
|
51
|
-
"prettier": "^2.
|
|
51
|
+
"prettier": "^2.8.0",
|
|
52
52
|
"rimraf": "^3.0.2",
|
|
53
53
|
"ts-jest": "^29.0.3",
|
|
54
|
-
"typescript": "^4.
|
|
54
|
+
"typescript": "^4.9.3"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@lukeed/uuid": "^2.0.0",
|
|
@@ -77,7 +77,8 @@
|
|
|
77
77
|
"ml-spectra-processing": "^11.14.0",
|
|
78
78
|
"ml-tree-set": "^0.1.1",
|
|
79
79
|
"nmr-correlation": "^2.3.3",
|
|
80
|
-
"
|
|
81
|
-
"
|
|
80
|
+
"nmredata": "^0.9.2",
|
|
81
|
+
"openchemlib-utils": "^2.1.2",
|
|
82
|
+
"spectrum-generator": "^8.0.6"
|
|
82
83
|
}
|
|
83
84
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
|
-
import { Molecule } from 'openchemlib';
|
|
3
2
|
import { addDiastereotopicMissingChirality } from 'openchemlib-utils';
|
|
3
|
+
import { Molecule } from 'openchemlib/full';
|
|
4
4
|
|
|
5
5
|
import { NMRRange, NMRRangeWithIntegration } from '..';
|
|
6
6
|
import {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Molecule } from 'openchemlib';
|
|
2
1
|
import { addDiastereotopicMissingChirality } from 'openchemlib-utils';
|
|
2
|
+
import { Molecule } from 'openchemlib/full';
|
|
3
3
|
|
|
4
4
|
import { NMRSignal1D } from '..';
|
|
5
5
|
import type { PredictCarbonOptions } from '../prediction/predictCarbon';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare module 'openchemlib-utils' {
|
|
2
|
-
import { Molecule } from 'openchemlib';
|
|
2
|
+
import { Molecule } from 'openchemlib/full';
|
|
3
3
|
|
|
4
4
|
export interface GroupDiastereotopicAtomIDs {
|
|
5
5
|
counter: number;
|
|
@@ -7,10 +7,13 @@ declare module 'openchemlib-utils' {
|
|
|
7
7
|
oclID: string;
|
|
8
8
|
atomLabel: string;
|
|
9
9
|
}
|
|
10
|
+
|
|
10
11
|
export type GroupedDiastereotopicAtomIDs = GroupDiastereotopicAtomIDs[];
|
|
11
12
|
function getGroupedDiastereotopicAtomIDs(
|
|
12
13
|
molecule: Molecule,
|
|
14
|
+
options?: { atomLabel: string },
|
|
13
15
|
): GroupedDiastereotopicAtomIDs;
|
|
16
|
+
|
|
14
17
|
interface GetHoseCodesForAtomOptions {
|
|
15
18
|
minSphereSize?: number;
|
|
16
19
|
maxSphereSize?: number;
|
|
@@ -155,4 +158,10 @@ declare module 'openchemlib-utils' {
|
|
|
155
158
|
): number[][] | Float64Array[];
|
|
156
159
|
|
|
157
160
|
function getDiastereotopicAtomIDs(molecule: Molecule): string[];
|
|
161
|
+
|
|
162
|
+
function groupDiastereotopicAtomIDs(
|
|
163
|
+
diaIDs: string[],
|
|
164
|
+
molecule: Molecule,
|
|
165
|
+
options?: { atomLabel: string },
|
|
166
|
+
): GroupedDiastereotopicAtomIDs;
|
|
158
167
|
}
|
|
@@ -206,17 +206,7 @@ export function peaksToRanges(
|
|
|
206
206
|
}
|
|
207
207
|
}
|
|
208
208
|
// it was a updateIntegrals function.
|
|
209
|
-
|
|
210
|
-
let sumObserved = 0;
|
|
211
|
-
for (const signal of signals) {
|
|
212
|
-
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
213
|
-
}
|
|
214
|
-
if (sumObserved !== integrationSum) {
|
|
215
|
-
sumIntegral = integrationSum / sumObserved;
|
|
216
|
-
for (const signal of signals) {
|
|
217
|
-
signal.integralData.value *= sumIntegral;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
209
|
+
updateIntegration(signals, integrationSum);
|
|
220
210
|
}
|
|
221
211
|
|
|
222
212
|
signals.sort((a, b) => {
|
|
@@ -230,6 +220,7 @@ export function peaksToRanges(
|
|
|
230
220
|
}
|
|
231
221
|
}
|
|
232
222
|
}
|
|
223
|
+
|
|
233
224
|
let ranges: NMRRange[] = [];
|
|
234
225
|
for (let i = 0; i < signals.length; i++) {
|
|
235
226
|
let signal = signals[i];
|
|
@@ -243,7 +234,6 @@ export function peaksToRanges(
|
|
|
243
234
|
delta: signal.delta,
|
|
244
235
|
kind: signal.kind || 'signal',
|
|
245
236
|
multiplicity: signal.multiplicity,
|
|
246
|
-
integration: signal.integralData.value,
|
|
247
237
|
};
|
|
248
238
|
if (keepPeaks) {
|
|
249
239
|
signalResult.peaks = signal.peaks.map((peak) => {
|
|
@@ -299,7 +289,7 @@ export function detectSignals(
|
|
|
299
289
|
let peaks;
|
|
300
290
|
let signals = [];
|
|
301
291
|
let prevPeak = { x: Number.MIN_SAFE_INTEGER };
|
|
302
|
-
|
|
292
|
+
|
|
303
293
|
frequencyCluster /= frequency;
|
|
304
294
|
for (const peak of peakList) {
|
|
305
295
|
if (Math.abs(peak.x - prevPeak.x) > frequencyCluster) {
|
|
@@ -349,15 +339,10 @@ export function detectSignals(
|
|
|
349
339
|
} else {
|
|
350
340
|
integration.value = integralPeaks;
|
|
351
341
|
}
|
|
352
|
-
spectrumIntegral += integration.value;
|
|
353
342
|
}
|
|
354
343
|
|
|
355
344
|
if (integrationSum > 0) {
|
|
356
|
-
|
|
357
|
-
for (let signal of signals) {
|
|
358
|
-
let integration = signal.integralData;
|
|
359
|
-
integration.value *= integralFactor;
|
|
360
|
-
}
|
|
345
|
+
updateIntegration(signals, integrationSum);
|
|
361
346
|
}
|
|
362
347
|
|
|
363
348
|
return signals;
|
|
@@ -370,3 +355,22 @@ export function detectSignals(
|
|
|
370
355
|
function computeArea(peak: Peak1DIntern, frequency: number) {
|
|
371
356
|
return Math.abs(((peak.intensity * peak.width) / frequency) * 1.57); // todo add an option with this value: 1.772453851
|
|
372
357
|
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* update the integration Values
|
|
361
|
+
* @param signals
|
|
362
|
+
* @param integrationSum
|
|
363
|
+
*/
|
|
364
|
+
function updateIntegration(signals: SignalIntern[], integrationSum: number) {
|
|
365
|
+
let sumIntegral = 0;
|
|
366
|
+
let sumObserved = 0;
|
|
367
|
+
for (const signal of signals) {
|
|
368
|
+
sumObserved += Math.abs(Math.round(signal.integralData.value));
|
|
369
|
+
}
|
|
370
|
+
if (sumObserved !== integrationSum) {
|
|
371
|
+
sumIntegral = integrationSum / sumObserved;
|
|
372
|
+
for (const signal of signals) {
|
|
373
|
+
signal.integralData.value *= sumIntegral;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getDiastereotopicAtomIDs } from 'openchemlib-utils';
|
|
2
|
+
import type { Molecule } from 'openchemlib/full';
|
|
2
3
|
|
|
3
4
|
import type { Prediction1D } from './Prediction1D';
|
|
4
5
|
import { predictCOSY } from './predictCOSY';
|
|
@@ -75,6 +76,8 @@ export async function predictAll(
|
|
|
75
76
|
predictOptions = {},
|
|
76
77
|
} = options;
|
|
77
78
|
|
|
79
|
+
const diaIDs = getDiastereotopicAtomIDs(molecule);
|
|
80
|
+
|
|
78
81
|
const xPrediction = await getPredictions(
|
|
79
82
|
from,
|
|
80
83
|
molecule,
|
|
@@ -100,7 +103,7 @@ export async function predictAll(
|
|
|
100
103
|
C: yPrediction,
|
|
101
104
|
};
|
|
102
105
|
|
|
103
|
-
const { molfile
|
|
106
|
+
const { molfile } = xPrediction;
|
|
104
107
|
|
|
105
108
|
const spectra: any = {
|
|
106
109
|
proton: predictions.H,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FromTo, PointXY } from 'cheminfo-types';
|
|
2
|
-
import type { Molecule } from 'openchemlib';
|
|
2
|
+
import type { Molecule } from 'openchemlib/full';
|
|
3
3
|
|
|
4
4
|
import { signals2DToZ } from '../signals/signals2DToZ';
|
|
5
5
|
import { OptionsSignalsToXY, signalsToXY } from '../signals/signalsToXY';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
2
|
import fetch from 'cross-fetch';
|
|
3
|
-
import
|
|
3
|
+
import { getDiastereotopicAtomIDs } from 'openchemlib-utils';
|
|
4
|
+
import type { Molecule } from 'openchemlib/full';
|
|
4
5
|
|
|
5
6
|
import { setIDs } from '../peaks/util/setIDs';
|
|
6
7
|
import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
@@ -10,7 +11,6 @@ import type { MakeMandatory } from '../utilities/MakeMandatory';
|
|
|
10
11
|
import type { Prediction1D } from './Prediction1D';
|
|
11
12
|
import type { DataBaseStructure } from './dataStructure';
|
|
12
13
|
import { fetchPrediction } from './utils/fetchPrediction';
|
|
13
|
-
import { flatGroupedDiaIDs } from './utils/flatGroupedDiaIDs';
|
|
14
14
|
import { getFilteredIDiaIDs } from './utils/getFilteredIDiaIDs';
|
|
15
15
|
import { Prediction, queryByHose } from './utils/queryByHOSE';
|
|
16
16
|
|
|
@@ -48,6 +48,10 @@ export interface PredictCarbonOptions {
|
|
|
48
48
|
* @default 'maximum level in the database'
|
|
49
49
|
*/
|
|
50
50
|
maxSphereSize?: number;
|
|
51
|
+
/**
|
|
52
|
+
* diastereotopic atom ids.
|
|
53
|
+
*/
|
|
54
|
+
diaIDs?: string[];
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
export type PredictCarbon = typeof predictCarbon;
|
|
@@ -72,7 +76,12 @@ export async function predictCarbon(
|
|
|
72
76
|
molecule: Molecule,
|
|
73
77
|
options: PredictCarbonOptions = {},
|
|
74
78
|
): Promise<Prediction1D> {
|
|
75
|
-
let {
|
|
79
|
+
let {
|
|
80
|
+
url,
|
|
81
|
+
database,
|
|
82
|
+
webserviceURL,
|
|
83
|
+
diaIDs = getDiastereotopicAtomIDs(molecule),
|
|
84
|
+
} = options;
|
|
76
85
|
|
|
77
86
|
if (webserviceURL) {
|
|
78
87
|
return fetchPrediction(molecule, { webserviceURL });
|
|
@@ -90,12 +99,10 @@ export async function predictCarbon(
|
|
|
90
99
|
|
|
91
100
|
if (maxSphereSize > maxLevel) maxSphereSize = maxLevel;
|
|
92
101
|
|
|
93
|
-
const {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
},
|
|
98
|
-
);
|
|
102
|
+
const { carbonDiaIDs, molfile } = getFilteredIDiaIDs(molecule, {
|
|
103
|
+
maxSphereSize,
|
|
104
|
+
diaIDs,
|
|
105
|
+
});
|
|
99
106
|
|
|
100
107
|
let predictions = queryByHose(carbonDiaIDs, database, {
|
|
101
108
|
maxSphereSize,
|
|
@@ -106,7 +113,7 @@ export async function predictCarbon(
|
|
|
106
113
|
return {
|
|
107
114
|
molfile,
|
|
108
115
|
nucleus: '13C',
|
|
109
|
-
diaIDs
|
|
116
|
+
diaIDs,
|
|
110
117
|
joinedSignals,
|
|
111
118
|
signals,
|
|
112
119
|
ranges: signalsToRanges(joinedSignals),
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
2
|
import fetch from 'cross-fetch';
|
|
3
3
|
import FormData from 'form-data';
|
|
4
|
-
import type { Molecule } from 'openchemlib';
|
|
5
4
|
import {
|
|
6
5
|
addDiastereotopicMissingChirality,
|
|
7
6
|
getConnectivityMatrix,
|
|
8
7
|
getDiastereotopicAtomIDs,
|
|
9
8
|
} from 'openchemlib-utils';
|
|
9
|
+
import type { Molecule } from 'openchemlib/full';
|
|
10
10
|
|
|
11
11
|
import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
12
12
|
import { signalsJoin } from '../signals/signalsJoin';
|
|
@@ -24,6 +24,10 @@ export interface PredictProtonOptions {
|
|
|
24
24
|
* A callback receiving a molfile and the result
|
|
25
25
|
*/
|
|
26
26
|
cache?: (molfile: string, result?: string) => void | string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* diastereotopic atom ids.
|
|
29
|
+
*/
|
|
30
|
+
diaIDs?: string[];
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
export type PredictProton = typeof predictProton;
|
|
@@ -56,7 +60,7 @@ export async function predictProton(
|
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
const diaIDs = getDiastereotopicAtomIDs(molecule);
|
|
63
|
+
const { diaIDs = getDiastereotopicAtomIDs(molecule) } = options;
|
|
60
64
|
const signals = protonParser(result, molecule, diaIDs);
|
|
61
65
|
const joinedSignals = signalsJoin(signals);
|
|
62
66
|
return {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Molecule } from 'openchemlib';
|
|
2
1
|
import {
|
|
3
|
-
getGroupedDiastereotopicAtomIDs,
|
|
4
2
|
getHoseCodesFromDiastereotopicID,
|
|
5
3
|
addDiastereotopicMissingChirality,
|
|
4
|
+
groupDiastereotopicAtomIDs,
|
|
6
5
|
} from 'openchemlib-utils';
|
|
7
6
|
import type { GroupDiastereotopicAtomIDs } from 'openchemlib-utils';
|
|
7
|
+
import type { Molecule } from 'openchemlib/full';
|
|
8
8
|
|
|
9
9
|
export interface GroupDiaIDsWithHose extends GroupDiastereotopicAtomIDs {
|
|
10
10
|
hose: string[];
|
|
@@ -14,9 +14,9 @@ export type GroupedDiaIDsWithHose = GroupDiaIDsWithHose[];
|
|
|
14
14
|
|
|
15
15
|
export function getFilteredIDiaIDs(
|
|
16
16
|
molecule: Molecule,
|
|
17
|
-
options: { maxSphereSize: number },
|
|
17
|
+
options: { maxSphereSize: number; diaIDs: string[] },
|
|
18
18
|
) {
|
|
19
|
-
const { maxSphereSize } = options;
|
|
19
|
+
const { maxSphereSize, diaIDs } = options;
|
|
20
20
|
|
|
21
21
|
molecule.addImplicitHydrogens();
|
|
22
22
|
molecule.addMissingChirality();
|
|
@@ -24,16 +24,16 @@ export function getFilteredIDiaIDs(
|
|
|
24
24
|
|
|
25
25
|
const molfile = molecule.toMolfile();
|
|
26
26
|
|
|
27
|
-
let groupedDiaIDs =
|
|
27
|
+
let groupedDiaIDs = groupDiastereotopicAtomIDs(diaIDs, molecule, {
|
|
28
|
+
atomLabel: 'C',
|
|
29
|
+
});
|
|
28
30
|
|
|
29
|
-
let carbonDiaIDs = groupedDiaIDs
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return a.atomLabel < b.atomLabel ? 1 : -1;
|
|
36
|
-
}) as any;
|
|
31
|
+
let carbonDiaIDs = groupedDiaIDs.sort((a, b) => {
|
|
32
|
+
if (a.atomLabel === b.atomLabel) {
|
|
33
|
+
return b.counter - a.counter;
|
|
34
|
+
}
|
|
35
|
+
return a.atomLabel < b.atomLabel ? 1 : -1;
|
|
36
|
+
}) as any;
|
|
37
37
|
|
|
38
38
|
const OCL = molecule.getOCL();
|
|
39
39
|
for (const diaId of carbonDiaIDs) {
|
|
@@ -48,7 +48,6 @@ export function getFilteredIDiaIDs(
|
|
|
48
48
|
let toReturn = {
|
|
49
49
|
molfile,
|
|
50
50
|
carbonDiaIDs: carbonDiaIDs as GroupedDiaIDsWithHose,
|
|
51
|
-
groupedDiaIDs,
|
|
52
51
|
};
|
|
53
52
|
|
|
54
53
|
return toReturn;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
2
|
import { agnes, Cluster } from 'ml-hclust';
|
|
3
3
|
import { Matrix } from 'ml-matrix';
|
|
4
|
-
import { Molecule } from 'openchemlib';
|
|
5
4
|
import {
|
|
6
5
|
getGroupedDiastereotopicAtomIDs,
|
|
7
6
|
getPathsInfo,
|
|
7
|
+
groupDiastereotopicAtomIDs,
|
|
8
8
|
} from 'openchemlib-utils';
|
|
9
9
|
import type {
|
|
10
10
|
AtomInfo,
|
|
11
11
|
GroupDiastereotopicAtomIDs,
|
|
12
12
|
PathInfo,
|
|
13
13
|
} from 'openchemlib-utils';
|
|
14
|
+
import { Molecule } from 'openchemlib/full';
|
|
14
15
|
|
|
15
16
|
import { setIDs } from '../../peaks/util/setIDs';
|
|
16
17
|
import type { NMRSignal1D } from '../../signals/NMRSignal1D';
|
|
@@ -86,6 +87,10 @@ export interface Predict2DOptions {
|
|
|
86
87
|
* @default false
|
|
87
88
|
*/
|
|
88
89
|
includeDiagonal?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* diastereotopic atom ids of the molecule.
|
|
92
|
+
*/
|
|
93
|
+
diaIDs?: string[];
|
|
89
94
|
}
|
|
90
95
|
|
|
91
96
|
export interface PredictOptions {
|
|
@@ -125,9 +130,12 @@ export async function predict2D(
|
|
|
125
130
|
) {
|
|
126
131
|
checkFromTo(options);
|
|
127
132
|
|
|
133
|
+
molecule.addImplicitHydrogens();
|
|
134
|
+
|
|
128
135
|
let {
|
|
129
136
|
from,
|
|
130
137
|
to,
|
|
138
|
+
diaIDs,
|
|
131
139
|
minLength = 0,
|
|
132
140
|
maxLength,
|
|
133
141
|
predictOptions = {},
|
|
@@ -137,10 +145,6 @@ export async function predict2D(
|
|
|
137
145
|
includeDiagonal = false,
|
|
138
146
|
} = options;
|
|
139
147
|
|
|
140
|
-
molecule.addImplicitHydrogens();
|
|
141
|
-
|
|
142
|
-
let diaIDs = getGroupedDiastereotopicAtomIDs(molecule);
|
|
143
|
-
|
|
144
148
|
const pathsInfo = getPathsInfo(molecule, {
|
|
145
149
|
fromLabel: from,
|
|
146
150
|
toLabel: to,
|
|
@@ -148,8 +152,12 @@ export async function predict2D(
|
|
|
148
152
|
maxLength,
|
|
149
153
|
});
|
|
150
154
|
|
|
155
|
+
const groupedDiaIDS = diaIDs
|
|
156
|
+
? groupDiastereotopicAtomIDs(diaIDs, molecule)
|
|
157
|
+
: getGroupedDiastereotopicAtomIDs(molecule);
|
|
158
|
+
|
|
151
159
|
let diaIDswithAtomInfo: GroupDiastereotopicAtomIDsWithAtomInfo[] = [];
|
|
152
|
-
for (let diaID of
|
|
160
|
+
for (let diaID of groupedDiaIDS) {
|
|
153
161
|
diaIDswithAtomInfo.push({
|
|
154
162
|
...diaID,
|
|
155
163
|
pathInfo: JSON.parse(
|
|
@@ -106,7 +106,11 @@ export function xyAutoPeaksPicking(
|
|
|
106
106
|
direction = 'positive',
|
|
107
107
|
} = options;
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
let pointsPerHz = 1 / frequency / (data.x[1] - data.x[0]);
|
|
110
|
+
// we can consider a peak with of 0.5 Hz for the windowSize
|
|
111
|
+
let ws = Math.max(Math.round(pointsPerHz / 2), 5);
|
|
112
|
+
|
|
113
|
+
const { windowSize = ws - (ws % 2) + 1, polynomial = 3 } = sgOptions;
|
|
110
114
|
|
|
111
115
|
if (data.x.length < windowSize) return [];
|
|
112
116
|
|