nmr-processing 4.0.0 → 6.0.2
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.map +1 -1
- package/lib/assignment/get1HAssignments.d.ts +2 -2
- package/lib/{types → assignment}/nmrAssigment.d.ts +2 -2
- package/lib/{types → assignment}/nmrAssigment.js +0 -0
- package/lib/assignment/nmrAssigment.js.map +1 -0
- package/lib/assignment/utils/buildAssignments.js.map +1 -1
- package/lib/assignment/utils/createMapPossibleAssignments.d.ts +1 -1
- package/lib/assignment/utils/createMapPossibleAssignments.js.map +1 -1
- package/lib/constants/couplingValues.js.map +1 -1
- package/lib/databases/DatabaseNMREntry.d.ts +1 -1
- package/lib/index.d.ts +9 -10
- package/lib/index.js +1 -1
- package/lib/ml-matrix-convolution.d.ts +8 -0
- package/lib/ml-matrix-convolution.js +2 -0
- package/lib/ml-matrix-convolution.js.map +1 -0
- package/lib/ml-simple-clustering.d.ts +8 -0
- package/lib/ml-simple-clustering.js +2 -0
- package/lib/ml-simple-clustering.js.map +1 -0
- package/lib/{types → peaks}/NMRPeak1D.d.ts +0 -0
- package/lib/{types → peaks}/NMRPeak1D.js +0 -0
- package/lib/{types → peaks}/NMRPeak1D.js.map +1 -1
- package/lib/peaks/peaksFilterImpurities.d.ts +1 -1
- package/lib/peaks/peaksFilterImpurities.js.map +1 -1
- package/lib/peaks/peaksToRanges.d.ts +2 -2
- package/lib/peaks/util/determineRealTop.d.ts +2 -2
- package/lib/peaks/util/determineRealTop.js.map +1 -1
- package/lib/peaks/util/jAnalyzer.d.ts +2 -2
- package/lib/peaks/util/jAnalyzer.js +4 -3
- package/lib/peaks/util/jAnalyzer.js.map +1 -1
- package/lib/peaks/util/joinRanges.d.ts +1 -1
- package/lib/peaks/util/peakOptimizer.d.ts +3 -3
- package/lib/peaks/util/peakOptimizer.js.map +1 -1
- package/lib/{types → prediction}/dataStructure.d.ts +0 -0
- package/lib/{types → prediction}/dataStructure.js +0 -0
- package/lib/prediction/dataStructure.js.map +1 -0
- package/lib/prediction/predictAll.d.ts +1 -1
- package/lib/prediction/predictAll.js +1 -1
- package/lib/prediction/predictAll.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 +2 -2
- package/lib/prediction/predictCarbon.js.map +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/predictProton.js +1 -1
- package/lib/prediction/predictProton.js.map +1 -1
- package/lib/{types → prediction}/prediction1D.d.ts +2 -2
- package/lib/{types → prediction}/prediction1D.js +0 -0
- package/lib/prediction/prediction1D.js.map +1 -0
- package/lib/prediction/utils/fetchPrediction.d.ts +1 -1
- package/lib/prediction/utils/getFilteredIDiaIDs.d.ts +1 -1
- package/lib/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib/prediction/utils/getNuclei.js +1 -1
- package/lib/prediction/utils/getNuclei.js.map +1 -1
- package/lib/prediction/utils/getPredictions.d.ts +2 -2
- package/lib/prediction/utils/predict2D.d.ts +2 -2
- package/lib/prediction/utils/queryByHOSE.d.ts +1 -1
- package/lib/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib/ranges/rangesToACS.d.ts +1 -1
- package/lib/ranges/rangesToXY.d.ts +1 -1
- package/lib/ranges/rangesToXY.js.map +1 -1
- package/lib/signal/signalJoinCouplings.d.ts +2 -2
- package/lib/signal/signalJoinCouplings.js +3 -3
- package/lib/signal/signalJoinCouplings.js.map +1 -1
- package/lib/signal/signalMultiplicityPattern.d.ts +1 -1
- package/lib/{types → signals}/NMRSignal1D.d.ts +1 -1
- package/lib/{types → signals}/NMRSignal1D.js +0 -0
- package/lib/{types → signals}/NMRSignal1D.js.map +1 -1
- package/lib/signals/hackSignalsToXY.d.ts +1 -1
- package/lib/{types → signals}/jcoupling.d.ts +1 -1
- package/lib/{types → signals}/jcoupling.js +0 -0
- package/lib/{types → signals}/jcoupling.js.map +1 -1
- package/lib/signals/signals2DToZ.d.ts +1 -1
- package/lib/signals/signalsJoin.d.ts +4 -4
- package/lib/signals/signalsJoin.js +7 -7
- package/lib/signals/signalsJoin.js.map +1 -1
- package/lib/signals/signalsToRanges.d.ts +2 -2
- package/lib/signals/signalsToRanges.js.map +1 -1
- package/lib/signals/signalsToXY.d.ts +1 -1
- package/lib/signals/simulation/signalsToSpinSystem.d.ts +2 -2
- package/lib/signals/simulation/simulate1D.d.ts +1 -1
- package/lib/signals/simulation/splitSpinSystem.d.ts +1 -1
- package/lib/signals/simulation/splitSpinSystem.js.map +1 -1
- package/lib/{types → signals}/spinSystem.d.ts +0 -0
- package/lib/{types → signals}/spinSystem.js +0 -0
- package/lib/{types → signals}/spinSystem.js.map +1 -1
- package/lib/{types → utilities}/MakeMandatory.d.ts +0 -0
- package/lib/{types → utilities}/MakeMandatory.js +0 -0
- package/lib/utilities/MakeMandatory.js.map +1 -0
- package/lib/utilities/joinPatterns.js.map +1 -1
- package/lib/utilities/rangeFromSignal.d.ts +1 -1
- package/lib/utilities/resurrect.d.ts +1 -1
- package/lib/utilities/resurrectRange.d.ts +1 -1
- package/lib/{types → xy}/NMRRange.d.ts +1 -1
- package/lib/{types → xy}/NMRRange.js +0 -0
- package/lib/{types → xy}/NMRRange.js.map +1 -1
- package/lib/xy/xyAutoPeaksPicking.d.ts +2 -2
- package/lib/xy/xyAutoRangesPicking.d.ts +2 -2
- package/lib/xy/xyAutoRangesPicking.js.map +1 -1
- package/lib/{types → xyz}/NMRSignal2D.d.ts +6 -7
- package/lib/{types → xyz}/NMRSignal2D.js +0 -0
- package/lib/{types → xyz}/NMRSignal2D.js.map +1 -1
- package/lib/xyz/NMRZone.d.ts +8 -0
- package/lib/{types → xyz}/NMRZone.js +0 -0
- package/lib/{types → xyz}/NMRZone.js.map +1 -1
- package/lib/xyz/{xyzAutoPeaksPicking.d.ts → xyzAutoZonesPicking.d.ts} +3 -3
- package/lib/xyz/{xyzAutoPeaksPicking.js → xyzAutoZonesPicking.js} +38 -24
- package/lib/xyz/xyzAutoZonesPicking.js.map +1 -0
- package/lib/xyz/xyzJResAnalyzer.d.ts +1 -1
- package/lib/xyz/xyzJResAnalyzer.js.map +1 -1
- package/lib-esm/assignment/get13CAssignments.js.map +1 -1
- package/lib-esm/{types → assignment}/nmrAssigment.js +0 -0
- package/lib-esm/assignment/nmrAssigment.js.map +1 -0
- package/lib-esm/assignment/utils/buildAssignments.js.map +1 -1
- package/lib-esm/assignment/utils/createMapPossibleAssignments.js.map +1 -1
- package/lib-esm/constants/couplingValues.js.map +1 -1
- package/lib-esm/index.js +1 -1
- package/lib-esm/ml-matrix-convolution.js +2 -0
- package/lib-esm/ml-matrix-convolution.js.map +1 -0
- package/lib-esm/ml-simple-clustering.js +2 -0
- package/lib-esm/ml-simple-clustering.js.map +1 -0
- package/lib-esm/{types → peaks}/NMRPeak1D.js +0 -0
- package/lib-esm/{types → peaks}/NMRPeak1D.js.map +1 -1
- package/lib-esm/peaks/peaksFilterImpurities.js.map +1 -1
- package/lib-esm/peaks/util/determineRealTop.js.map +1 -1
- package/lib-esm/peaks/util/jAnalyzer.js +4 -3
- package/lib-esm/peaks/util/jAnalyzer.js.map +1 -1
- package/lib-esm/peaks/util/peakOptimizer.js.map +1 -1
- package/lib-esm/{types → prediction}/dataStructure.js +0 -0
- package/lib-esm/prediction/dataStructure.js.map +1 -0
- package/lib-esm/prediction/predictAll.js +1 -1
- package/lib-esm/prediction/predictAll.js.map +1 -1
- package/lib-esm/prediction/predictCOSY.js.map +1 -1
- package/lib-esm/prediction/predictCarbon.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/predictProton.js +1 -1
- package/lib-esm/prediction/predictProton.js.map +1 -1
- package/lib-esm/{types → prediction}/prediction1D.js +0 -0
- package/lib-esm/prediction/prediction1D.js.map +1 -0
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib-esm/prediction/utils/getNuclei.js +1 -1
- package/lib-esm/prediction/utils/getNuclei.js.map +1 -1
- package/lib-esm/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib-esm/ranges/rangesToXY.js.map +1 -1
- package/lib-esm/signal/signalJoinCouplings.js +3 -3
- package/lib-esm/signal/signalJoinCouplings.js.map +1 -1
- package/lib-esm/{types → signals}/NMRSignal1D.js +0 -0
- package/lib-esm/{types → signals}/NMRSignal1D.js.map +1 -1
- package/lib-esm/{types → signals}/jcoupling.js +0 -0
- package/lib-esm/{types → signals}/jcoupling.js.map +1 -1
- package/lib-esm/signals/signalsJoin.js +7 -7
- package/lib-esm/signals/signalsJoin.js.map +1 -1
- package/lib-esm/signals/signalsToRanges.js.map +1 -1
- package/lib-esm/signals/simulation/splitSpinSystem.js.map +1 -1
- package/lib-esm/{types → signals}/spinSystem.js +0 -0
- package/lib-esm/{types → signals}/spinSystem.js.map +1 -1
- package/lib-esm/{types → utilities}/MakeMandatory.js +0 -0
- package/lib-esm/utilities/MakeMandatory.js.map +1 -0
- package/lib-esm/utilities/joinPatterns.js.map +1 -1
- package/lib-esm/{types → xy}/NMRRange.js +0 -0
- package/lib-esm/{types → xy}/NMRRange.js.map +1 -1
- package/lib-esm/xy/xyAutoRangesPicking.js.map +1 -1
- package/lib-esm/{types → xyz}/NMRSignal2D.js +0 -0
- package/lib-esm/{types → xyz}/NMRSignal2D.js.map +1 -1
- package/lib-esm/{types → xyz}/NMRZone.js +0 -0
- package/lib-esm/{types → xyz}/NMRZone.js.map +1 -1
- package/lib-esm/xyz/{xyzAutoPeaksPicking.js → xyzAutoZonesPicking.js} +36 -22
- package/lib-esm/xyz/xyzAutoZonesPicking.js.map +1 -0
- package/lib-esm/xyz/xyzJResAnalyzer.js.map +1 -1
- package/package.json +20 -17
- package/src/assignment/get13CAssignments.ts +5 -2
- package/src/assignment/get1HAssignments.ts +2 -2
- package/src/{types → assignment}/nmrAssigment.ts +2 -2
- package/src/assignment/utils/buildAssignments.ts +1 -4
- package/src/assignment/utils/createMapPossibleAssignments.ts +5 -2
- package/src/constants/couplingValues.ts +1 -1
- package/src/databases/DatabaseNMREntry.ts +1 -1
- package/src/index.ts +9 -10
- package/src/{types/ml-levenberg-marquardt/index.d.ts → ml-levenberg-marquardt.d.ts} +0 -0
- package/src/{types/ml-matrix-convolution/index.d.ts → ml-matrix-convolution.ts} +0 -0
- package/src/{types/ml-matrix-peaks-finder/index.d.ts → ml-matrix-peaks-finder.d.ts} +2 -2
- package/src/{types/ml-simple-clustering/index.d.ts → ml-simple-clustering.ts} +1 -1
- package/src/{types/ml-sparse-matrix/index.d.ts → ml-sparse-matrix.d.ts} +0 -0
- package/src/{types/ml-spectra-processing/index.d.ts → ml-spectra-processing.d.ts} +8 -2
- package/src/{types/ml-tree-set/index.d.ts → ml-tree-set.d.ts} +0 -0
- package/src/nmr-parser.d.ts +17 -0
- package/src/{types/openchemlib-utils/index..d.ts → openchemlib.d.ts} +17 -6
- package/src/{types → peaks}/NMRPeak1D.ts +0 -0
- package/src/peaks/peaksFilterImpurities.ts +2 -1
- package/src/peaks/peaksToRanges.ts +4 -4
- package/src/peaks/util/determineRealTop.ts +3 -4
- package/src/peaks/util/jAnalyzer.ts +9 -9
- package/src/peaks/util/joinRanges.ts +1 -1
- package/src/peaks/util/peakOptimizer.ts +5 -4
- package/src/{types → prediction}/dataStructure.ts +1 -1
- package/src/prediction/predictAll.ts +6 -7
- package/src/prediction/predictCOSY.ts +1 -2
- package/src/prediction/predictCarbon.ts +4 -4
- package/src/prediction/predictHMBC.ts +1 -2
- package/src/prediction/predictHSQC.ts +5 -3
- package/src/prediction/predictProton.ts +4 -3
- package/src/{types → prediction}/prediction1D.ts +2 -2
- package/src/prediction/utils/fetchPrediction.ts +1 -1
- package/src/prediction/utils/getFilteredIDiaIDs.ts +1 -2
- package/src/prediction/utils/getNuclei.ts +3 -3
- package/src/prediction/utils/getPredictions.ts +3 -3
- package/src/prediction/utils/predict2D.ts +4 -4
- package/src/prediction/utils/queryByHOSE.ts +2 -2
- package/src/ranges/rangesToACS.ts +2 -2
- package/src/ranges/rangesToXY.ts +3 -3
- package/src/signal/signalJoinCouplings.ts +6 -6
- package/src/signal/signalMultiplicityPattern.ts +1 -1
- package/src/{types → signals}/NMRSignal1D.ts +2 -1
- package/src/signals/hackSignalsToXY.ts +2 -2
- package/src/{types → signals}/jcoupling.ts +1 -1
- package/src/signals/signals2DToZ.ts +1 -1
- package/src/signals/signalsJoin.ts +11 -10
- package/src/signals/signalsToRanges.ts +4 -3
- package/src/signals/signalsToXY.ts +4 -4
- package/src/signals/simulation/signalsToSpinSystem.ts +4 -4
- package/src/signals/simulation/simulate1D.ts +1 -1
- package/src/signals/simulation/splitSpinSystem.ts +11 -3
- package/src/{types → signals}/spinSystem.ts +0 -0
- package/src/{types → utilities}/MakeMandatory.ts +0 -0
- package/src/utilities/joinPatterns.ts +0 -1
- package/src/utilities/rangeFromSignal.ts +1 -1
- package/src/utilities/resurrect.ts +1 -1
- package/src/utilities/resurrectRange.ts +2 -2
- package/src/{types → xy}/NMRRange.ts +1 -1
- package/src/xy/xyAutoPeaksPicking.ts +6 -6
- package/src/xy/xyAutoRangesPicking.ts +3 -2
- package/src/{types → xyz}/NMRSignal2D.ts +6 -8
- package/src/xyz/NMRZone.ts +10 -0
- package/src/xyz/{xyzAutoPeaksPicking.ts → xyzAutoZonesPicking.ts} +44 -27
- package/src/xyz/xyzJResAnalyzer.ts +7 -6
- package/CHANGELOG.md +0 -561
- package/lib/types/MPFPeak.d.ts +0 -9
- package/lib/types/MPFPeak.js +0 -3
- package/lib/types/MPFPeak.js.map +0 -1
- package/lib/types/MakeMandatory.js.map +0 -1
- package/lib/types/NMRZone.d.ts +0 -12
- package/lib/types/XYNumberArray.d.ts +0 -4
- package/lib/types/XYNumberArray.js +0 -3
- package/lib/types/XYNumberArray.js.map +0 -1
- package/lib/types/dataStructure.js.map +0 -1
- package/lib/types/nmrAssigment.js.map +0 -1
- package/lib/types/prediction1D.js.map +0 -1
- package/lib/types/prediction2D.d.ts +0 -0
- package/lib/types/prediction2D.js +0 -2
- package/lib/types/prediction2D.js.map +0 -1
- package/lib/xyz/xyzAutoPeaksPicking.js.map +0 -1
- package/lib-esm/types/MPFPeak.js +0 -2
- package/lib-esm/types/MPFPeak.js.map +0 -1
- package/lib-esm/types/MakeMandatory.js.map +0 -1
- package/lib-esm/types/XYNumberArray.js +0 -2
- package/lib-esm/types/XYNumberArray.js.map +0 -1
- package/lib-esm/types/dataStructure.js.map +0 -1
- package/lib-esm/types/nmrAssigment.js.map +0 -1
- package/lib-esm/types/prediction1D.js.map +0 -1
- package/lib-esm/types/prediction2D.js +0 -2
- package/lib-esm/types/prediction2D.js.map +0 -1
- package/lib-esm/xyz/xyzAutoPeaksPicking.js.map +0 -1
- package/src/types/MPFPeak.ts +0 -9
- package/src/types/NMRZone.ts +0 -10
- package/src/types/XYNumberArray.ts +0 -4
- package/src/types/prediction2D.ts +0 -0
|
@@ -3,9 +3,10 @@ import sum from 'ml-array-sum';
|
|
|
3
3
|
|
|
4
4
|
import { signalJoinCouplings } from '../signal/signalJoinCouplings';
|
|
5
5
|
import type { SignalJoinCouplingsOptions } from '../signal/signalJoinCouplings';
|
|
6
|
-
import type { MakeMandatory } from '../
|
|
7
|
-
|
|
8
|
-
import type {
|
|
6
|
+
import type { MakeMandatory } from '../utilities/MakeMandatory';
|
|
7
|
+
|
|
8
|
+
import type { NMRSignal1D } from './NMRSignal1D';
|
|
9
|
+
import type { Jcoupling } from './jcoupling';
|
|
9
10
|
|
|
10
11
|
export interface SignalsJoinOptions {
|
|
11
12
|
/**
|
|
@@ -17,7 +18,7 @@ export interface SignalsJoinOptions {
|
|
|
17
18
|
|
|
18
19
|
type JcouplingFromPrediction = MakeMandatory<
|
|
19
20
|
Jcoupling,
|
|
20
|
-
'multiplicity' | 'diaIDs' | '
|
|
21
|
+
'multiplicity' | 'diaIDs' | 'pathLength'
|
|
21
22
|
>;
|
|
22
23
|
type Signal1DWidthDiaID = MakeMandatory<NMRSignal1D, 'diaIDs'>;
|
|
23
24
|
type Signal1DWidthJsAndDiaID = Omit<Signal1DWidthDiaID, 'js'> & {
|
|
@@ -29,8 +30,8 @@ const localeCompareJcouplingKeys = (
|
|
|
29
30
|
a: JcouplingFromPrediction,
|
|
30
31
|
b: JcouplingFromPrediction,
|
|
31
32
|
) => {
|
|
32
|
-
const aa = `${a.diaIDs.join(' ')}${a.
|
|
33
|
-
const bb = `${b.diaIDs.join(' ')}${b.
|
|
33
|
+
const aa = `${a.diaIDs.join(' ')}${a.pathLength}`;
|
|
34
|
+
const bb = `${b.diaIDs.join(' ')}${b.pathLength}`;
|
|
34
35
|
return localeCompare(aa, bb);
|
|
35
36
|
};
|
|
36
37
|
function checkForMandatory(
|
|
@@ -41,7 +42,7 @@ function checkForMandatory(
|
|
|
41
42
|
if (!signal.diaIDs) throw new Error('there is not diaIDs');
|
|
42
43
|
for (const jcoupling of signal.js) {
|
|
43
44
|
if (!jcoupling.diaIDs) throw new Error('there is not diaIDs');
|
|
44
|
-
if (!jcoupling.
|
|
45
|
+
if (!jcoupling.pathLength) throw new Error('there is not pathLength');
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
}
|
|
@@ -68,7 +69,7 @@ export function signalsJoin(
|
|
|
68
69
|
const keyDiaIDs = signal.diaIDs.join(' ');
|
|
69
70
|
let id = `${keyDiaIDs} ${signal.js
|
|
70
71
|
.map(
|
|
71
|
-
(j: JcouplingFromPrediction) => `${j.diaIDs.join(' ')} ${j.
|
|
72
|
+
(j: JcouplingFromPrediction) => `${j.diaIDs.join(' ')} ${j.pathLength}`,
|
|
72
73
|
)
|
|
73
74
|
.sort(localeCompare)
|
|
74
75
|
.join(' ')}`;
|
|
@@ -80,13 +81,13 @@ export function signalsJoin(
|
|
|
80
81
|
// for each group we need to combine assignments and average couplings
|
|
81
82
|
let newSignals: Signal1DWidthJsAndDiaID[] = [];
|
|
82
83
|
Object.values(groupedSignals).forEach((group) => {
|
|
83
|
-
// joining couplings only if diaID and
|
|
84
|
+
// joining couplings only if diaID and pathLength are equal
|
|
84
85
|
let js: JcouplingFromPrediction[] = [];
|
|
85
86
|
for (let i = 0; i < group[0].js.length; i++) {
|
|
86
87
|
const coupling = group[0].js[i];
|
|
87
88
|
js.push({
|
|
88
89
|
diaIDs: coupling.diaIDs,
|
|
89
|
-
|
|
90
|
+
pathLength: coupling.pathLength,
|
|
90
91
|
multiplicity: coupling.multiplicity,
|
|
91
92
|
coupling: mean(group.map((item) => item.js[i].coupling)),
|
|
92
93
|
});
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { MakeMandatory } from '../
|
|
2
|
-
import type { NMRRange } from '../types/NMRRange';
|
|
3
|
-
import type { NMRSignal1D } from '../types/NMRSignal1D';
|
|
1
|
+
import type { MakeMandatory } from '../utilities/MakeMandatory';
|
|
4
2
|
import { rangeFromSignal } from '../utilities/rangeFromSignal';
|
|
3
|
+
import type { NMRRange } from '../xy/NMRRange';
|
|
4
|
+
|
|
5
|
+
import type { NMRSignal1D } from './NMRSignal1D';
|
|
5
6
|
|
|
6
7
|
interface SignalsToRangesOptions {
|
|
7
8
|
/**
|
|
@@ -2,10 +2,10 @@ import rescale from 'ml-array-rescale';
|
|
|
2
2
|
import arraySequentialFill from 'ml-array-sequential-fill';
|
|
3
3
|
import type { Shape1D } from 'ml-peak-shape-generator';
|
|
4
4
|
|
|
5
|
-
import type { MakeMandatory } from '../
|
|
6
|
-
import type { NMRSignal1D } from '../types/NMRSignal1D';
|
|
7
|
-
import type { Jcoupling } from '../types/jcoupling';
|
|
5
|
+
import type { MakeMandatory } from '../utilities/MakeMandatory';
|
|
8
6
|
|
|
7
|
+
import type { NMRSignal1D } from './NMRSignal1D';
|
|
8
|
+
import type { Jcoupling } from './jcoupling';
|
|
9
9
|
import { signalsToSpinSystem } from './simulation/signalsToSpinSystem';
|
|
10
10
|
import simulate1D from './simulation/simulate1D';
|
|
11
11
|
import { splitSpinSystem } from './simulation/splitSpinSystem';
|
|
@@ -48,7 +48,7 @@ export interface OptionsSignalsToXY {
|
|
|
48
48
|
maxClusterSize?: number;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
type JcouplingFromPrediction = MakeMandatory<Jcoupling, '
|
|
51
|
+
type JcouplingFromPrediction = MakeMandatory<Jcoupling, 'pathLength'>;
|
|
52
52
|
type Signal1DWidthAtomsIDsAndDiaID = MakeMandatory<NMRSignal1D, 'atoms'>;
|
|
53
53
|
type Signal1DWidthJsAndDiaID = Omit<Signal1DWidthAtomsIDsAndDiaID, 'js'> & {
|
|
54
54
|
js: JcouplingFromPrediction[];
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Matrix } from 'ml-matrix';
|
|
2
2
|
import simpleClustering from 'ml-simple-clustering';
|
|
3
3
|
|
|
4
|
-
import type { MakeMandatory } from '../../
|
|
5
|
-
import type { NMRSignal1D } from '
|
|
6
|
-
import type { Jcoupling } from '
|
|
7
|
-
import type { SpinSystem } from '
|
|
4
|
+
import type { MakeMandatory } from '../../utilities/MakeMandatory';
|
|
5
|
+
import type { NMRSignal1D } from '../NMRSignal1D';
|
|
6
|
+
import type { Jcoupling } from '../jcoupling';
|
|
7
|
+
import type { SpinSystem } from '../spinSystem';
|
|
8
8
|
|
|
9
9
|
interface Ids {
|
|
10
10
|
[index: number]: number;
|
|
@@ -6,7 +6,7 @@ import type { Shape1D } from 'ml-peak-shape-generator';
|
|
|
6
6
|
import { SparseMatrix } from 'ml-sparse-matrix';
|
|
7
7
|
import { SpectrumGenerator } from 'spectrum-generator';
|
|
8
8
|
|
|
9
|
-
import type { SpinSystem } from '
|
|
9
|
+
import type { SpinSystem } from '../spinSystem';
|
|
10
10
|
|
|
11
11
|
import getPauliMatrix from './getPauliMatrix';
|
|
12
12
|
|
|
@@ -2,7 +2,7 @@ import { agnes } from 'ml-hclust';
|
|
|
2
2
|
import type { Cluster } from 'ml-hclust';
|
|
3
3
|
import { Matrix } from 'ml-matrix';
|
|
4
4
|
|
|
5
|
-
import type { SpinSystem } from '
|
|
5
|
+
import type { SpinSystem } from '../spinSystem';
|
|
6
6
|
|
|
7
7
|
export interface SplitSpinSystemOptions {
|
|
8
8
|
/**
|
|
@@ -53,7 +53,11 @@ interface SplitClusterOptions {
|
|
|
53
53
|
connectivity: Matrix;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
function splitCluster(
|
|
56
|
+
function splitCluster(
|
|
57
|
+
cluster: Cluster,
|
|
58
|
+
clusterList: Array<Int16Array>,
|
|
59
|
+
options: SplitClusterOptions,
|
|
60
|
+
) {
|
|
57
61
|
let { maxClusterSize, force, nSpins, connectivity } = options;
|
|
58
62
|
if (!force && cluster.size <= maxClusterSize) {
|
|
59
63
|
clusterList.push(getMembers(cluster.indices(), nSpins));
|
|
@@ -102,7 +106,11 @@ function splitCluster(cluster: Cluster, clusterList: Array<Int16Array>, options:
|
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
108
|
|
|
105
|
-
function calculateBetas(
|
|
109
|
+
function calculateBetas(
|
|
110
|
+
chemicalShifts: number[],
|
|
111
|
+
couplingConstants: Matrix,
|
|
112
|
+
frequency: number,
|
|
113
|
+
) {
|
|
106
114
|
let nRows = couplingConstants.rows;
|
|
107
115
|
let nColumns = couplingConstants.columns;
|
|
108
116
|
let betas = Matrix.zeros(nRows, nRows);
|
|
File without changes
|
|
File without changes
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { couplingPatterns } from '../constants/couplingPatterns';
|
|
2
2
|
import { couplingValues } from '../constants/couplingValues';
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
export function joinPatterns(patterns: string[]) {
|
|
6
5
|
const sum = patterns.reduce((sum, pattern) => {
|
|
7
6
|
if (isNaN(couplingValues[pattern])) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { NMRSignal1D } from '../signals/NMRSignal1D';
|
|
2
|
+
import type { NMRRange } from '../xy/NMRRange';
|
|
3
3
|
|
|
4
4
|
import { rangeFromSignal } from './rangeFromSignal';
|
|
5
5
|
import { splitParenthesis } from './splitParenthesis';
|
|
@@ -2,9 +2,9 @@ import { DataXY } from 'cheminfo-types';
|
|
|
2
2
|
import { gsd, joinBroadPeaks, optimizePeaks } from 'ml-gsd';
|
|
3
3
|
import type {
|
|
4
4
|
Peak1D,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
GSDOptions,
|
|
6
|
+
OptimizePeaksOptions,
|
|
7
|
+
JoinBroadPeaksOptions,
|
|
8
8
|
} from 'ml-gsd';
|
|
9
9
|
import {
|
|
10
10
|
xyExtract,
|
|
@@ -26,9 +26,9 @@ interface OptionsGetCutOff {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export interface IGetPeakListOptions
|
|
29
|
-
extends
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
extends GSDOptions,
|
|
30
|
+
OptimizePeaksOptions,
|
|
31
|
+
JoinBroadPeaksOptions {
|
|
32
32
|
/**
|
|
33
33
|
* If it is true, the peaks parameters will be optimized.
|
|
34
34
|
* @default false
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { DataXY } from 'cheminfo-types';
|
|
2
|
+
|
|
1
3
|
import { peaksFilterImpurities } from '../peaks/peaksFilterImpurities';
|
|
2
4
|
import type { OptionsPeaksFilterImpurities } from '../peaks/peaksFilterImpurities';
|
|
3
5
|
import { OptionsPeaksToRanges, peaksToRanges } from '../peaks/peaksToRanges';
|
|
4
|
-
import type { XYNumberArray } from '../types/XYNumberArray';
|
|
5
6
|
|
|
6
7
|
import { xyAutoPeaksPicking } from './xyAutoPeaksPicking';
|
|
7
8
|
import type { OptionsXYAutoPeaksPicking } from './xyAutoPeaksPicking';
|
|
@@ -16,7 +17,7 @@ interface OptionsXYAutoRangesPicking {
|
|
|
16
17
|
* Detect peaks, optimize parameters and compile multiplicity if required.
|
|
17
18
|
*/
|
|
18
19
|
export function xyAutoRangesPicking(
|
|
19
|
-
data:
|
|
20
|
+
data: DataXY,
|
|
20
21
|
options: OptionsXYAutoRangesPicking = {},
|
|
21
22
|
) {
|
|
22
23
|
let peaks = xyAutoPeaksPicking(data, options.peakPicking);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FromTo } from 'cheminfo-types';
|
|
2
|
+
import type { Peak2D } from 'ml-matrix-peaks-finder';
|
|
2
3
|
|
|
3
4
|
export interface Signal2DAxisData {
|
|
4
5
|
nucleus?: string;
|
|
@@ -6,17 +7,14 @@ export interface Signal2DAxisData {
|
|
|
6
7
|
resolution?: number;
|
|
7
8
|
atoms?: number[];
|
|
8
9
|
diaIDs?: string[];
|
|
9
|
-
fromTo?: {
|
|
10
|
-
from: number;
|
|
11
|
-
to: number
|
|
12
|
-
};
|
|
13
10
|
}
|
|
14
11
|
export interface NMRSignal2D {
|
|
15
12
|
x: Signal2DAxisData;
|
|
16
13
|
y: Signal2DAxisData;
|
|
14
|
+
j?: {
|
|
15
|
+
pathLength?: number | FromTo;
|
|
16
|
+
};
|
|
17
17
|
id?: string;
|
|
18
|
-
peaks?:
|
|
18
|
+
peaks?: Peak2D[];
|
|
19
19
|
kind?: string;
|
|
20
|
-
//eslint-disable-next-line
|
|
21
|
-
_highlight?: (number | string)[];
|
|
22
20
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { Matrix } from 'ml-matrix';
|
|
2
2
|
import * as convolution from 'ml-matrix-convolution';
|
|
3
3
|
import * as matrixPeakFinders from 'ml-matrix-peaks-finder';
|
|
4
|
+
import type { Peak2D } from 'ml-matrix-peaks-finder';
|
|
4
5
|
import simpleClustering from 'ml-simple-clustering';
|
|
5
6
|
|
|
7
|
+
import { NMRZone } from '..';
|
|
6
8
|
import { determineRealTop } from '../peaks/util/determineRealTop';
|
|
7
9
|
import { getKernel } from '../peaks/util/getKernel';
|
|
8
10
|
import type { GetKernelOptions } from '../peaks/util/getKernel';
|
|
9
11
|
import * as PeakOptimizer from '../peaks/util/peakOptimizer';
|
|
10
|
-
|
|
11
|
-
import type { NMRSignal2D } from '
|
|
12
|
+
|
|
13
|
+
import type { NMRSignal2D } from './NMRSignal2D';
|
|
12
14
|
|
|
13
15
|
const smallFilter = [
|
|
14
16
|
[0, 0, 1, 2, 2, 2, 1, 0, 0],
|
|
@@ -30,7 +32,7 @@ export interface Data2D {
|
|
|
30
32
|
maxY: number;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
export interface
|
|
35
|
+
export interface XYZAutoZonesPickingOptions {
|
|
34
36
|
/**
|
|
35
37
|
* max number of points in any dimension to pad the input data, this is needed to avoid lost peaks when the input matrix is too small.
|
|
36
38
|
* @default 14
|
|
@@ -86,9 +88,9 @@ export interface XYZAutoPeaksPickingOptions {
|
|
|
86
88
|
kernel?: GetKernelOptions;
|
|
87
89
|
}
|
|
88
90
|
|
|
89
|
-
export function
|
|
91
|
+
export function xyzAutoZonesPicking(
|
|
90
92
|
spectraData: Data2D,
|
|
91
|
-
options:
|
|
93
|
+
options: XYZAutoZonesPickingOptions,
|
|
92
94
|
) {
|
|
93
95
|
let {
|
|
94
96
|
sizeToPad = 14,
|
|
@@ -178,7 +180,41 @@ export function xyzAutoPeaksPicking(
|
|
|
178
180
|
signals = PeakOptimizer.enhanceSymmetry(signals);
|
|
179
181
|
}
|
|
180
182
|
|
|
181
|
-
return signals;
|
|
183
|
+
return formatZones(signals);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function formatZones(signals: NMRSignal2D[]) {
|
|
187
|
+
let zones: NMRZone[] = [];
|
|
188
|
+
for (const signal of signals) {
|
|
189
|
+
let minMax1 = [Number.MAX_VALUE, 0];
|
|
190
|
+
let minMax2 = [Number.MAX_VALUE, 0];
|
|
191
|
+
for (const peak of signal.peaks || []) {
|
|
192
|
+
if (peak.minX < minMax1[0]) {
|
|
193
|
+
minMax1[0] = peak.minX;
|
|
194
|
+
}
|
|
195
|
+
if (peak.maxX > minMax1[1]) {
|
|
196
|
+
minMax1[1] = peak.maxX;
|
|
197
|
+
}
|
|
198
|
+
if (peak.minY < minMax2[0]) {
|
|
199
|
+
minMax2[0] = peak.minY;
|
|
200
|
+
}
|
|
201
|
+
if (peak.maxY > minMax2[1]) {
|
|
202
|
+
minMax2[1] = peak.maxY;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
zones.push({
|
|
206
|
+
x: {
|
|
207
|
+
from: minMax1[0],
|
|
208
|
+
to: minMax1[1],
|
|
209
|
+
},
|
|
210
|
+
y: {
|
|
211
|
+
from: minMax2[0],
|
|
212
|
+
to: minMax2[1],
|
|
213
|
+
},
|
|
214
|
+
signals: [signal],
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
return zones;
|
|
182
218
|
}
|
|
183
219
|
|
|
184
220
|
/**
|
|
@@ -201,7 +237,7 @@ export interface CreateSignals2DOptions {
|
|
|
201
237
|
minX: number;
|
|
202
238
|
maxX: number;
|
|
203
239
|
}
|
|
204
|
-
const createSignals2D = (peaks:
|
|
240
|
+
const createSignals2D = (peaks: Peak2D[], options: CreateSignals2DOptions) => {
|
|
205
241
|
let {
|
|
206
242
|
nCols,
|
|
207
243
|
nRows,
|
|
@@ -246,9 +282,6 @@ const createSignals2D = (peaks: MPFPeak[], options: CreateSignals2DOptions) => {
|
|
|
246
282
|
peaks[i].maxY = minY + dy * peaks[i].maxY;
|
|
247
283
|
|
|
248
284
|
// Still having problems to correctly detect peaks on those areas. So I'm removing everything there.
|
|
249
|
-
if (peaks[i].y < -1 || peaks[i].y >= 210) {
|
|
250
|
-
peaks.splice(i, 1);
|
|
251
|
-
}
|
|
252
285
|
}
|
|
253
286
|
// The connectivity matrix is an square and symmetric matrix, so we'll only store the upper diagonal in an
|
|
254
287
|
// array like form
|
|
@@ -283,9 +316,7 @@ const createSignals2D = (peaks: MPFPeak[], options: CreateSignals2DOptions) => {
|
|
|
283
316
|
resolution: dy,
|
|
284
317
|
},
|
|
285
318
|
};
|
|
286
|
-
let peaks2D = [];
|
|
287
|
-
let minMax1 = [Number.MAX_VALUE, 0];
|
|
288
|
-
let minMax2 = [Number.MAX_VALUE, 0];
|
|
319
|
+
let peaks2D: Peak2D[] = [];
|
|
289
320
|
let sumZ = 0;
|
|
290
321
|
|
|
291
322
|
for (let jPeak = 0; jPeak < cluster.length; jPeak++) {
|
|
@@ -294,23 +325,9 @@ const createSignals2D = (peaks: MPFPeak[], options: CreateSignals2DOptions) => {
|
|
|
294
325
|
signal.x.delta += peaks[jPeak].x * peaks[jPeak].z;
|
|
295
326
|
signal.y.delta += peaks[jPeak].y * peaks[jPeak].z;
|
|
296
327
|
sumZ += peaks[jPeak].z;
|
|
297
|
-
if (peaks[jPeak].minX < minMax1[0]) {
|
|
298
|
-
minMax1[0] = peaks[jPeak].minX;
|
|
299
|
-
}
|
|
300
|
-
if (peaks[jPeak].maxX > minMax1[1]) {
|
|
301
|
-
minMax1[1] = peaks[jPeak].maxX;
|
|
302
|
-
}
|
|
303
|
-
if (peaks[jPeak].minY < minMax2[0]) {
|
|
304
|
-
minMax2[0] = peaks[jPeak].minY;
|
|
305
|
-
}
|
|
306
|
-
if (peaks[jPeak].maxY > minMax2[1]) {
|
|
307
|
-
minMax2[1] = peaks[jPeak].maxY;
|
|
308
|
-
}
|
|
309
328
|
}
|
|
310
329
|
}
|
|
311
330
|
|
|
312
|
-
signal.x.fromTo = { from: minMax1[0], to: minMax1[1] };
|
|
313
|
-
signal.y.fromTo = { from: minMax2[0], to: minMax2[1] };
|
|
314
331
|
signal.x.delta /= sumZ;
|
|
315
332
|
signal.y.delta /= sumZ;
|
|
316
333
|
signal.peaks = peaks2D;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import type { Peak2D } from 'ml-matrix-peaks-finder';
|
|
1
2
|
import simpleClustering from 'ml-simple-clustering';
|
|
2
3
|
|
|
3
4
|
import type { JAxisKeys } from '../peaks/util/jAnalyzer';
|
|
4
5
|
import jAnalyzer from '../peaks/util/jAnalyzer';
|
|
5
|
-
import type {
|
|
6
|
-
|
|
7
|
-
import type { NMRSignal2D } from '
|
|
6
|
+
import type { MakeMandatory } from '../utilities/MakeMandatory';
|
|
7
|
+
|
|
8
|
+
import type { NMRSignal2D } from './NMRSignal2D';
|
|
8
9
|
|
|
9
10
|
interface CompilePatternOptions {
|
|
10
11
|
observedFrequencies?: number[] | Float64Array;
|
|
@@ -96,7 +97,7 @@ function compilePattern(
|
|
|
96
97
|
for (const peak of peaks) {
|
|
97
98
|
if (!peak.width) peak.width = 0.02;
|
|
98
99
|
}
|
|
99
|
-
peaks.sort((a:
|
|
100
|
+
peaks.sort((a: Peak2D, b: Peak2D) => a.y - b.y);
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
for (let i = 0; i < signals.length; i++) {
|
|
@@ -137,7 +138,7 @@ function compilePattern(
|
|
|
137
138
|
return signals;
|
|
138
139
|
}
|
|
139
140
|
|
|
140
|
-
interface Peak2DHack extends
|
|
141
|
+
interface Peak2DHack extends Peak2D {
|
|
141
142
|
width?: number;
|
|
142
143
|
}
|
|
143
144
|
type Signal2DHack = Omit<NMRSignal2D, 'peaks'> & {
|
|
@@ -149,7 +150,7 @@ type Signal2DHack = Omit<NMRSignal2D, 'peaks'> & {
|
|
|
149
150
|
observe: number;
|
|
150
151
|
};
|
|
151
152
|
|
|
152
|
-
function createSignals2D(peaksInput:
|
|
153
|
+
function createSignals2D(peaksInput: Peak2D[], options: any) {
|
|
153
154
|
let { observedFrequencies, tolerances, nuclei, dx, dy } = options;
|
|
154
155
|
|
|
155
156
|
const peaks: Peak2DHack[] = JSON.parse(JSON.stringify(peaksInput));
|