nmr-processing 9.1.0 → 9.2.0-pre.1668170175
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/utils/getAssignment/buildAssignments.js.map +1 -1
- package/lib/index.d.ts +4 -2
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/prediction/{prediction1D.d.ts → Prediction1D.d.ts} +0 -0
- package/lib/prediction/{prediction1D.js → Prediction1D.js} +1 -1
- package/lib/prediction/Prediction1D.js.map +1 -0
- package/lib/prediction/predictAll.d.ts +1 -1
- package/lib/prediction/predictAll.js.map +1 -1
- package/lib/prediction/predictAllSpectra.js +2 -2
- package/lib/prediction/predictAllSpectra.js.map +1 -1
- package/lib/prediction/predictCOSY.d.ts +1 -1
- package/lib/prediction/predictCOSY.js.map +1 -1
- package/lib/prediction/predictCarbon.d.ts +1 -1
- package/lib/prediction/predictHMBC.d.ts +1 -1
- package/lib/prediction/predictHMBC.js.map +1 -1
- package/lib/prediction/predictHSQC.d.ts +1 -1
- package/lib/prediction/predictHSQC.js.map +1 -1
- package/lib/prediction/predictProton.d.ts +1 -1
- package/lib/prediction/utils/fetchPrediction.d.ts +1 -1
- package/lib/prediction/utils/getPredictions.d.ts +1 -1
- package/lib/prediction/utils/predict2D.d.ts +1 -1
- package/lib/prediction/utils/predict2D.js +1 -1
- package/lib/prediction/utils/predict2D.js.map +1 -1
- package/lib/signals/{jcoupling.d.ts → Jcoupling.d.ts} +0 -0
- package/lib/signals/{jcoupling.js → Jcoupling.js} +1 -1
- package/lib/signals/Jcoupling.js.map +1 -0
- package/lib/signals/NMRSignal1D.d.ts +1 -1
- package/lib/signals/addDummySignals.js +12 -7
- package/lib/signals/addDummySignals.js.map +1 -1
- package/lib/signals/optimization/defaultParameters.d.ts +1 -0
- package/lib/signals/optimization/defaultParameters.js +36 -0
- package/lib/signals/optimization/defaultParameters.js.map +1 -0
- package/lib/signals/optimization/directOptimization.d.ts +20 -0
- package/lib/signals/optimization/directOptimization.js +32 -0
- package/lib/signals/optimization/directOptimization.js.map +1 -0
- package/lib/signals/optimization/getInternalSignals.d.ts +54 -0
- package/lib/signals/optimization/getInternalSignals.js +150 -0
- package/lib/signals/optimization/getInternalSignals.js.map +1 -0
- package/lib/signals/optimization/getSumOfShapes.d.ts +4 -0
- package/lib/signals/optimization/getSumOfShapes.js +46 -0
- package/lib/signals/optimization/getSumOfShapes.js.map +1 -0
- package/lib/signals/optimization/signalsToPointXY.d.ts +9 -0
- package/lib/signals/optimization/signalsToPointXY.js +24 -0
- package/lib/signals/optimization/signalsToPointXY.js.map +1 -0
- package/lib/signals/optimizeSignals.d.ts +40 -0
- package/lib/signals/optimizeSignals.js +108 -0
- package/lib/signals/optimizeSignals.js.map +1 -0
- package/lib/signals/signalsJoin.d.ts +1 -1
- package/lib/signals/signalsToFID.d.ts +13 -0
- package/lib/signals/signalsToFID.js +56 -0
- package/lib/signals/signalsToFID.js.map +1 -0
- package/lib/signals/simulation/simulateXYPeaks.js +1 -1
- package/lib/signals/simulation/simulateXYPeaks.js.map +1 -1
- package/lib/xy/xyAutoPeaksPicking.d.ts +2 -2
- package/lib/xy/xyAutoPeaksPicking.js +2 -2
- package/lib/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib/xy/xyPeaksOptimization.js +2 -1
- package/lib/xy/xyPeaksOptimization.js.map +1 -1
- package/lib-esm/assignment/utils/getAssignment/buildAssignments.js.map +1 -1
- package/lib-esm/index.js +2 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/prediction/Prediction1D.js +2 -0
- package/lib-esm/prediction/Prediction1D.js.map +1 -0
- package/lib-esm/prediction/predictAll.js.map +1 -1
- package/lib-esm/prediction/predictAllSpectra.js +2 -2
- package/lib-esm/prediction/predictAllSpectra.js.map +1 -1
- package/lib-esm/prediction/predictCOSY.js.map +1 -1
- package/lib-esm/prediction/predictHMBC.js.map +1 -1
- package/lib-esm/prediction/predictHSQC.js.map +1 -1
- package/lib-esm/prediction/utils/predict2D.js +1 -1
- package/lib-esm/prediction/utils/predict2D.js.map +1 -1
- package/lib-esm/signals/Jcoupling.js +2 -0
- package/lib-esm/signals/Jcoupling.js.map +1 -0
- package/lib-esm/signals/addDummySignals.js +12 -7
- package/lib-esm/signals/addDummySignals.js.map +1 -1
- package/lib-esm/signals/optimization/defaultParameters.js +33 -0
- package/lib-esm/signals/optimization/defaultParameters.js.map +1 -0
- package/lib-esm/signals/optimization/directOptimization.js +25 -0
- package/lib-esm/signals/optimization/directOptimization.js.map +1 -0
- package/lib-esm/signals/optimization/getInternalSignals.js +146 -0
- package/lib-esm/signals/optimization/getInternalSignals.js.map +1 -0
- package/lib-esm/signals/optimization/getSumOfShapes.js +42 -0
- package/lib-esm/signals/optimization/getSumOfShapes.js.map +1 -0
- package/lib-esm/signals/optimization/signalsToPointXY.js +20 -0
- package/lib-esm/signals/optimization/signalsToPointXY.js.map +1 -0
- package/lib-esm/signals/optimizeSignals.js +104 -0
- package/lib-esm/signals/optimizeSignals.js.map +1 -0
- package/lib-esm/signals/signalsToFID.js +52 -0
- package/lib-esm/signals/signalsToFID.js.map +1 -0
- package/lib-esm/signals/simulation/simulateXYPeaks.js +1 -1
- package/lib-esm/signals/simulation/simulateXYPeaks.js.map +1 -1
- package/lib-esm/xy/xyAutoPeaksPicking.js +3 -3
- package/lib-esm/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib-esm/xy/xyPeaksOptimization.js +2 -1
- package/lib-esm/xy/xyPeaksOptimization.js.map +1 -1
- package/package.json +3 -2
- package/src/assignment/utils/getAssignment/buildAssignments.ts +1 -1
- package/src/index.ts +4 -2
- package/src/prediction/{prediction1D.ts → Prediction1D.ts} +0 -0
- package/src/prediction/predictAll.ts +1 -1
- package/src/prediction/predictAllSpectra.ts +2 -2
- package/src/prediction/predictCOSY.ts +1 -1
- package/src/prediction/predictCarbon.ts +1 -1
- package/src/prediction/predictHMBC.ts +1 -1
- package/src/prediction/predictHSQC.ts +1 -1
- package/src/prediction/predictProton.ts +1 -1
- package/src/prediction/utils/fetchPrediction.ts +1 -1
- package/src/prediction/utils/getPredictions.ts +1 -1
- package/src/prediction/utils/predict2D.ts +2 -2
- package/src/signal/signalJoinCouplings.ts +1 -1
- package/src/signals/{jcoupling.ts → Jcoupling.ts} +0 -0
- package/src/signals/NMRSignal1D.ts +1 -1
- package/src/signals/addDummySignals.ts +17 -7
- package/src/signals/optimization/defaultParameters.ts +45 -0
- package/src/signals/optimization/directOptimization.ts +49 -0
- package/src/signals/optimization/getInternalSignals.ts +287 -0
- package/src/signals/optimization/getSumOfShapes.ts +54 -0
- package/src/signals/optimization/signalsToPointXY.ts +37 -0
- package/src/signals/optimizeSignals.ts +173 -0
- package/src/signals/signalsJoin.ts +1 -1
- package/src/signals/signalsToFID.ts +84 -0
- package/src/signals/signalsToXY.ts +1 -1
- package/src/signals/simulation/signalsToSpinSystem.ts +1 -1
- package/src/signals/simulation/simulateXYPeaks.ts +1 -2
- package/src/xy/xyAutoPeaksPicking.ts +10 -6
- package/src/xy/xyPeaksOptimization.ts +3 -1
- package/lib/prediction/prediction1D.js.map +0 -1
- package/lib/signals/jcoupling.js.map +0 -1
- package/lib-esm/prediction/prediction1D.js +0 -2
- package/lib-esm/prediction/prediction1D.js.map +0 -1
- package/lib-esm/signals/jcoupling.js +0 -2
- package/lib-esm/signals/jcoupling.js.map +0 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { v4 } from '@lukeed/uuid';
|
|
2
|
+
import { levenbergMarquardt } from 'ml-levenberg-marquardt';
|
|
3
|
+
import { getShape1D } from 'ml-peak-shape-generator';
|
|
4
|
+
import { xMinMaxValues } from 'ml-spectra-processing';
|
|
5
|
+
import { directOptimization } from './optimization/directOptimization';
|
|
6
|
+
import { getInternalSignals, } from './optimization/getInternalSignals';
|
|
7
|
+
import { getSumOfShapes } from './optimization/getSumOfShapes';
|
|
8
|
+
import { signalsToPointXY, } from './optimization/signalsToPointXY';
|
|
9
|
+
const defaultLMOptimizationOptions = {
|
|
10
|
+
damping: 1.5,
|
|
11
|
+
maxIterations: 100,
|
|
12
|
+
errorTolerance: 1e-8,
|
|
13
|
+
};
|
|
14
|
+
const defaultDirectOptimizationOptions = {
|
|
15
|
+
iterations: 25,
|
|
16
|
+
};
|
|
17
|
+
export function optimizeSignals(data, signals, options) {
|
|
18
|
+
const { optimization = {}, simulation: simulationOptions, ...restOptions } = options;
|
|
19
|
+
let temp = xMinMaxValues(data.y);
|
|
20
|
+
const minMaxY = { ...temp, range: temp.max - temp.min };
|
|
21
|
+
const internalSignals = getInternalSignals(data, signals, minMaxY, {
|
|
22
|
+
frequency: simulationOptions.frequency,
|
|
23
|
+
...restOptions,
|
|
24
|
+
});
|
|
25
|
+
const { baseline: shiftValue = minMaxY.min } = options;
|
|
26
|
+
let normalizedY = new Float64Array(data.y.length);
|
|
27
|
+
for (let i = 0; i < data.y.length; i++) {
|
|
28
|
+
normalizedY[i] = (data.y[i] - shiftValue) / minMaxY.range;
|
|
29
|
+
}
|
|
30
|
+
const nbParams = internalSignals[internalSignals.length - 1].toIndexCoupling + 1;
|
|
31
|
+
const minValues = new Float64Array(nbParams);
|
|
32
|
+
const maxValues = new Float64Array(nbParams);
|
|
33
|
+
const initialValues = new Float64Array(nbParams);
|
|
34
|
+
const gradientDifferences = new Float64Array(nbParams);
|
|
35
|
+
let index = 0;
|
|
36
|
+
for (const internalSignal of internalSignals) {
|
|
37
|
+
for (let i = 0; i < internalSignal.parameters.length; i++) {
|
|
38
|
+
minValues[index] = internalSignal.propertiesValues.min[i];
|
|
39
|
+
maxValues[index] = internalSignal.propertiesValues.max[i];
|
|
40
|
+
initialValues[index] = internalSignal.propertiesValues.init[i];
|
|
41
|
+
gradientDifferences[index++] =
|
|
42
|
+
internalSignal.propertiesValues.gradientDifference[i];
|
|
43
|
+
}
|
|
44
|
+
for (let i = internalSignal.parameters.length; i < internalSignal.parameters.length + internalSignal.signal.js.length; i++) {
|
|
45
|
+
minValues[index] = internalSignal.propertiesValues.min[i];
|
|
46
|
+
maxValues[index] = internalSignal.propertiesValues.max[i];
|
|
47
|
+
initialValues[index] = internalSignal.propertiesValues.init[i];
|
|
48
|
+
gradientDifferences[index++] =
|
|
49
|
+
internalSignal.propertiesValues.gradientDifference[i];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const sumOfShapes = getSumOfShapes(internalSignals, simulationOptions);
|
|
53
|
+
const { kind, options: optimizationOptions } = optimization;
|
|
54
|
+
const [algorithm, defaultOptimizationOptions] = kind === 'direct'
|
|
55
|
+
? [directOptimization, defaultDirectOptimizationOptions]
|
|
56
|
+
: [levenbergMarquardt, defaultLMOptimizationOptions];
|
|
57
|
+
let fitted = algorithm({ x: data.x, y: normalizedY }, sumOfShapes, {
|
|
58
|
+
minValues,
|
|
59
|
+
maxValues,
|
|
60
|
+
initialValues,
|
|
61
|
+
gradientDifference: gradientDifferences,
|
|
62
|
+
...defaultOptimizationOptions,
|
|
63
|
+
...optimizationOptions,
|
|
64
|
+
});
|
|
65
|
+
const fittedValues = fitted.parameterValues;
|
|
66
|
+
const newSignals = [];
|
|
67
|
+
for (const internalSignal of internalSignals) {
|
|
68
|
+
const { fromIndexCoupling } = internalSignal;
|
|
69
|
+
const js = internalSignal.signal.js.map((jCoupling, i) => {
|
|
70
|
+
jCoupling.coupling = fittedValues[fromIndexCoupling + i];
|
|
71
|
+
return jCoupling;
|
|
72
|
+
});
|
|
73
|
+
const delta = fittedValues[internalSignal.fromIndex];
|
|
74
|
+
const pointXYs = signalsToPointXY([{ delta, js }], simulationOptions);
|
|
75
|
+
const intensity = fittedValues[internalSignal.fromIndex + 1] * minMaxY.range + shiftValue;
|
|
76
|
+
const newPeaks = [];
|
|
77
|
+
for (const { x, y } of pointXYs) {
|
|
78
|
+
const peak = {
|
|
79
|
+
id: v4(),
|
|
80
|
+
x,
|
|
81
|
+
y: intensity * y,
|
|
82
|
+
width: 0,
|
|
83
|
+
shape: { ...internalSignal.shape },
|
|
84
|
+
};
|
|
85
|
+
for (let i = 2; i < internalSignal.parameters.length; i++) {
|
|
86
|
+
//@ts-expect-error should be fixed once
|
|
87
|
+
peak.shape[internalSignal.parameters[i]] =
|
|
88
|
+
fittedValues[internalSignal.fromIndex + i];
|
|
89
|
+
}
|
|
90
|
+
peak.shape.fwhm *= simulationOptions.frequency;
|
|
91
|
+
peak.width = getShape1D(peak.shape).fwhmToWidth(peak.shape.fwhm);
|
|
92
|
+
newPeaks.push(peak);
|
|
93
|
+
}
|
|
94
|
+
newSignals.push({
|
|
95
|
+
delta,
|
|
96
|
+
js,
|
|
97
|
+
shape: { ...newPeaks[0].shape },
|
|
98
|
+
intensity,
|
|
99
|
+
peaks: newPeaks,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return newSignals;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=optimizeSignals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimizeSignals.js","sourceRoot":"","sources":["../../src/signals/optimizeSignals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { xSequentialFill } from 'ml-spectra-processing';
|
|
2
|
+
import { apodization } from '../apodization/apodization';
|
|
3
|
+
import { signalsToSpinSystem } from './simulation/signalsToSpinSystem';
|
|
4
|
+
import { simulateXYPeaks } from './simulation/simulateXYPeaks';
|
|
5
|
+
import { splitSpinSystem } from './simulation/splitSpinSystem';
|
|
6
|
+
const twoPi = Math.PI * 2;
|
|
7
|
+
export function signalsToFID(signals, options) {
|
|
8
|
+
const { lb = 1, from = 0, to = 10, nbPoints = 1024, frequency = 400, maxClusterSize = 8, } = options;
|
|
9
|
+
let spinSystem = signalsToSpinSystem(signals);
|
|
10
|
+
spinSystem.clusters = splitSpinSystem(spinSystem, {
|
|
11
|
+
frequency,
|
|
12
|
+
maxClusterSize,
|
|
13
|
+
});
|
|
14
|
+
const peaks = simulateXYPeaks(spinSystem, { frequency });
|
|
15
|
+
const re = new Float64Array(nbPoints);
|
|
16
|
+
const im = new Float64Array(nbPoints);
|
|
17
|
+
const sw = Math.abs(to - from);
|
|
18
|
+
const adquisitionTime = nbPoints / (2 * sw * frequency);
|
|
19
|
+
const time = xSequentialFill({
|
|
20
|
+
size: nbPoints,
|
|
21
|
+
from: 0,
|
|
22
|
+
to: adquisitionTime,
|
|
23
|
+
});
|
|
24
|
+
for (const peak of peaks) {
|
|
25
|
+
const { x, y } = peak;
|
|
26
|
+
const cs = x * frequency * twoPi;
|
|
27
|
+
for (let i = 0; i < nbPoints; i++) {
|
|
28
|
+
re[i] += y * Math.cos(cs * time[i]);
|
|
29
|
+
im[i] += y * Math.sin(cs * time[i]);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const { windowData, ...result } = apodization({ re, im }, {
|
|
33
|
+
pointsToShift: 0,
|
|
34
|
+
compose: {
|
|
35
|
+
length: nbPoints,
|
|
36
|
+
shapes: [
|
|
37
|
+
{
|
|
38
|
+
start: 0,
|
|
39
|
+
shape: {
|
|
40
|
+
kind: 'exponential',
|
|
41
|
+
options: {
|
|
42
|
+
dw: adquisitionTime / (nbPoints - 1),
|
|
43
|
+
lb,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=signalsToFID.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalsToFID.js","sourceRoot":"","sources":["../../src/signals/signalsToFID.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAW/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAE1B,MAAM,UAAU,YAAY,CAC1B,OAAsB,EACtB,OAA4B;IAE5B,MAAM,EACJ,EAAE,GAAG,CAAC,EACN,IAAI,GAAG,CAAC,EACR,EAAE,GAAG,EAAE,EACP,QAAQ,GAAG,IAAI,EACf,SAAS,GAAG,GAAG,EACf,cAAc,GAAG,CAAC,GACnB,GAAG,OAAO,CAAC;IAEZ,IAAI,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,UAAU,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE;QAChD,SAAS;QACT,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/B,MAAM,eAAe,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAC;QACP,EAAE,EAAE,eAAe;KACpB,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YACjC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrC;KACF;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,CAC3C,EAAE,EAAE,EAAE,EAAE,EAAE,EACV;QACE,aAAa,EAAE,CAAC;QAChB,OAAO,EAAE;YACP,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE;gBACN;oBACE,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE;wBACL,IAAI,EAAE,aAAa;wBACnB,OAAO,EAAE;4BACP,EAAE,EAAE,eAAe,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;4BACpC,EAAE;yBACH;qBACF;iBACF;aACF;SACF;KACF,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulateXYPeaks.js","sourceRoot":"","sources":["../../../src/signals/simulation/simulateXYPeaks.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"simulateXYPeaks.js","sourceRoot":"","sources":["../../../src/signals/simulation/simulateXYPeaks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { gsd, optimizePeaks, joinBroadPeaks, } from 'ml-gsd';
|
|
1
|
+
import { gsd, optimizePeaks, joinBroadPeaks, setShape, } from 'ml-gsd';
|
|
2
2
|
import { xyExtract, xNoiseSanPlot, xAbsoluteMedian, } from 'ml-spectra-processing';
|
|
3
3
|
import { convertWidthToHz } from '../peaks/util/convertWidthToHz';
|
|
4
4
|
export function xyAutoPeaksPicking(data, options) {
|
|
@@ -52,8 +52,7 @@ function getNegativePeaks(data, cutOff, getPeakOptions) {
|
|
|
52
52
|
}
|
|
53
53
|
function getPeakList(data, options) {
|
|
54
54
|
const { shape, frequency, broadWidth, optimize, maxCriteria, factorLimits, sgOptions, minMaxRatio, broadRatio, noiseLevel, smoothY, optimization, realTopDetection, } = options;
|
|
55
|
-
|
|
56
|
-
shape,
|
|
55
|
+
const peaks = gsd(data, {
|
|
57
56
|
sgOptions,
|
|
58
57
|
maxCriteria,
|
|
59
58
|
minMaxRatio,
|
|
@@ -61,6 +60,7 @@ function getPeakList(data, options) {
|
|
|
61
60
|
smoothY,
|
|
62
61
|
realTopDetection,
|
|
63
62
|
});
|
|
63
|
+
const peakList = setShape(peaks, { output: peaks, shape });
|
|
64
64
|
const newPeaks = broadWidth
|
|
65
65
|
? joinBroadPeaks(peakList, {
|
|
66
66
|
broadRatio,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xyAutoPeaksPicking.js","sourceRoot":"","sources":["../../src/xy/xyAutoPeaksPicking.ts"],"names":[],"mappings":"AACA,OAAO,EACL,GAAG,EACH,aAAa,EACb,cAAc,
|
|
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;IAErD,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU;QAAE,OAAO,EAAE,CAAC;IAE1C,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE;QAC1C,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACnD;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;IAE9E,IAAI,cAAc,GAAuB;QACvC,KAAK;QACL,SAAS;QACT,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;QACrC,WAAW;QACX,UAAU;QACV,UAAU,EAAE,MAAM,CAAC,QAAQ;QAC3B,OAAO;QACP,YAAY;QACZ,gBAAgB;KACjB,CAAC;IAEF,QAAQ,SAAS,EAAE;QACjB,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;SAC1C;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;SACvD;QACD,KAAK,MAAM,CAAC,CAAC;YACX,OAAO;gBACL,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC;gBACpC,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC;aAClD,CAAC;SACH;QACD,OAAO,CAAC,CAAC;YACP,MAAM,SAAS,GAAU,SAAS,CAAC;YACnC,4EAA4E;YAC5E,MAAM,KAAK,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC;SAClD;KACF;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAY,EACZ,MAA4B,EAC5B,cAAkC;IAElC,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5C,cAAc,CAAC,WAAW,GAAG,KAAK,CAAC;IACnC,OAAO,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,OAA2B;IAC5D,MAAM,EACJ,KAAK,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,OAAO,EACP,YAAY,EACZ,gBAAgB,GACjB,GAAG,OAAO,CAAC;IAEZ,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE;QACtB,SAAS;QACT,WAAW;QACX,WAAW;QACX,UAAU;QACV,OAAO;QACP,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,UAAU;QACzB,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE;YACvB,UAAU;YACV,UAAU;YACV,KAAK;YACL,YAAY;SACb,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC9B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAEvC,OAAO,gBAAgB,CACrB,QAAQ;QACN,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE;YAC5B,KAAK;YACL,YAAY;YACZ,YAAY;SACb,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC9B,CAAC,CAAC,QAAQ,EACZ,EAAE,SAAS,EAAE,CACd,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAA6B,EAAE,OAAyB;IACzE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAE5D,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,EAAE,CAC1C,OAAO,UAAU,KAAK,QAAQ;QAC5B,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE;QACjD,CAAC,CAAC,UAAU,CAAC;IAEjB,IAAI,UAAU,EAAE;QACd,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;KACjC;SAAM;QACL,OAAO,UAAU;YACf,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;YACrD,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;KAC3D;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAyC;IAEzC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO;QACL,EAAE;QACF,CAAC;QACD,CAAC;QACD,KAAK;QACL,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -5,9 +5,10 @@ export function xyPeaksOptimization(data, peaks, options) {
|
|
|
5
5
|
const { frequency } = options;
|
|
6
6
|
const newPeaks = convertWidthToPPM(peaks, { frequency });
|
|
7
7
|
const optimizedPeaks = optimizePeaks(data, newPeaks, options);
|
|
8
|
-
|
|
8
|
+
const result = convertWidthToHz(optimizedPeaks, {
|
|
9
9
|
frequency,
|
|
10
10
|
output: optimizedPeaks,
|
|
11
11
|
});
|
|
12
|
+
return result;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=xyPeaksOptimization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xyPeaksOptimization.js","sourceRoot":"","sources":["../../src/xy/xyPeaksOptimization.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAwB,MAAM,QAAQ,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"xyPeaksOptimization.js","sourceRoot":"","sources":["../../src/xy/xyPeaksOptimization.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAwB,MAAM,QAAQ,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AASpE,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,KAAU,EACV,OAAmC;IAEnC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,EAAE;QAC9C,SAAS;QACT,MAAM,EAAE,cAAc;KACvB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nmr-processing",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.0-pre.1668170175",
|
|
4
4
|
"description": "Pure functions allowing to process NMR spectra.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"module": "./lib-esm/index.js",
|
|
@@ -64,7 +64,8 @@
|
|
|
64
64
|
"ml-array-mean": "^1.1.6",
|
|
65
65
|
"ml-array-rescale": "^1.3.7",
|
|
66
66
|
"ml-array-sum": "^1.1.6",
|
|
67
|
-
"ml-
|
|
67
|
+
"ml-direct": "^0.1.1",
|
|
68
|
+
"ml-gsd": "^12.1.2",
|
|
68
69
|
"ml-hclust": "^3.1.0",
|
|
69
70
|
"ml-levenberg-marquardt": "^4.1.0",
|
|
70
71
|
"ml-matrix": "^6.10.2",
|
|
@@ -337,7 +337,7 @@ function initializePartials(
|
|
|
337
337
|
}
|
|
338
338
|
|
|
339
339
|
function fillPartial(nSources: number, value: string | null = null) {
|
|
340
|
-
const partial
|
|
340
|
+
const partial = new Array<string | null>(nSources);
|
|
341
341
|
for (let i = 0; i < nSources; i++) {
|
|
342
342
|
partial[i] = value;
|
|
343
343
|
}
|
package/src/index.ts
CHANGED
|
@@ -24,6 +24,8 @@ export * from './ranges/rangesToXY';
|
|
|
24
24
|
export * from './signals/signalsToRanges';
|
|
25
25
|
export * from './signals/signalsToXY';
|
|
26
26
|
export * from './signals/signals2DToZ';
|
|
27
|
+
export * from './signals/optimizeSignals';
|
|
28
|
+
export * from './signals/signalsToFID';
|
|
27
29
|
|
|
28
30
|
export * from './utilities/resurrect';
|
|
29
31
|
export * from './utilities/rangeFromSignal';
|
|
@@ -50,8 +52,8 @@ export type { NMRSignal2D, Signal2DProjection } from './xyz/NMRSignal2D';
|
|
|
50
52
|
export type { NMRRange } from './xy/NMRRange';
|
|
51
53
|
export type { NMRZone } from './xyz/NMRZone';
|
|
52
54
|
export type { NMRPeak1D } from './peaks/NMRPeak1D';
|
|
53
|
-
export type { Prediction1D } from './prediction/
|
|
54
|
-
export type { Jcoupling } from './signals/
|
|
55
|
+
export type { Prediction1D } from './prediction/Prediction1D';
|
|
56
|
+
export type { Jcoupling } from './signals/Jcoupling';
|
|
55
57
|
export type { DatabaseNMREntry } from './databases/DatabaseNMREntry';
|
|
56
58
|
export type {
|
|
57
59
|
DataBaseLevelStructure,
|
|
File without changes
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Molecule } from 'openchemlib';
|
|
2
2
|
|
|
3
|
+
import type { Prediction1D } from './Prediction1D';
|
|
3
4
|
import { predictCOSY } from './predictCOSY';
|
|
4
5
|
import { predictCarbon, PredictCarbonOptions } from './predictCarbon';
|
|
5
6
|
import { predictHMBC } from './predictHMBC';
|
|
6
7
|
import { predictHSQC } from './predictHSQC';
|
|
7
8
|
import { predictProton, PredictProtonOptions } from './predictProton';
|
|
8
|
-
import type { Prediction1D } from './prediction1D';
|
|
9
9
|
import { getPredictions } from './utils/getPredictions';
|
|
10
10
|
import type { Predictor } from './utils/predict2D';
|
|
11
11
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Molecule } from 'openchemlib';
|
|
2
2
|
|
|
3
|
+
import type { Prediction1D } from './Prediction1D';
|
|
3
4
|
import { predictProton, PredictProtonOptions } from './predictProton';
|
|
4
|
-
import type { Prediction1D } from './prediction1D';
|
|
5
5
|
import { predict2D, Predictor } from './utils/predict2D';
|
|
6
6
|
|
|
7
7
|
export interface PredictCOSYOptions {
|
|
@@ -7,8 +7,8 @@ import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
|
7
7
|
import { signalsToRanges } from '../signals/signalsToRanges';
|
|
8
8
|
import type { MakeMandatory } from '../utilities/MakeMandatory';
|
|
9
9
|
|
|
10
|
+
import type { Prediction1D } from './Prediction1D';
|
|
10
11
|
import type { DataBaseStructure } from './dataStructure';
|
|
11
|
-
import type { Prediction1D } from './prediction1D';
|
|
12
12
|
import { fetchPrediction } from './utils/fetchPrediction';
|
|
13
13
|
import { flatGroupedDiaIDs } from './utils/flatGroupedDiaIDs';
|
|
14
14
|
import { getFilteredIDiaIDs } from './utils/getFilteredIDiaIDs';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Molecule } from 'openchemlib';
|
|
2
2
|
|
|
3
|
+
import type { Prediction1D } from './Prediction1D';
|
|
3
4
|
import { predictCarbon } from './predictCarbon';
|
|
4
5
|
import type { PredictCarbonOptions } from './predictCarbon';
|
|
5
6
|
import { predictProton } from './predictProton';
|
|
6
7
|
import type { PredictProtonOptions } from './predictProton';
|
|
7
|
-
import type { Prediction1D } from './prediction1D';
|
|
8
8
|
import { predict2D } from './utils/predict2D';
|
|
9
9
|
import type { Predictor } from './utils/predict2D';
|
|
10
10
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Molecule } from 'openchemlib';
|
|
2
2
|
|
|
3
|
+
import type { Prediction1D } from './Prediction1D';
|
|
3
4
|
import { predictCarbon, PredictCarbonOptions } from './predictCarbon';
|
|
4
5
|
import { predictProton, PredictProtonOptions } from './predictProton';
|
|
5
|
-
import type { Prediction1D } from './prediction1D';
|
|
6
6
|
import { predict2D, Predictor } from './utils/predict2D';
|
|
7
7
|
|
|
8
8
|
export interface PredictHSQCOptions {
|
|
@@ -12,7 +12,7 @@ import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
|
12
12
|
import { signalsJoin } from '../signals/signalsJoin';
|
|
13
13
|
import { signalsToRanges } from '../signals/signalsToRanges';
|
|
14
14
|
|
|
15
|
-
import type { Prediction1D } from './
|
|
15
|
+
import type { Prediction1D } from './Prediction1D';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Makes a prediction using proton.
|
|
@@ -12,16 +12,16 @@ import type {
|
|
|
12
12
|
PathInfo,
|
|
13
13
|
} from 'openchemlib-utils';
|
|
14
14
|
|
|
15
|
+
import { setIDs } from '../../peaks/util/setIDs';
|
|
15
16
|
import type { NMRSignal1D } from '../../signals/NMRSignal1D';
|
|
16
17
|
import type { MakeMandatory } from '../../utilities/MakeMandatory';
|
|
17
18
|
import type { NMRSignal2D } from '../../xyz/NMRSignal2D';
|
|
19
|
+
import type { Prediction1D } from '../Prediction1D';
|
|
18
20
|
import type { PredictCarbon, PredictCarbonOptions } from '../predictCarbon';
|
|
19
21
|
import type { PredictProton, PredictProtonOptions } from '../predictProton';
|
|
20
|
-
import type { Prediction1D } from '../prediction1D';
|
|
21
22
|
|
|
22
23
|
import { getNuclei } from './getNuclei';
|
|
23
24
|
import { getPredictions } from './getPredictions';
|
|
24
|
-
import { setIDs } from '../../peaks/util/setIDs';
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Generate the correlation bidimensional nmr peaks based on the number of bonds between a pair of atoms
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import sum from 'ml-array-sum';
|
|
2
2
|
|
|
3
|
+
import type { Jcoupling } from '../signals/Jcoupling';
|
|
3
4
|
import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
4
|
-
import type { Jcoupling } from '../signals/jcoupling';
|
|
5
5
|
import type { MakeMandatory } from '../utilities/MakeMandatory';
|
|
6
6
|
import { joinPatterns } from '../utilities/joinPatterns';
|
|
7
7
|
|
|
File without changes
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
import { couplingPatterns } from '../constants/couplingPatterns';
|
|
2
2
|
|
|
3
|
+
import type { Jcoupling } from './Jcoupling';
|
|
3
4
|
import { NMRSignal1D } from './NMRSignal1D';
|
|
4
|
-
import type { Jcoupling } from './jcoupling';
|
|
5
5
|
|
|
6
6
|
export function addDummySignals(signals: NMRSignal1D[]) {
|
|
7
7
|
let newSignals: NMRSignal1D[] = JSON.parse(JSON.stringify(signals));
|
|
8
8
|
|
|
9
|
+
let nextAtomToAssign =
|
|
10
|
+
signals.reduce((nextAtomToAssign, signal) => {
|
|
11
|
+
const { atoms = [] } = signal;
|
|
12
|
+
return Math.max(...atoms) > nextAtomToAssign
|
|
13
|
+
? Math.max(...atoms)
|
|
14
|
+
: nextAtomToAssign;
|
|
15
|
+
}, 0) + 1;
|
|
9
16
|
signals.forEach((signal, s) => {
|
|
10
|
-
const {
|
|
11
|
-
|
|
17
|
+
const {
|
|
18
|
+
js: jCouplings = [],
|
|
19
|
+
atoms: signalAssignment = [nextAtomToAssign++],
|
|
20
|
+
} = signal;
|
|
12
21
|
let { newCouplings, tempSignals } = checkCouplings(
|
|
13
22
|
jCouplings,
|
|
14
23
|
newSignals,
|
|
15
24
|
signalAssignment,
|
|
25
|
+
nextAtomToAssign + signals.length,
|
|
16
26
|
);
|
|
17
27
|
|
|
18
28
|
if (tempSignals.length > 0) newSignals.push(...tempSignals);
|
|
@@ -28,8 +38,8 @@ function checkCouplings(
|
|
|
28
38
|
jCouplings: Jcoupling[],
|
|
29
39
|
signals: NMRSignal1D[],
|
|
30
40
|
signalAssignment: number[],
|
|
41
|
+
nextAtomToAssign: number,
|
|
31
42
|
) {
|
|
32
|
-
let newSignalAssignment = signals.length - 1;
|
|
33
43
|
let tempSignals: NMRSignal1D[] = [];
|
|
34
44
|
const newCouplings = jCouplings.reduce<Jcoupling[]>(
|
|
35
45
|
(newCouplings, jCoupling) => {
|
|
@@ -39,13 +49,13 @@ function checkCouplings(
|
|
|
39
49
|
let tempCouplings: Jcoupling[] = [];
|
|
40
50
|
const nbLinks = couplingPatterns.indexOf(multiplicity);
|
|
41
51
|
for (let i = 0; i < nbLinks; i++) {
|
|
42
|
-
|
|
52
|
+
nextAtomToAssign++;
|
|
43
53
|
tempCouplings.push({
|
|
44
54
|
coupling,
|
|
45
|
-
atoms: [
|
|
55
|
+
atoms: [nextAtomToAssign],
|
|
46
56
|
});
|
|
47
57
|
tempSignals.push(
|
|
48
|
-
formatSignal(coupling, [
|
|
58
|
+
formatSignal(coupling, [nextAtomToAssign], signalAssignment),
|
|
49
59
|
);
|
|
50
60
|
}
|
|
51
61
|
} else {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PseudoVoigtShape1D, Shape1D } from 'ml-peak-shape-generator';
|
|
2
|
+
|
|
3
|
+
import { Jcoupling } from '../Jcoupling';
|
|
4
|
+
import { Signal } from '../optimizeSignals';
|
|
5
|
+
|
|
6
|
+
type Shape1DWithFWHM = Omit<Shape1D, 'fwhm'> & { fwhm: number };
|
|
7
|
+
|
|
8
|
+
export const defaultParameters: Record<
|
|
9
|
+
string,
|
|
10
|
+
Record<string, (...args: any) => number>
|
|
11
|
+
> = {
|
|
12
|
+
delta: {
|
|
13
|
+
init: (data: { signal: Signal }) => data.signal.delta,
|
|
14
|
+
min: (data: { signal: Signal; shape: Shape1DWithFWHM }) =>
|
|
15
|
+
data.signal.delta - data.shape.fwhm * 2,
|
|
16
|
+
max: (data: { signal: Signal; shape: Shape1DWithFWHM }) =>
|
|
17
|
+
data.signal.delta + data.shape.fwhm * 2,
|
|
18
|
+
gradientDifference: () => 2e-3,
|
|
19
|
+
},
|
|
20
|
+
intensity: {
|
|
21
|
+
init: (data: { signal: Signal }) => data.signal.intensity || 1,
|
|
22
|
+
min: () => 0,
|
|
23
|
+
max: () => 1.5,
|
|
24
|
+
gradientDifference: () => 1e-3,
|
|
25
|
+
},
|
|
26
|
+
fwhm: {
|
|
27
|
+
init: (data: { shape: Shape1DWithFWHM }) => data.shape.fwhm,
|
|
28
|
+
min: (data: { shape: Shape1DWithFWHM }) => data.shape.fwhm * 0.25,
|
|
29
|
+
max: (data: { shape: Shape1DWithFWHM }) => data.shape.fwhm * 4,
|
|
30
|
+
gradientDifference: (data: { shape: Shape1DWithFWHM }) =>
|
|
31
|
+
data.shape.fwhm * 2e-3,
|
|
32
|
+
},
|
|
33
|
+
mu: {
|
|
34
|
+
init: (data: { shape: PseudoVoigtShape1D }) => data.shape.mu || 0.5,
|
|
35
|
+
min: () => 0,
|
|
36
|
+
max: () => 1,
|
|
37
|
+
gradientDifference: () => 0.01,
|
|
38
|
+
},
|
|
39
|
+
coupling: {
|
|
40
|
+
init: (data: { jCoupling: Jcoupling }) => data.jCoupling.coupling,
|
|
41
|
+
min: (data: { jCoupling: Jcoupling }) => data.jCoupling.coupling * 0.8,
|
|
42
|
+
max: (data: { jCoupling: Jcoupling }) => data.jCoupling.coupling * 1.2,
|
|
43
|
+
gradientDifference: () => 0.01,
|
|
44
|
+
},
|
|
45
|
+
};
|