nmr-processing 9.9.2 → 10.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.
- package/lib/assignment/get13CAssignments.js +7 -4
- package/lib/assignment/get13CAssignments.js.map +1 -1
- package/lib/assignment/get1HAssignments.js +7 -5
- package/lib/assignment/get1HAssignments.js.map +1 -1
- package/lib/assignment/utils/generalAssignment/buildAssignments.d.ts +3 -1
- package/lib/assignment/utils/generalAssignment/buildAssignments.js +18 -7
- package/lib/assignment/utils/generalAssignment/buildAssignments.js.map +1 -1
- package/lib/index.d.ts +2 -7
- package/lib/index.js +2 -7
- package/lib/index.js.map +1 -1
- package/lib/prediction/GroupDiastereotopicAtomIDs.d.ts +6 -0
- package/lib/prediction/GroupDiastereotopicAtomIDs.js +3 -0
- package/lib/prediction/GroupDiastereotopicAtomIDs.js.map +1 -0
- package/lib/prediction/Prediction1D.d.ts +2 -7
- package/lib/prediction/Prediction2D.d.ts +2 -7
- package/lib/prediction/PredictionBase1D.d.ts +8 -0
- package/lib/prediction/PredictionBase1D.js +3 -0
- package/lib/prediction/PredictionBase1D.js.map +1 -0
- package/lib/prediction/PredictionBase2D.d.ts +8 -0
- package/lib/prediction/PredictionBase2D.js +3 -0
- package/lib/prediction/PredictionBase2D.js.map +1 -0
- package/lib/prediction/predict.d.ts +55 -0
- package/lib/prediction/predict.js +113 -0
- package/lib/prediction/predict.js.map +1 -0
- package/lib/prediction/predictCOSY.d.ts +15 -13
- package/lib/prediction/predictCOSY.js +3 -6
- package/lib/prediction/predictCOSY.js.map +1 -1
- package/lib/prediction/predictCarbon.d.ts +12 -4
- package/lib/prediction/predictCarbon.js +10 -16
- package/lib/prediction/predictCarbon.js.map +1 -1
- package/lib/prediction/predictHMBC.d.ts +16 -25
- package/lib/prediction/predictHMBC.js +3 -7
- package/lib/prediction/predictHMBC.js.map +1 -1
- package/lib/prediction/predictHSQC.d.ts +16 -25
- package/lib/prediction/predictHSQC.js +3 -7
- package/lib/prediction/predictHSQC.js.map +1 -1
- package/lib/prediction/predictProton.d.ts +7 -4
- package/lib/prediction/predictProton.js +8 -21
- package/lib/prediction/predictProton.js.map +1 -1
- package/lib/prediction/{predictAllSpectra.d.ts → predictSpectra.d.ts} +1 -1
- package/lib/prediction/{predictAllSpectra.js → predictSpectra.js} +7 -5
- package/lib/prediction/predictSpectra.js.map +1 -0
- package/lib/prediction/utils/fetchPrediction.d.ts +2 -3
- package/lib/prediction/utils/fetchPrediction.js +12 -7
- package/lib/prediction/utils/fetchPrediction.js.map +1 -1
- package/lib/prediction/utils/getFilteredIDiaIDs.d.ts +4 -13
- package/lib/prediction/utils/getFilteredIDiaIDs.js +7 -20
- package/lib/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib/prediction/utils/isMolfileNotEmpty.d.ts +1 -0
- package/lib/prediction/utils/isMolfileNotEmpty.js +12 -0
- package/lib/prediction/utils/isMolfileNotEmpty.js.map +1 -0
- package/lib/prediction/utils/predict2D.d.ts +13 -16
- package/lib/prediction/utils/predict2D.js +41 -18
- package/lib/prediction/utils/predict2D.js.map +1 -1
- package/lib/prediction/utils/queryByHOSE.d.ts +1 -2
- package/lib/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib/prediction/utils/shouldPredict.d.ts +2 -0
- package/lib/prediction/utils/shouldPredict.js +15 -0
- package/lib/prediction/utils/shouldPredict.js.map +1 -0
- package/lib-esm/assignment/get13CAssignments.js +7 -4
- package/lib-esm/assignment/get13CAssignments.js.map +1 -1
- package/lib-esm/assignment/get1HAssignments.js +7 -5
- package/lib-esm/assignment/get1HAssignments.js.map +1 -1
- package/lib-esm/assignment/utils/generalAssignment/buildAssignments.js +18 -7
- package/lib-esm/assignment/utils/generalAssignment/buildAssignments.js.map +1 -1
- package/lib-esm/index.js +2 -7
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/prediction/GroupDiastereotopicAtomIDs.js +2 -0
- package/lib-esm/prediction/GroupDiastereotopicAtomIDs.js.map +1 -0
- package/lib-esm/prediction/PredictionBase1D.js +2 -0
- package/lib-esm/prediction/PredictionBase1D.js.map +1 -0
- package/lib-esm/prediction/PredictionBase2D.js +2 -0
- package/lib-esm/prediction/PredictionBase2D.js.map +1 -0
- package/lib-esm/prediction/predict.js +109 -0
- package/lib-esm/prediction/predict.js.map +1 -0
- package/lib-esm/prediction/predictCOSY.js +3 -6
- package/lib-esm/prediction/predictCOSY.js.map +1 -1
- package/lib-esm/prediction/predictCarbon.js +10 -16
- package/lib-esm/prediction/predictCarbon.js.map +1 -1
- package/lib-esm/prediction/predictHMBC.js +3 -7
- package/lib-esm/prediction/predictHMBC.js.map +1 -1
- package/lib-esm/prediction/predictHSQC.js +3 -7
- package/lib-esm/prediction/predictHSQC.js.map +1 -1
- package/lib-esm/prediction/predictProton.js +8 -21
- package/lib-esm/prediction/predictProton.js.map +1 -1
- package/lib-esm/prediction/{predictAllSpectra.js → predictSpectra.js} +7 -5
- package/lib-esm/prediction/predictSpectra.js.map +1 -0
- package/lib-esm/prediction/utils/fetchPrediction.js +12 -7
- package/lib-esm/prediction/utils/fetchPrediction.js.map +1 -1
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js +7 -20
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib-esm/prediction/utils/isMolfileNotEmpty.js +8 -0
- package/lib-esm/prediction/utils/isMolfileNotEmpty.js.map +1 -0
- package/lib-esm/prediction/utils/predict2D.js +41 -18
- package/lib-esm/prediction/utils/predict2D.js.map +1 -1
- package/lib-esm/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib-esm/prediction/utils/shouldPredict.js +11 -0
- package/lib-esm/prediction/utils/shouldPredict.js.map +1 -0
- package/package.json +2 -3
- package/src/assignment/get13CAssignments.ts +9 -8
- package/src/assignment/get1HAssignments.ts +8 -9
- package/src/assignment/utils/generalAssignment/buildAssignments.ts +28 -12
- package/src/index.ts +3 -8
- package/src/prediction/GroupDiastereotopicAtomIDs.ts +6 -0
- package/src/prediction/Prediction1D.ts +2 -7
- package/src/prediction/Prediction2D.ts +2 -7
- package/src/prediction/PredictionBase1D.ts +9 -0
- package/src/prediction/PredictionBase2D.ts +9 -0
- package/src/prediction/predict.ts +201 -0
- package/src/prediction/predictCOSY.ts +18 -18
- package/src/prediction/predictCarbon.ts +28 -26
- package/src/prediction/predictHMBC.ts +17 -27
- package/src/prediction/predictHSQC.ts +18 -25
- package/src/prediction/predictProton.ts +16 -30
- package/src/prediction/{predictAllSpectra.ts → predictSpectra.ts} +6 -4
- package/src/prediction/utils/fetchPrediction.ts +15 -10
- package/src/prediction/utils/getFilteredIDiaIDs.ts +16 -49
- package/src/prediction/utils/isMolfileNotEmpty.ts +8 -0
- package/src/prediction/utils/predict2D.ts +69 -69
- package/src/prediction/utils/queryByHOSE.ts +2 -2
- package/src/prediction/utils/shouldPredict.ts +14 -0
- package/lib/prediction/predictAll.d.ts +0 -64
- package/lib/prediction/predictAll.js +0 -82
- package/lib/prediction/predictAll.js.map +0 -1
- package/lib/prediction/predictAllSpectra.js.map +0 -1
- package/lib/prediction/utils/getPredictions.d.ts +0 -4
- package/lib/prediction/utils/getPredictions.js +0 -18
- package/lib/prediction/utils/getPredictions.js.map +0 -1
- package/lib-esm/prediction/predictAll.js +0 -78
- package/lib-esm/prediction/predictAll.js.map +0 -1
- package/lib-esm/prediction/predictAllSpectra.js.map +0 -1
- package/lib-esm/prediction/utils/getPredictions.js +0 -14
- package/lib-esm/prediction/utils/getPredictions.js.map +0 -1
- package/src/openchemlib-utils.d.ts +0 -167
- package/src/prediction/predictAll.ts +0 -157
- package/src/prediction/utils/getPredictions.ts +0 -24
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
|
-
import { getDiastereotopicAtomIDs } from 'openchemlib-utils';
|
|
3
2
|
import { setIDs } from '../peaks/util/setIDs';
|
|
4
3
|
import { signalsToRanges } from '../signals/signalsToRanges';
|
|
5
4
|
import { fetchPrediction } from './utils/fetchPrediction';
|
|
6
5
|
import { getFilteredIDiaIDs } from './utils/getFilteredIDiaIDs';
|
|
7
|
-
import {
|
|
6
|
+
import { isMolfileNotEmpty } from './utils/isMolfileNotEmpty';
|
|
8
7
|
import { queryByHose } from './utils/queryByHOSE';
|
|
9
8
|
function checkFromPrediction(signal) {
|
|
10
9
|
if (!signal.atoms)
|
|
@@ -18,21 +17,19 @@ function checkFromPrediction(signal) {
|
|
|
18
17
|
* Make a query to a hose code based database to predict carbon chemical shift
|
|
19
18
|
* @returns {Promise<object>} - object with molfile, diaIDs, signals, joined signals by diaIDs and ranges.
|
|
20
19
|
*/
|
|
21
|
-
export async function predictCarbon(
|
|
22
|
-
|
|
20
|
+
export async function predictCarbon(options) {
|
|
21
|
+
const { hoses, molfile, database, webserviceURL = 'https://nmr-prediction.service.zakodium.com/v1/predict/carbon', groupedDiaIDs, } = options;
|
|
22
|
+
if (!database && isMolfileNotEmpty(molfile)) {
|
|
23
|
+
return fetchPrediction(molfile, { webserviceURL });
|
|
24
|
+
}
|
|
25
|
+
else if (!isMolfileNotEmpty(molfile)) {
|
|
23
26
|
return {
|
|
24
|
-
molfile: molecule.toMolfile(),
|
|
25
27
|
nucleus: '13C',
|
|
26
|
-
diaIDs: [],
|
|
27
28
|
joinedSignals: [],
|
|
28
29
|
signals: [],
|
|
29
30
|
ranges: [],
|
|
30
|
-
molecule,
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
const { database, webserviceURL = 'https://nmr-prediction.service.zakodium.com/v1/predict/carbon', diaIDs = getDiastereotopicAtomIDs(molecule), } = options;
|
|
34
|
-
if (!database)
|
|
35
|
-
return fetchPrediction(molecule, { webserviceURL });
|
|
36
33
|
if (!database) {
|
|
37
34
|
throw new Error('There is not a database');
|
|
38
35
|
}
|
|
@@ -40,9 +37,9 @@ export async function predictCarbon(molecule, options = {}) {
|
|
|
40
37
|
let { maxSphereSize = maxLevel } = options;
|
|
41
38
|
if (maxSphereSize > maxLevel)
|
|
42
39
|
maxSphereSize = maxLevel;
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
const carbonDiaIDs = getFilteredIDiaIDs({
|
|
41
|
+
groupedDiaIDs,
|
|
42
|
+
hoses,
|
|
46
43
|
});
|
|
47
44
|
const predictions = queryByHose(carbonDiaIDs, database, {
|
|
48
45
|
maxSphereSize,
|
|
@@ -50,13 +47,10 @@ export async function predictCarbon(molecule, options = {}) {
|
|
|
50
47
|
const signals = formatSignals(predictions);
|
|
51
48
|
const joinedSignals = joinSignalByDiaID(signals);
|
|
52
49
|
return {
|
|
53
|
-
molfile,
|
|
54
50
|
nucleus: '13C',
|
|
55
|
-
diaIDs,
|
|
56
51
|
joinedSignals,
|
|
57
52
|
signals,
|
|
58
53
|
ranges: signalsToRanges(joinedSignals),
|
|
59
|
-
molecule,
|
|
60
54
|
};
|
|
61
55
|
}
|
|
62
56
|
function formatSignals(predictions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predictCarbon.js","sourceRoot":"","sources":["../../src/prediction/predictCarbon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"predictCarbon.js","sourceRoot":"","sources":["../../src/prediction/predictCarbon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import { predictCarbon } from './predictCarbon';
|
|
2
|
-
import { predictProton } from './predictProton';
|
|
3
1
|
import { predict2D } from './utils/predict2D';
|
|
4
|
-
export async function predictHMBC(molecule, options
|
|
5
|
-
const { minLength = 2, maxLength = 3,
|
|
2
|
+
export async function predictHMBC(molecule, options) {
|
|
3
|
+
const { minLength = 2, maxLength = 3, joinDistance = { H: 0.05, C: 0.5 }, } = options;
|
|
6
4
|
return predict2D(molecule, {
|
|
5
|
+
...options,
|
|
7
6
|
from: 'H',
|
|
8
7
|
to: 'C',
|
|
9
|
-
predictor,
|
|
10
8
|
minLength,
|
|
11
9
|
maxLength,
|
|
12
|
-
predictions,
|
|
13
|
-
predictOptions,
|
|
14
10
|
joinDistance,
|
|
15
11
|
});
|
|
16
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predictHMBC.js","sourceRoot":"","sources":["../../src/prediction/predictHMBC.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"predictHMBC.js","sourceRoot":"","sources":["../../src/prediction/predictHMBC.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA6C9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAkB,EAClB,OAA2B;IAE3B,MAAM,EACJ,SAAS,GAAG,CAAC,EACb,SAAS,GAAG,CAAC,EACb,YAAY,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GACnC,GAAG,OAAO,CAAC;IAEZ,OAAO,SAAS,CAAC,QAAQ,EAAE;QACzB,GAAG,OAAO;QACV,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,GAAG;QACP,SAAS;QACT,SAAS;QACT,YAAY;KACb,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import { predictCarbon } from './predictCarbon';
|
|
2
|
-
import { predictProton } from './predictProton';
|
|
3
1
|
import { predict2D } from './utils/predict2D';
|
|
4
2
|
/**
|
|
5
3
|
* Generate the correlation bidimensional nmr peaks based on the number of bonds between a pair of atoms
|
|
6
4
|
* @returns {Promise<object>} - object with molfile, diaIDs, 2D signals joined signals and zones.
|
|
7
5
|
*/
|
|
8
|
-
export async function predictHSQC(molecule, options
|
|
9
|
-
const { minLength = 1, maxLength = 1,
|
|
6
|
+
export async function predictHSQC(molecule, options) {
|
|
7
|
+
const { minLength = 1, maxLength = 1, joinDistance = { H: 0.05, C: 0.5 }, } = options;
|
|
10
8
|
return predict2D(molecule, {
|
|
9
|
+
...options,
|
|
11
10
|
from: 'H',
|
|
12
11
|
to: 'C',
|
|
13
|
-
predictor,
|
|
14
12
|
minLength,
|
|
15
13
|
maxLength,
|
|
16
|
-
predictions,
|
|
17
|
-
predictOptions,
|
|
18
14
|
joinDistance,
|
|
19
15
|
});
|
|
20
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predictHSQC.js","sourceRoot":"","sources":["../../src/prediction/predictHSQC.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"predictHSQC.js","sourceRoot":"","sources":["../../src/prediction/predictHSQC.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAuC9C;;;GAGG;AAEH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAkB,EAClB,OAA2B;IAE3B,MAAM,EACJ,SAAS,GAAG,CAAC,EACb,SAAS,GAAG,CAAC,EACb,YAAY,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GACnC,GAAG,OAAO,CAAC;IAEZ,OAAO,SAAS,CAAC,QAAQ,EAAE;QACzB,GAAG,OAAO;QACV,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,GAAG;QACP,SAAS;QACT,SAAS;QACT,YAAY;KACb,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,27 +1,19 @@
|
|
|
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 { ensureHeterotopicChiralBonds, getConnectivityMatrix, getDiastereotopicAtomIDs, } from 'openchemlib-utils';
|
|
5
4
|
import { signalsJoin } from '../signals/signalsJoin';
|
|
6
5
|
import { signalsToRanges } from '../signals/signalsToRanges';
|
|
7
|
-
import {
|
|
8
|
-
export async function predictProton(
|
|
9
|
-
if (
|
|
6
|
+
import { isMolfileNotEmpty } from './utils/isMolfileNotEmpty';
|
|
7
|
+
export async function predictProton(molfile, options) {
|
|
8
|
+
if (!isMolfileNotEmpty(molfile)) {
|
|
10
9
|
return {
|
|
11
|
-
|
|
12
|
-
nucleus: '13C',
|
|
13
|
-
diaIDs: [],
|
|
10
|
+
nucleus: '1H',
|
|
14
11
|
joinedSignals: [],
|
|
15
12
|
signals: [],
|
|
16
13
|
ranges: [],
|
|
17
|
-
molecule,
|
|
18
14
|
};
|
|
19
15
|
}
|
|
20
16
|
const { cache } = options;
|
|
21
|
-
molecule = molecule.getCompactCopy();
|
|
22
|
-
molecule.addImplicitHydrogens();
|
|
23
|
-
ensureHeterotopicChiralBonds(molecule);
|
|
24
|
-
const molfile = molecule.toMolfile();
|
|
25
17
|
let result;
|
|
26
18
|
if (cache) {
|
|
27
19
|
result = cache(molfile);
|
|
@@ -39,26 +31,21 @@ export async function predictProton(molecule, options = {}) {
|
|
|
39
31
|
cache(molfile, result);
|
|
40
32
|
}
|
|
41
33
|
}
|
|
42
|
-
const { diaIDs
|
|
43
|
-
const signals = protonParser(result,
|
|
34
|
+
const { diaIDs, distanceMatrix } = options;
|
|
35
|
+
const signals = protonParser(result, { diaIDs, distanceMatrix });
|
|
44
36
|
const joinedSignals = signalsJoin(signals);
|
|
45
37
|
return {
|
|
46
|
-
molfile,
|
|
47
|
-
diaIDs,
|
|
48
38
|
nucleus: '1H',
|
|
49
39
|
joinedSignals,
|
|
50
40
|
signals,
|
|
51
41
|
ranges: signalsToRanges(joinedSignals),
|
|
52
|
-
molecule,
|
|
53
42
|
};
|
|
54
43
|
}
|
|
55
|
-
function protonParser(result,
|
|
56
|
-
if (molecule.getAllAtoms() === 0)
|
|
57
|
-
return [];
|
|
44
|
+
function protonParser(result, options) {
|
|
58
45
|
if (result.includes('ERR')) {
|
|
59
46
|
throw Error(`Spinus optimization: ${result}`);
|
|
60
47
|
}
|
|
61
|
-
const
|
|
48
|
+
const { diaIDs, distanceMatrix } = options;
|
|
62
49
|
const lines = result.split('\n').filter((line) => line);
|
|
63
50
|
const signals = [];
|
|
64
51
|
for (const line of lines) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"predictProton.js","sourceRoot":"","sources":["../../src/prediction/predictProton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,QAAQ,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"predictProton.js","sourceRoot":"","sources":["../../src/prediction/predictProton.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { signals2DToZ } from '../signals/signals2DToZ';
|
|
2
2
|
import { signalsToXY } from '../signals/signalsToXY';
|
|
3
3
|
import { getFrequency } from '../utilities/getFrequency';
|
|
4
|
-
import {
|
|
4
|
+
import { predict } from './predict';
|
|
5
5
|
export async function predictAllSpectra(molecule, options = {}) {
|
|
6
6
|
const { simulation: simulationOptions = { oneD: {}, twoD: {} }, prediction: predictionOptions = {}, } = options;
|
|
7
|
-
const
|
|
8
|
-
const { molfile, spectra } = predictions;
|
|
7
|
+
const { spectra } = await predict(molecule, predictionOptions);
|
|
9
8
|
const oneDOptions = {
|
|
10
9
|
...{
|
|
11
10
|
proton: { from: 0, to: 14 },
|
|
@@ -51,7 +50,10 @@ export async function predictAllSpectra(molecule, options = {}) {
|
|
|
51
50
|
break;
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
|
-
return {
|
|
53
|
+
return {
|
|
54
|
+
spectra: newSpectra,
|
|
55
|
+
molecules: [{ molfile: molecule.toMolfile() }],
|
|
56
|
+
};
|
|
55
57
|
}
|
|
56
58
|
function get2DSpectrum(prediction, options) {
|
|
57
59
|
const { signals, zones, nuclei } = prediction;
|
|
@@ -118,4 +120,4 @@ function calculateFrequency(nucleus, frequency) {
|
|
|
118
120
|
})}`;
|
|
119
121
|
}
|
|
120
122
|
}
|
|
121
|
-
//# sourceMappingURL=
|
|
123
|
+
//# sourceMappingURL=predictSpectra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predictSpectra.js","sourceRoot":"","sources":["../../src/prediction/predictSpectra.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
import fetch from 'cross-fetch';
|
|
2
|
-
|
|
2
|
+
import { isMolfileNotEmpty } from './isMolfileNotEmpty';
|
|
3
|
+
export async function fetchPrediction(molfile, options) {
|
|
4
|
+
if (!isMolfileNotEmpty(molfile)) {
|
|
5
|
+
return {
|
|
6
|
+
nucleus: '13C',
|
|
7
|
+
joinedSignals: [],
|
|
8
|
+
signals: [],
|
|
9
|
+
ranges: [],
|
|
10
|
+
};
|
|
11
|
+
}
|
|
3
12
|
const { webserviceURL } = options;
|
|
4
13
|
const response = await fetch(webserviceURL, {
|
|
5
14
|
headers: {
|
|
6
15
|
accept: 'application/json',
|
|
7
16
|
'content-type': 'application/json',
|
|
8
17
|
},
|
|
9
|
-
body: JSON.stringify({ molfile
|
|
18
|
+
body: JSON.stringify({ molfile }),
|
|
10
19
|
method: 'POST',
|
|
11
20
|
});
|
|
12
21
|
if (response.status >= 400) {
|
|
13
22
|
throw new Error(response.statusText);
|
|
14
23
|
}
|
|
15
|
-
|
|
16
|
-
prediction.molecule = molecule
|
|
17
|
-
.getOCL()
|
|
18
|
-
.Molecule.fromMolfile(prediction.molfile);
|
|
19
|
-
return prediction;
|
|
24
|
+
return (await response.json()).data;
|
|
20
25
|
}
|
|
21
26
|
//# sourceMappingURL=fetchPrediction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchPrediction.js","sourceRoot":"","sources":["../../../src/prediction/utils/fetchPrediction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchPrediction.js","sourceRoot":"","sources":["../../../src/prediction/utils/fetchPrediction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAIhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAMxD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,OAA+B;IAE/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAC/B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;SACX,CAAC;KACH;IACD,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;QAC1C,OAAO,EAAE;YACP,MAAM,EAAE,kBAAkB;YAC1B,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KACtC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC"}
|
|
@@ -1,29 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
ensureHeterotopicChiralBonds(molecule);
|
|
7
|
-
const molfile = molecule.toMolfile();
|
|
8
|
-
const groupedDiaIDs = groupDiastereotopicAtomIDs(diaIDs, molecule, {
|
|
9
|
-
atomLabel: 'C',
|
|
10
|
-
});
|
|
11
|
-
const carbonDiaIDs = groupedDiaIDs.sort((a, b) => {
|
|
1
|
+
export function getFilteredIDiaIDs(options) {
|
|
2
|
+
const { groupedDiaIDs, hoses } = options;
|
|
3
|
+
const carbonDiaIDs = groupedDiaIDs
|
|
4
|
+
.filter((group) => group.atomLabel === 'C')
|
|
5
|
+
.sort((a, b) => {
|
|
12
6
|
if (a.atomLabel === b.atomLabel) {
|
|
13
7
|
return b.counter - a.counter;
|
|
14
8
|
}
|
|
15
9
|
return a.atomLabel < b.atomLabel ? 1 : -1;
|
|
16
10
|
});
|
|
17
|
-
const OCL = molecule.getOCL();
|
|
18
11
|
for (const diaId of carbonDiaIDs) {
|
|
19
|
-
diaId.hose =
|
|
20
|
-
maxSphereSize,
|
|
21
|
-
});
|
|
12
|
+
diaId.hose = hoses[diaId.atoms[0]];
|
|
22
13
|
}
|
|
23
|
-
|
|
24
|
-
molfile,
|
|
25
|
-
carbonDiaIDs: carbonDiaIDs,
|
|
26
|
-
};
|
|
27
|
-
return toReturn;
|
|
14
|
+
return carbonDiaIDs;
|
|
28
15
|
}
|
|
29
16
|
//# sourceMappingURL=getFilteredIDiaIDs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFilteredIDiaIDs.js","sourceRoot":"","sources":["../../../src/prediction/utils/getFilteredIDiaIDs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getFilteredIDiaIDs.js","sourceRoot":"","sources":["../../../src/prediction/utils/getFilteredIDiaIDs.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,OAGlC;IACC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAEzC,MAAM,YAAY,GAAG,aAAa;SAC/B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC;SAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,EAAE;YAC/B,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;SAC9B;QACD,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;QAChC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACpC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Molecule } from 'openchemlib/full';
|
|
2
|
+
import { isEmptyMolecule } from './isEmptyMolecule';
|
|
3
|
+
export function isMolfileNotEmpty(molFile) {
|
|
4
|
+
if (!molFile?.match(/V[23]0/))
|
|
5
|
+
return false;
|
|
6
|
+
return !isEmptyMolecule(Molecule.fromMolfile(molFile));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=isMolfileNotEmpty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isMolfileNotEmpty.js","sourceRoot":"","sources":["../../../src/prediction/utils/isMolfileNotEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -1,39 +1,36 @@
|
|
|
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 {
|
|
4
|
+
import { Molecule } from 'openchemlib/full';
|
|
5
5
|
import { setIDs } from '../../peaks/util/setIDs';
|
|
6
6
|
import { getNuclei } from './getNuclei';
|
|
7
|
-
import { getPredictions } from './getPredictions';
|
|
8
7
|
function checkFromTo(options) {
|
|
9
8
|
if (!options.from || !options.to) {
|
|
10
9
|
throw new Error('options from and to are mandatory');
|
|
11
10
|
}
|
|
12
11
|
}
|
|
13
|
-
export async function predict2D(molecule, options
|
|
12
|
+
export async function predict2D(molecule, options) {
|
|
14
13
|
checkFromTo(options);
|
|
15
14
|
molecule.addImplicitHydrogens();
|
|
16
|
-
const { from, to, diaIDs, minLength = 0, maxLength,
|
|
17
|
-
const pathsInfo =
|
|
15
|
+
const { from, to, diaIDs, groupedDiaIDs, minLength = 0, maxLength, predictions, distanceMatrix, joinDistance = { H: 0.05, C: 0.5 }, includeDiagonal = false, } = options;
|
|
16
|
+
const pathsInfo = getPossibleCorrelations({
|
|
17
|
+
molecule,
|
|
18
18
|
fromLabel: from,
|
|
19
19
|
toLabel: to,
|
|
20
|
+
diaIDs,
|
|
21
|
+
distanceMatrix,
|
|
20
22
|
minLength,
|
|
21
23
|
maxLength,
|
|
22
24
|
});
|
|
23
|
-
const groupedDiaIDS = diaIDs
|
|
24
|
-
? groupDiastereotopicAtomIDs(diaIDs, molecule)
|
|
25
|
-
: getGroupedDiastereotopicAtomIDs(molecule);
|
|
26
25
|
const diaIDswithAtomInfo = [];
|
|
27
|
-
for (const diaID of
|
|
26
|
+
for (const diaID of groupedDiaIDs) {
|
|
28
27
|
diaIDswithAtomInfo.push({
|
|
29
28
|
...diaID,
|
|
30
29
|
pathInfo: JSON.parse(JSON.stringify(pathsInfo[diaID.atoms[0]])),
|
|
31
30
|
});
|
|
32
31
|
}
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
? xPrediction
|
|
36
|
-
: await getPredictions(to, molecule, predictOptions, predictor, predictions);
|
|
32
|
+
const yPrediction = predictions[to];
|
|
33
|
+
const xPrediction = predictions[from];
|
|
37
34
|
if (!xPrediction || !yPrediction) {
|
|
38
35
|
throw new Error('predictions are not availaible');
|
|
39
36
|
}
|
|
@@ -85,21 +82,47 @@ export async function predict2D(molecule, options = {}) {
|
|
|
85
82
|
}
|
|
86
83
|
}
|
|
87
84
|
if (includeDiagonal) {
|
|
88
|
-
|
|
85
|
+
addSelfCorrelation(group, { paths: pathsInfo, signalsByDiaID });
|
|
89
86
|
}
|
|
90
87
|
// clusterize signals by distance
|
|
91
88
|
const joinedSignals = Object.values(group);
|
|
92
89
|
const zones = createZones(joinedSignals, { joinDistance, from, to });
|
|
93
90
|
return {
|
|
94
|
-
molfile: molecule.toMolfile(),
|
|
95
|
-
diaIDs: spectra.x.diaIDs,
|
|
96
91
|
nuclei: getNuclei({ from, to }),
|
|
97
92
|
joinedSignals,
|
|
98
93
|
signals: splitSignals(joinedSignals),
|
|
99
94
|
zones,
|
|
100
|
-
molecule,
|
|
101
95
|
};
|
|
102
96
|
}
|
|
97
|
+
function getPossibleCorrelations(options) {
|
|
98
|
+
const { fromLabel, toLabel, distanceMatrix, molecule, diaIDs, minLength, maxLength, } = options;
|
|
99
|
+
const fromAtomicNumber = Molecule.getAtomicNoFromLabel(fromLabel);
|
|
100
|
+
const toAtomicNumber = Molecule.getAtomicNoFromLabel(toLabel);
|
|
101
|
+
const atomPathInfo = [];
|
|
102
|
+
for (let from = 0; from < molecule.getAllAtoms(); from++) {
|
|
103
|
+
const toSave = {
|
|
104
|
+
oclID: diaIDs[from],
|
|
105
|
+
paths: [],
|
|
106
|
+
};
|
|
107
|
+
for (let to = 0; to < molecule.getAllAtoms(); to++) {
|
|
108
|
+
if (from === to)
|
|
109
|
+
continue;
|
|
110
|
+
if (molecule.getAtomicNo(to) !== toAtomicNumber)
|
|
111
|
+
continue;
|
|
112
|
+
if (molecule.getAtomicNo(from) !== fromAtomicNumber)
|
|
113
|
+
continue;
|
|
114
|
+
const pathLength = distanceMatrix[from][to];
|
|
115
|
+
if (pathLength >= minLength && pathLength <= maxLength) {
|
|
116
|
+
toSave.paths.push({
|
|
117
|
+
from,
|
|
118
|
+
to,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
atomPathInfo.push(toSave);
|
|
123
|
+
}
|
|
124
|
+
return atomPathInfo;
|
|
125
|
+
}
|
|
103
126
|
function splitSignals(joinedSignals) {
|
|
104
127
|
const signals = [];
|
|
105
128
|
for (const signal of joinedSignals) {
|
|
@@ -114,7 +137,7 @@ function splitSignals(joinedSignals) {
|
|
|
114
137
|
}
|
|
115
138
|
return setIDs(signals);
|
|
116
139
|
}
|
|
117
|
-
function
|
|
140
|
+
function addSelfCorrelation(group, options) {
|
|
118
141
|
const { paths = [], signalsByDiaID } = options;
|
|
119
142
|
for (const atom of paths) {
|
|
120
143
|
if (atom.paths.length < 1)
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryByHOSE.js","sourceRoot":"","sources":["../../../src/prediction/utils/queryByHOSE.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,WAAW,CACzB,
|
|
1
|
+
{"version":3,"file":"queryByHOSE.js","sourceRoot":"","sources":["../../../src/prediction/utils/queryByHOSE.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,WAAW,CACzB,MAAW,EACX,EAAqB,EACrB,OAAkC;IAElC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAElC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE;QAC5B,IAAI,GAAG,CAAC;QACR,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;gBACT,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,KAAK,GAAG,CAAC,CAAC;aACX;SACF;QAED,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE;YACtC,MAAM,IAAI,GAAG;gBACX,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;gBACvB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1B,KAAK,EAAE,CAAC,UAAU,CAAC;gBACnB,OAAO,EAAE,CAAC;gBACV,KAAK;gBACL,SAAS,EACP,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;oBACnB,CAAC,CAAC;wBACE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;wBACZ,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;wBACV,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;wBACX,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;wBACX,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;qBACX;oBACH,CAAC,CAAC,SAAS;aAChB,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrB;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function shouldPredict(key, options) {
|
|
2
|
+
if (key in options)
|
|
3
|
+
return true;
|
|
4
|
+
const heteroRequired = 'hsqc' in options || 'hmbc' in options;
|
|
5
|
+
return key === 'C'
|
|
6
|
+
? heteroRequired
|
|
7
|
+
: key === 'H'
|
|
8
|
+
? heteroRequired || 'cosy' in options
|
|
9
|
+
: false;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=shouldPredict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shouldPredict.js","sourceRoot":"","sources":["../../../src/prediction/utils/shouldPredict.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,GAAwC,EACxC,OAAsC;IAEtC,IAAI,GAAG,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,cAAc,GAAG,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,CAAC;IAC9D,OAAO,GAAG,KAAK,GAAG;QAChB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,GAAG,KAAK,GAAG;YACb,CAAC,CAAC,cAAc,IAAI,MAAM,IAAI,OAAO;YACrC,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nmr-processing",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"description": "Pure functions allowing to process NMR spectra.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -58,7 +58,6 @@
|
|
|
58
58
|
"@lukeed/uuid": "^2.0.1",
|
|
59
59
|
"@types/lodash": "^4.14.196",
|
|
60
60
|
"binary-search": "^1.3.6",
|
|
61
|
-
"brukerconverter": "^6.1.4",
|
|
62
61
|
"cross-fetch": "^4.0.0",
|
|
63
62
|
"form-data": "^4.0.0",
|
|
64
63
|
"gyromagnetic-ratio": "^1.0.0",
|
|
@@ -82,7 +81,7 @@
|
|
|
82
81
|
"ml-tree-set": "^0.1.1",
|
|
83
82
|
"nmr-correlation": "^2.3.3",
|
|
84
83
|
"nmredata": "^0.9.2",
|
|
85
|
-
"openchemlib-utils": "^4.
|
|
84
|
+
"openchemlib-utils": "^4.2.1",
|
|
86
85
|
"spectrum-generator": "^8.0.8"
|
|
87
86
|
}
|
|
88
87
|
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
2
|
import { Molecule } from 'openchemlib/full';
|
|
3
|
-
import { ensureHeterotopicChiralBonds } from 'openchemlib-utils';
|
|
4
3
|
|
|
5
|
-
import { NMRRange, NMRRangeWithIntegration } from '..';
|
|
6
|
-
import {
|
|
7
|
-
predictCarbon,
|
|
8
|
-
PredictCarbonOptions,
|
|
9
|
-
} from '../prediction/predictCarbon';
|
|
4
|
+
import { NMRRange, NMRRangeWithIntegration, predict } from '..';
|
|
5
|
+
import { PredictCarbonOptions } from '../prediction/predictCarbon';
|
|
10
6
|
import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
11
7
|
|
|
12
8
|
import type {
|
|
@@ -81,8 +77,13 @@ export async function get13CAssignments(
|
|
|
81
77
|
throw new Error('It is needed a OCL molecule instance to assign');
|
|
82
78
|
}
|
|
83
79
|
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
const { spectra } = await predict(molecule, {
|
|
81
|
+
predictOptions: {
|
|
82
|
+
C: predictionOptions,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
const joinedSignals = spectra.carbon?.joinedSignals || [];
|
|
86
87
|
|
|
87
88
|
checkAtomsAndDiaIDs(joinedSignals);
|
|
88
89
|
const copyRanges = checkIntegration(ranges);
|