nmr-processing 9.7.7 → 9.7.9-pre.1690349439
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/apodization/compose.js +1 -1
- package/lib/apodization/compose.js.map +1 -1
- package/lib/assignment/get13CAssignments.d.ts +1 -1
- package/lib/assignment/get13CAssignments.js +3 -3
- package/lib/assignment/get13CAssignments.js.map +1 -1
- package/lib/assignment/get1HAssignments.d.ts +2 -4
- package/lib/assignment/get1HAssignments.js +3 -3
- package/lib/assignment/get1HAssignments.js.map +1 -1
- package/lib/assignment/getAssignments.d.ts +3 -5
- package/lib/assignment/getAssignments.js +5 -5
- package/lib/assignment/getAssignments.js.map +1 -1
- package/lib/assignment/nmrAssigment.d.ts +2 -2
- package/lib/assignment/utils/addSolution.d.ts +13 -0
- package/lib/assignment/utils/addSolution.js +29 -0
- package/lib/assignment/utils/addSolution.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.d.ts +13 -27
- package/lib/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.js +15 -15
- package/lib/assignment/utils/generalAssignment/buildAssignments.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/checkIDs.js +6 -6
- package/lib/assignment/utils/generalAssignment/checkIDs.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.d.ts +3 -7
- package/lib/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.js +7 -7
- package/lib/assignment/utils/generalAssignment/createMapPossibleAssignment.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/exploreTree.d.ts +1 -1
- package/lib/assignment/utils/{getAssignment → generalAssignment}/exploreTree.js +6 -7
- package/lib/assignment/utils/generalAssignment/exploreTree.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/formatData.js +5 -5
- package/lib/assignment/utils/generalAssignment/formatData.js.map +1 -0
- package/lib/assignment/utils/generalAssignment/getIntegrationOfAttachedProtons.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.d.ts +2 -4
- package/lib/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.js +1 -1
- package/lib/assignment/utils/generalAssignment/getTargetsAndCorrelations.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.d.ts +1 -1
- package/lib/assignment/utils/generalAssignment/getWorkFlow.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.js +8 -8
- package/lib/assignment/utils/generalAssignment/groupCarbonTargetByIntegrationZone.js.map +1 -0
- package/lib/assignment/utils/generalAssignment/isSpectraData1D.js.map +1 -0
- package/lib/assignment/utils/{getAssignment → generalAssignment}/partialScore.d.ts +1 -3
- package/lib/assignment/utils/{getAssignment → generalAssignment}/partialScore.js +20 -20
- package/lib/assignment/utils/generalAssignment/partialScore.js.map +1 -0
- package/lib/assignment/utils/generalAssignment/searchIndices.js.map +1 -0
- package/lib/assignment/utils/{buildAssignments.d.ts → oneDimensionalAssignment/buildAssignments.d.ts} +2 -4
- package/lib/assignment/utils/{buildAssignments.js → oneDimensionalAssignment/buildAssignments.js} +4 -4
- package/lib/assignment/utils/oneDimensionalAssignment/buildAssignments.js.map +1 -0
- package/lib/assignment/utils/{createMapPossibleAssignments.d.ts → oneDimensionalAssignment/createMapPossibleAssignments.d.ts} +3 -5
- package/lib/assignment/utils/{createMapPossibleAssignments.js → oneDimensionalAssignment/createMapPossibleAssignments.js} +4 -4
- package/lib/assignment/utils/oneDimensionalAssignment/createMapPossibleAssignments.js.map +1 -0
- package/lib/assignment/utils/{exploreTreeRec.d.ts → oneDimensionalAssignment/exploreTreeRec.d.ts} +1 -1
- package/lib/assignment/utils/{exploreTreeRec.js → oneDimensionalAssignment/exploreTreeRec.js} +7 -8
- package/lib/assignment/utils/oneDimensionalAssignment/exploreTreeRec.js.map +1 -0
- package/lib/assignment/utils/{partialScore.d.ts → oneDimensionalAssignment/partialScore.d.ts} +1 -1
- package/lib/assignment/utils/{partialScore.js → oneDimensionalAssignment/partialScore.js} +9 -9
- package/lib/assignment/utils/oneDimensionalAssignment/partialScore.js.map +1 -0
- package/lib/constants/SignalsKinds.d.ts +2 -2
- package/lib/constants/SignalsKinds.js.map +1 -1
- package/lib/constants/couplingValues.d.ts +1 -3
- package/lib/constants/couplingValues.js.map +1 -1
- package/lib/constants/impurities.d.ts +1509 -6
- package/lib/constants/impurities.js +2 -1
- package/lib/constants/impurities.js.map +1 -1
- package/lib/databases/getDatabase.js +1 -1
- package/lib/databases/getDatabase.js.map +1 -1
- package/lib/datum/Filters.js +4 -0
- package/lib/datum/Filters.js.map +1 -1
- package/lib/datum/FiltersManager.d.ts +1 -1
- package/lib/datum/FiltersManager.js +2 -2
- package/lib/datum/FiltersManager.js.map +1 -1
- package/lib/datum/MatrixOptions.d.ts +2 -2
- package/lib/datum/data1d/Entry1D.d.ts +1 -1
- package/lib/datum/data1d/filter1d/baselineCorrection.js +4 -4
- package/lib/datum/data1d/filter1d/baselineCorrection.js.map +1 -1
- package/lib/datum/data1d/filter1d/digitalFilter.js +2 -2
- package/lib/datum/data1d/filter1d/digitalFilter.js.map +1 -1
- package/lib/datum/data1d/filter1d/fft.js +7 -7
- package/lib/datum/data1d/filter1d/fft.js.map +1 -1
- package/lib/datum/data1d/filter1d/phaseCorrection.js +3 -3
- package/lib/datum/data1d/filter1d/phaseCorrection.js.map +1 -1
- package/lib/datum/data1d/filter1d/signalProcessing.js +1 -1
- package/lib/datum/data1d/filter1d/signalProcessing.js.map +1 -1
- package/lib/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js +2 -2
- package/lib/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js.map +1 -1
- package/lib/datum/data1d/filter1d/zeroFilling.js +8 -8
- package/lib/datum/data1d/filter1d/zeroFilling.js.map +1 -1
- package/lib/datum/data1d/utils/mapPeaks.js +1 -1
- package/lib/datum/data1d/utils/mapPeaks.js.map +1 -1
- package/lib/datum/data2d/Entry2D.d.ts +1 -1
- package/lib/datum/data2d/filter2d/fftDimension1.d.ts +15 -0
- package/lib/datum/data2d/filter2d/fftDimension1.js +49 -0
- package/lib/datum/data2d/filter2d/fftDimension1.js.map +1 -0
- package/lib/datum/data2d/filter2d/fftDimension2.d.ts +15 -0
- package/lib/datum/data2d/filter2d/fftDimension2.js +60 -0
- package/lib/datum/data2d/filter2d/fftDimension2.js.map +1 -0
- package/lib/datum/data2d/utils/getShift.js +1 -1
- package/lib/datum/data2d/utils/getShift.js.map +1 -1
- package/lib/multiplicity/joinPatterns.js +1 -1
- package/lib/multiplicity/joinPatterns.js.map +1 -1
- package/lib/multiplicity/splitPatterns.js +1 -1
- package/lib/multiplicity/splitPatterns.js.map +1 -1
- package/lib/peaks/peakToXY.d.ts +1 -1
- package/lib/peaks/peaksFilterImpurities.js +7 -6
- package/lib/peaks/peaksFilterImpurities.js.map +1 -1
- package/lib/peaks/peaksToRanges.js +17 -17
- package/lib/peaks/peaksToRanges.js.map +1 -1
- package/lib/peaks/peaksToXY.d.ts +1 -1
- package/lib/peaks/solventSuppression.js +11 -11
- package/lib/peaks/solventSuppression.js.map +1 -1
- package/lib/peaks/util/addMissingIDs.js.map +1 -1
- package/lib/peaks/util/determineRealTop.js +32 -32
- package/lib/peaks/util/determineRealTop.js.map +1 -1
- package/lib/peaks/util/getKernel.js +4 -4
- package/lib/peaks/util/getKernel.js.map +1 -1
- package/lib/peaks/util/peakOptimizer.js +17 -17
- package/lib/peaks/util/peakOptimizer.js.map +1 -1
- package/lib/peaks/util/setIDs.js.map +1 -1
- package/lib/prediction/dataStructure.d.ts +1 -3
- package/lib/prediction/predictAll.js +2 -1
- package/lib/prediction/predictAll.js.map +1 -1
- package/lib/prediction/predictCOSY.js +1 -1
- package/lib/prediction/predictCOSY.js.map +1 -1
- package/lib/prediction/predictCarbon.js +6 -6
- package/lib/prediction/predictCarbon.js.map +1 -1
- package/lib/prediction/predictHMBC.js +1 -1
- package/lib/prediction/predictHMBC.js.map +1 -1
- package/lib/prediction/predictHSQC.js +1 -1
- package/lib/prediction/predictHSQC.js.map +1 -1
- package/lib/prediction/predictProton.js +9 -9
- package/lib/prediction/predictProton.js.map +1 -1
- package/lib/prediction/utils/getFilteredIDiaIDs.js +3 -3
- package/lib/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib/prediction/utils/getNuclei.d.ts +1 -3
- package/lib/prediction/utils/getNuclei.js.map +1 -1
- package/lib/prediction/utils/predict2D.d.ts +1 -3
- package/lib/prediction/utils/predict2D.js +17 -17
- package/lib/prediction/utils/predict2D.js.map +1 -1
- package/lib/prediction/utils/queryByHOSE.js +1 -1
- package/lib/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib/ranges/markSolventSignal.js +8 -8
- package/lib/ranges/markSolventSignal.js.map +1 -1
- package/lib/ranges/rangesToACS.js +6 -6
- package/lib/ranges/rangesToACS.js.map +1 -1
- package/lib/ranges/rangesToXY.js +6 -6
- package/lib/ranges/rangesToXY.js.map +1 -1
- package/lib/signal/signalJoinCouplings.js +19 -12
- package/lib/signal/signalJoinCouplings.js.map +1 -1
- package/lib/signal/signalMultiplicityPattern.js +2 -2
- package/lib/signal/signalMultiplicityPattern.js.map +1 -1
- package/lib/signals/addDummySignals.js +4 -4
- package/lib/signals/addDummySignals.js.map +1 -1
- package/lib/signals/hackSignalsToXY.js +1 -1
- package/lib/signals/hackSignalsToXY.js.map +1 -1
- package/lib/signals/optimization/getInternalSignals.js +6 -6
- package/lib/signals/optimization/getInternalSignals.js.map +1 -1
- package/lib/signals/optimization/getSumOfShapes.js +1 -1
- package/lib/signals/optimization/getSumOfShapes.js.map +1 -1
- package/lib/signals/optimizeSignals.js +3 -3
- package/lib/signals/optimizeSignals.js.map +1 -1
- package/lib/signals/signals2DToZ.js +3 -2
- package/lib/signals/signals2DToZ.js.map +1 -1
- package/lib/signals/signalsJoin.js +5 -5
- package/lib/signals/signalsJoin.js.map +1 -1
- package/lib/signals/signalsToFID.js +1 -1
- package/lib/signals/signalsToFID.js.map +1 -1
- package/lib/signals/signalsToRanges.js +3 -3
- package/lib/signals/signalsToRanges.js.map +1 -1
- package/lib/signals/signalsToXY.js +3 -3
- package/lib/signals/signalsToXY.js.map +1 -1
- package/lib/signals/simulation/signalsToSpinSystem.js +2 -2
- package/lib/signals/simulation/signalsToSpinSystem.js.map +1 -1
- package/lib/signals/simulation/simulate1D.js +2 -2
- package/lib/signals/simulation/simulate1D.js.map +1 -1
- package/lib/signals/simulation/simulateXYPeaks.js +15 -17
- package/lib/signals/simulation/simulateXYPeaks.js.map +1 -1
- package/lib/signals/simulation/splitSpinSystem.js +26 -23
- package/lib/signals/simulation/splitSpinSystem.js.map +1 -1
- package/lib/signals/utils/jAnalyzer.js +38 -38
- package/lib/signals/utils/jAnalyzer.js.map +1 -1
- package/lib/types/Integrals.d.ts +1 -1
- package/lib/types/Peaks/Peaks.d.ts +1 -1
- package/lib/types/Ranges/Ranges.d.ts +1 -1
- package/lib/types/Zones/Zone.d.ts +1 -1
- package/lib/types/Zones/Zones.d.ts +1 -1
- package/lib/utilities/getFrequency.js +1 -1
- package/lib/utilities/getFrequency.js.map +1 -1
- package/lib/utilities/resurrectRange.js +1 -1
- package/lib/utilities/resurrectRange.js.map +1 -1
- package/lib/xy/xyAutoPeaksPicking.js +3 -3
- package/lib/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib/xyz/quadrature.js +6 -6
- package/lib/xyz/quadrature.js.map +1 -1
- package/lib/xyz/util/fft2d/digitalFilter.js +3 -3
- package/lib/xyz/util/fft2d/digitalFilter.js.map +1 -1
- package/lib/xyz/util/fft2d/fftDirectDimension.d.ts +1 -1
- package/lib/xyz/util/fft2d/fftDirectDimension.js +4 -3
- package/lib/xyz/util/fft2d/fftDirectDimension.js.map +1 -1
- package/lib/xyz/util/fft2d/fftIndirectDimension.js +5 -4
- package/lib/xyz/util/fft2d/fftIndirectDimension.js.map +1 -1
- package/lib/xyz/util/fft2d/removeDCOffset.js +1 -1
- package/lib/xyz/util/fft2d/removeDCOffset.js.map +1 -1
- package/lib/xyz/util/fft2d/zeroFilling.js +4 -6
- package/lib/xyz/util/fft2d/zeroFilling.js.map +1 -1
- package/lib/xyz/util/formatZone.js +3 -3
- package/lib/xyz/util/formatZone.js.map +1 -1
- package/lib/xyz/util/getMinMaxXY.d.ts +6 -0
- package/lib/xyz/util/getMinMaxXY.js +23 -0
- package/lib/xyz/util/getMinMaxXY.js.map +1 -0
- package/lib/xyz/util/padData.js +7 -7
- package/lib/xyz/util/padData.js.map +1 -1
- package/lib/xyz/xyzAutoSignalsPicking.js +19 -18
- package/lib/xyz/xyzAutoSignalsPicking.js.map +1 -1
- package/lib/xyz/xyzBidimensionalFFT.js +2 -19
- package/lib/xyz/xyzBidimensionalFFT.js.map +1 -1
- package/lib/xyz/xyzJResAnalyzer.js +21 -21
- package/lib/xyz/xyzJResAnalyzer.js.map +1 -1
- package/lib-esm/apodization/compose.js +1 -1
- package/lib-esm/apodization/compose.js.map +1 -1
- package/lib-esm/assignment/get13CAssignments.js +3 -3
- package/lib-esm/assignment/get13CAssignments.js.map +1 -1
- package/lib-esm/assignment/get1HAssignments.js +3 -3
- package/lib-esm/assignment/get1HAssignments.js.map +1 -1
- package/lib-esm/assignment/getAssignments.js +5 -5
- package/lib-esm/assignment/getAssignments.js.map +1 -1
- package/lib-esm/assignment/utils/addSolution.js +25 -0
- package/lib-esm/assignment/utils/addSolution.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.js +15 -15
- package/lib-esm/assignment/utils/generalAssignment/buildAssignments.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/checkIDs.js +6 -6
- package/lib-esm/assignment/utils/generalAssignment/checkIDs.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.js +7 -7
- package/lib-esm/assignment/utils/generalAssignment/createMapPossibleAssignment.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/exploreTree.js +6 -7
- package/lib-esm/assignment/utils/generalAssignment/exploreTree.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/formatData.js +5 -5
- package/lib-esm/assignment/utils/generalAssignment/formatData.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/getIntegrationOfAttachedProtons.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.js +1 -1
- package/lib-esm/assignment/utils/generalAssignment/getTargetsAndCorrelations.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/getWorkFlow.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.js +8 -8
- package/lib-esm/assignment/utils/generalAssignment/groupCarbonTargetByIntegrationZone.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/isSpectraData1D.js.map +1 -0
- package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/partialScore.js +20 -20
- package/lib-esm/assignment/utils/generalAssignment/partialScore.js.map +1 -0
- package/lib-esm/assignment/utils/generalAssignment/searchIndices.js.map +1 -0
- package/lib-esm/assignment/utils/{buildAssignments.js → oneDimensionalAssignment/buildAssignments.js} +4 -4
- package/lib-esm/assignment/utils/oneDimensionalAssignment/buildAssignments.js.map +1 -0
- package/lib-esm/assignment/utils/{createMapPossibleAssignments.js → oneDimensionalAssignment/createMapPossibleAssignments.js} +4 -4
- package/lib-esm/assignment/utils/oneDimensionalAssignment/createMapPossibleAssignments.js.map +1 -0
- package/lib-esm/assignment/utils/{exploreTreeRec.js → oneDimensionalAssignment/exploreTreeRec.js} +7 -8
- package/lib-esm/assignment/utils/oneDimensionalAssignment/exploreTreeRec.js.map +1 -0
- package/lib-esm/assignment/utils/{partialScore.js → oneDimensionalAssignment/partialScore.js} +9 -9
- package/lib-esm/assignment/utils/oneDimensionalAssignment/partialScore.js.map +1 -0
- package/lib-esm/constants/SignalsKinds.js.map +1 -1
- package/lib-esm/constants/couplingValues.js.map +1 -1
- package/lib-esm/constants/impurities.js +2 -1
- package/lib-esm/constants/impurities.js.map +1 -1
- package/lib-esm/databases/getDatabase.js +1 -1
- package/lib-esm/databases/getDatabase.js.map +1 -1
- package/lib-esm/datum/Filters.js +4 -0
- package/lib-esm/datum/Filters.js.map +1 -1
- package/lib-esm/datum/FiltersManager.js +2 -2
- package/lib-esm/datum/FiltersManager.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/baselineCorrection.js +4 -4
- package/lib-esm/datum/data1d/filter1d/baselineCorrection.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/digitalFilter.js +2 -2
- package/lib-esm/datum/data1d/filter1d/digitalFilter.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/fft.js +7 -7
- package/lib-esm/datum/data1d/filter1d/fft.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/phaseCorrection.js +3 -3
- package/lib-esm/datum/data1d/filter1d/phaseCorrection.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/signalProcessing.js +1 -1
- package/lib-esm/datum/data1d/filter1d/signalProcessing.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js +2 -2
- package/lib-esm/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.js.map +1 -1
- package/lib-esm/datum/data1d/filter1d/zeroFilling.js +8 -8
- package/lib-esm/datum/data1d/filter1d/zeroFilling.js.map +1 -1
- package/lib-esm/datum/data1d/utils/mapPeaks.js +1 -1
- package/lib-esm/datum/data1d/utils/mapPeaks.js.map +1 -1
- package/lib-esm/datum/data2d/filter2d/fftDimension1.js +43 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension1.js.map +1 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension2.js +54 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension2.js.map +1 -0
- package/lib-esm/datum/data2d/utils/getShift.js +1 -1
- package/lib-esm/datum/data2d/utils/getShift.js.map +1 -1
- package/lib-esm/multiplicity/joinPatterns.js +1 -1
- package/lib-esm/multiplicity/joinPatterns.js.map +1 -1
- package/lib-esm/multiplicity/splitPatterns.js +1 -1
- package/lib-esm/multiplicity/splitPatterns.js.map +1 -1
- package/lib-esm/peaks/peaksFilterImpurities.js +7 -6
- package/lib-esm/peaks/peaksFilterImpurities.js.map +1 -1
- package/lib-esm/peaks/peaksToRanges.js +17 -17
- package/lib-esm/peaks/peaksToRanges.js.map +1 -1
- package/lib-esm/peaks/solventSuppression.js +11 -11
- package/lib-esm/peaks/solventSuppression.js.map +1 -1
- package/lib-esm/peaks/util/addMissingIDs.js.map +1 -1
- package/lib-esm/peaks/util/determineRealTop.js +32 -32
- package/lib-esm/peaks/util/determineRealTop.js.map +1 -1
- package/lib-esm/peaks/util/getKernel.js +4 -4
- package/lib-esm/peaks/util/getKernel.js.map +1 -1
- package/lib-esm/peaks/util/peakOptimizer.js +17 -17
- package/lib-esm/peaks/util/peakOptimizer.js.map +1 -1
- package/lib-esm/peaks/util/setIDs.js.map +1 -1
- package/lib-esm/prediction/predictAll.js +2 -1
- package/lib-esm/prediction/predictAll.js.map +1 -1
- package/lib-esm/prediction/predictCOSY.js +1 -1
- package/lib-esm/prediction/predictCOSY.js.map +1 -1
- package/lib-esm/prediction/predictCarbon.js +6 -6
- package/lib-esm/prediction/predictCarbon.js.map +1 -1
- package/lib-esm/prediction/predictHMBC.js +1 -1
- package/lib-esm/prediction/predictHMBC.js.map +1 -1
- package/lib-esm/prediction/predictHSQC.js +1 -1
- package/lib-esm/prediction/predictHSQC.js.map +1 -1
- package/lib-esm/prediction/predictProton.js +9 -9
- package/lib-esm/prediction/predictProton.js.map +1 -1
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js +3 -3
- package/lib-esm/prediction/utils/getFilteredIDiaIDs.js.map +1 -1
- package/lib-esm/prediction/utils/getNuclei.js.map +1 -1
- package/lib-esm/prediction/utils/predict2D.js +17 -17
- package/lib-esm/prediction/utils/predict2D.js.map +1 -1
- package/lib-esm/prediction/utils/queryByHOSE.js +1 -1
- package/lib-esm/prediction/utils/queryByHOSE.js.map +1 -1
- package/lib-esm/ranges/markSolventSignal.js +8 -8
- package/lib-esm/ranges/markSolventSignal.js.map +1 -1
- package/lib-esm/ranges/rangesToACS.js +6 -6
- package/lib-esm/ranges/rangesToACS.js.map +1 -1
- package/lib-esm/ranges/rangesToXY.js +6 -6
- package/lib-esm/ranges/rangesToXY.js.map +1 -1
- package/lib-esm/signal/signalJoinCouplings.js +19 -12
- package/lib-esm/signal/signalJoinCouplings.js.map +1 -1
- package/lib-esm/signal/signalMultiplicityPattern.js +2 -2
- package/lib-esm/signal/signalMultiplicityPattern.js.map +1 -1
- package/lib-esm/signals/addDummySignals.js +4 -4
- package/lib-esm/signals/addDummySignals.js.map +1 -1
- package/lib-esm/signals/hackSignalsToXY.js +1 -1
- package/lib-esm/signals/hackSignalsToXY.js.map +1 -1
- package/lib-esm/signals/optimization/getInternalSignals.js +6 -6
- package/lib-esm/signals/optimization/getInternalSignals.js.map +1 -1
- package/lib-esm/signals/optimization/getSumOfShapes.js +1 -1
- package/lib-esm/signals/optimization/getSumOfShapes.js.map +1 -1
- package/lib-esm/signals/optimizeSignals.js +3 -3
- package/lib-esm/signals/optimizeSignals.js.map +1 -1
- package/lib-esm/signals/signals2DToZ.js +3 -2
- package/lib-esm/signals/signals2DToZ.js.map +1 -1
- package/lib-esm/signals/signalsJoin.js +5 -5
- package/lib-esm/signals/signalsJoin.js.map +1 -1
- package/lib-esm/signals/signalsToFID.js +1 -1
- package/lib-esm/signals/signalsToFID.js.map +1 -1
- package/lib-esm/signals/signalsToRanges.js +3 -3
- package/lib-esm/signals/signalsToRanges.js.map +1 -1
- package/lib-esm/signals/signalsToXY.js +3 -3
- package/lib-esm/signals/signalsToXY.js.map +1 -1
- package/lib-esm/signals/simulation/signalsToSpinSystem.js +2 -2
- package/lib-esm/signals/simulation/signalsToSpinSystem.js.map +1 -1
- package/lib-esm/signals/simulation/simulate1D.js +2 -2
- package/lib-esm/signals/simulation/simulate1D.js.map +1 -1
- package/lib-esm/signals/simulation/simulateXYPeaks.js +15 -17
- package/lib-esm/signals/simulation/simulateXYPeaks.js.map +1 -1
- package/lib-esm/signals/simulation/splitSpinSystem.js +26 -23
- package/lib-esm/signals/simulation/splitSpinSystem.js.map +1 -1
- package/lib-esm/signals/utils/jAnalyzer.js +38 -38
- package/lib-esm/signals/utils/jAnalyzer.js.map +1 -1
- package/lib-esm/utilities/getFrequency.js +1 -1
- package/lib-esm/utilities/getFrequency.js.map +1 -1
- package/lib-esm/utilities/resurrectRange.js +1 -1
- package/lib-esm/utilities/resurrectRange.js.map +1 -1
- package/lib-esm/xy/xyAutoPeaksPicking.js +3 -3
- package/lib-esm/xy/xyAutoPeaksPicking.js.map +1 -1
- package/lib-esm/xyz/quadrature.js +6 -6
- package/lib-esm/xyz/quadrature.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/digitalFilter.js +3 -3
- package/lib-esm/xyz/util/fft2d/digitalFilter.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/fftDirectDimension.js +4 -3
- package/lib-esm/xyz/util/fft2d/fftDirectDimension.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/fftIndirectDimension.js +5 -4
- package/lib-esm/xyz/util/fft2d/fftIndirectDimension.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/removeDCOffset.js +1 -1
- package/lib-esm/xyz/util/fft2d/removeDCOffset.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/zeroFilling.js +4 -6
- package/lib-esm/xyz/util/fft2d/zeroFilling.js.map +1 -1
- package/lib-esm/xyz/util/formatZone.js +3 -3
- package/lib-esm/xyz/util/formatZone.js.map +1 -1
- package/lib-esm/xyz/util/getMinMaxXY.js +19 -0
- package/lib-esm/xyz/util/getMinMaxXY.js.map +1 -0
- package/lib-esm/xyz/util/padData.js +7 -7
- package/lib-esm/xyz/util/padData.js.map +1 -1
- package/lib-esm/xyz/xyzAutoSignalsPicking.js +19 -18
- package/lib-esm/xyz/xyzAutoSignalsPicking.js.map +1 -1
- package/lib-esm/xyz/xyzBidimensionalFFT.js +1 -18
- package/lib-esm/xyz/xyzBidimensionalFFT.js.map +1 -1
- package/lib-esm/xyz/xyzJResAnalyzer.js +21 -21
- package/lib-esm/xyz/xyzJResAnalyzer.js.map +1 -1
- package/package.json +5 -5
- package/src/apodization/compose.ts +1 -1
- package/src/assignment/get13CAssignments.ts +6 -3
- package/src/assignment/get1HAssignments.ts +7 -6
- package/src/assignment/getAssignments.ts +7 -7
- package/src/assignment/nmrAssigment.ts +2 -2
- package/src/assignment/utils/addSolution.ts +45 -0
- package/src/assignment/utils/{getAssignment → generalAssignment}/buildAssignments.ts +29 -36
- package/src/assignment/utils/{getAssignment → generalAssignment}/checkIDs.ts +6 -6
- package/src/assignment/utils/{getAssignment → generalAssignment}/createMapPossibleAssignment.ts +10 -14
- package/src/assignment/utils/{getAssignment → generalAssignment}/exploreTree.ts +7 -8
- package/src/assignment/utils/{getAssignment → generalAssignment}/formatData.ts +5 -5
- package/src/assignment/utils/{getAssignment → generalAssignment}/getTargetsAndCorrelations.ts +3 -5
- package/src/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.ts +2 -5
- package/src/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.ts +8 -8
- package/src/assignment/utils/{getAssignment → generalAssignment}/partialScore.ts +25 -29
- package/src/assignment/utils/{buildAssignments.ts → oneDimensionalAssignment/buildAssignments.ts} +6 -8
- package/src/assignment/utils/{createMapPossibleAssignments.ts → oneDimensionalAssignment/createMapPossibleAssignments.ts} +9 -9
- package/src/assignment/utils/{exploreTreeRec.ts → oneDimensionalAssignment/exploreTreeRec.ts} +8 -9
- package/src/assignment/utils/{partialScore.ts → oneDimensionalAssignment/partialScore.ts} +10 -12
- package/src/constants/SignalsKinds.ts +1 -1
- package/src/constants/couplingValues.ts +1 -1
- package/src/constants/impurities.ts +14 -15
- package/src/databases/getDatabase.ts +1 -1
- package/src/datum/Filters.ts +4 -0
- package/src/datum/FiltersManager.ts +3 -3
- package/src/datum/MatrixOptions.ts +1 -1
- package/src/datum/data1d/Entry1D.ts +1 -1
- package/src/datum/data1d/filter1d/baselineCorrection.ts +4 -4
- package/src/datum/data1d/filter1d/digitalFilter.ts +2 -2
- package/src/datum/data1d/filter1d/fft.ts +7 -7
- package/src/datum/data1d/filter1d/phaseCorrection.ts +3 -3
- package/src/datum/data1d/filter1d/signalProcessing.ts +1 -1
- package/src/datum/data1d/filter1d/utils/padDataToNextPowerOfTwo.ts +2 -2
- package/src/datum/data1d/filter1d/zeroFilling.ts +10 -9
- package/src/datum/data1d/utils/mapPeaks.ts +1 -1
- package/src/datum/data2d/Entry2D.ts +1 -1
- package/src/datum/data2d/filter2d/fftDimension1.ts +61 -0
- package/src/datum/data2d/filter2d/fftDimension2.ts +72 -0
- package/src/datum/data2d/utils/getShift.ts +1 -1
- package/src/ml-tree-set.d.ts +1 -1
- package/src/multiplicity/joinPatterns.ts +3 -1
- package/src/multiplicity/splitPatterns.ts +1 -1
- package/src/peaks/peaksFilterImpurities.ts +7 -6
- package/src/peaks/peaksToRanges.ts +19 -18
- package/src/peaks/solventSuppression.ts +11 -11
- package/src/peaks/util/addMissingIDs.ts +1 -1
- package/src/peaks/util/determineRealTop.ts +32 -32
- package/src/peaks/util/getKernel.ts +4 -4
- package/src/peaks/util/peakOptimizer.ts +17 -17
- package/src/peaks/util/setIDs.ts +6 -4
- package/src/prediction/dataStructure.ts +1 -3
- package/src/prediction/predictAll.ts +3 -2
- package/src/prediction/predictCOSY.ts +1 -1
- package/src/prediction/predictCarbon.ts +6 -6
- package/src/prediction/predictHMBC.ts +1 -1
- package/src/prediction/predictHSQC.ts +1 -1
- package/src/prediction/predictProton.ts +9 -9
- package/src/prediction/utils/getFilteredIDiaIDs.ts +3 -3
- package/src/prediction/utils/getNuclei.ts +2 -2
- package/src/prediction/utils/predict2D.ts +21 -25
- package/src/prediction/utils/queryByHOSE.ts +1 -1
- package/src/ranges/markSolventSignal.ts +8 -8
- package/src/ranges/rangesToACS.ts +6 -6
- package/src/ranges/rangesToXY.ts +6 -6
- package/src/signal/signalJoinCouplings.ts +22 -16
- package/src/signal/signalMultiplicityPattern.ts +2 -2
- package/src/signals/addDummySignals.ts +4 -4
- package/src/signals/hackSignalsToXY.ts +1 -1
- package/src/signals/optimization/getInternalSignals.ts +6 -6
- package/src/signals/optimization/getSumOfShapes.ts +1 -1
- package/src/signals/optimizeSignals.ts +3 -3
- package/src/signals/signals2DToZ.ts +4 -8
- package/src/signals/signalsJoin.ts +5 -5
- package/src/signals/signalsToFID.ts +1 -1
- package/src/signals/signalsToRanges.ts +3 -3
- package/src/signals/signalsToXY.ts +3 -3
- package/src/signals/simulation/signalsToSpinSystem.ts +3 -5
- package/src/signals/simulation/simulate1D.ts +2 -2
- package/src/signals/simulation/simulateXYPeaks.ts +16 -17
- package/src/signals/simulation/splitSpinSystem.ts +28 -25
- package/src/signals/utils/jAnalyzer.ts +38 -38
- package/src/types/Integrals.ts +1 -1
- package/src/types/Peaks/Peaks.ts +1 -1
- package/src/types/Ranges/Ranges.ts +1 -1
- package/src/types/Zones/Zone.ts +1 -1
- package/src/types/Zones/Zones.ts +1 -1
- package/src/utilities/getFrequency.ts +1 -1
- package/src/utilities/resurrectRange.ts +1 -1
- package/src/xy/xyAutoPeaksPicking.ts +3 -3
- package/src/xyz/quadrature.ts +6 -6
- package/src/xyz/util/fft2d/digitalFilter.ts +3 -3
- package/src/xyz/util/fft2d/fftDirectDimension.ts +4 -7
- package/src/xyz/util/fft2d/fftIndirectDimension.ts +6 -8
- package/src/xyz/util/fft2d/removeDCOffset.ts +1 -1
- package/src/xyz/util/fft2d/zeroFilling.ts +5 -6
- package/src/xyz/util/formatZone.ts +3 -3
- package/src/xyz/util/getMinMaxXY.ts +19 -0
- package/src/xyz/util/padData.ts +7 -7
- package/src/xyz/xyzAutoSignalsPicking.ts +20 -19
- package/src/xyz/xyzBidimensionalFFT.ts +1 -20
- package/src/xyz/xyzJResAnalyzer.ts +21 -21
- package/lib/assignment/utils/buildAssignments.js.map +0 -1
- package/lib/assignment/utils/createMapPossibleAssignments.js.map +0 -1
- package/lib/assignment/utils/exploreTreeRec.js.map +0 -1
- package/lib/assignment/utils/getAssignment/buildAssignments.js.map +0 -1
- package/lib/assignment/utils/getAssignment/checkIDs.js.map +0 -1
- package/lib/assignment/utils/getAssignment/createMapPossibleAssignment.js.map +0 -1
- package/lib/assignment/utils/getAssignment/exploreTree.js.map +0 -1
- package/lib/assignment/utils/getAssignment/formatData.js.map +0 -1
- package/lib/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js.map +0 -1
- package/lib/assignment/utils/getAssignment/getTargetsAndCorrelations.js.map +0 -1
- package/lib/assignment/utils/getAssignment/getWorkFlow.js.map +0 -1
- package/lib/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js.map +0 -1
- package/lib/assignment/utils/getAssignment/isSpectraData1D.js.map +0 -1
- package/lib/assignment/utils/getAssignment/partialScore.js.map +0 -1
- package/lib/assignment/utils/getAssignment/searchIndices.js.map +0 -1
- package/lib/assignment/utils/partialScore.js.map +0 -1
- package/lib-esm/assignment/utils/buildAssignments.js.map +0 -1
- package/lib-esm/assignment/utils/createMapPossibleAssignments.js.map +0 -1
- package/lib-esm/assignment/utils/exploreTreeRec.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/buildAssignments.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/checkIDs.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/createMapPossibleAssignment.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/exploreTree.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/formatData.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/getIntegrationOfAttachedProtons.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/getTargetsAndCorrelations.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/getWorkFlow.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/groupCarbonTargetByIntegrationZone.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/isSpectraData1D.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/partialScore.js.map +0 -1
- package/lib-esm/assignment/utils/getAssignment/searchIndices.js.map +0 -1
- package/lib-esm/assignment/utils/partialScore.js.map +0 -1
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/checkIDs.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/formatData.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.js +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.js +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/groupCarbonTargetByIntegrationZone.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.js +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/searchIndices.d.ts +0 -0
- /package/lib/assignment/utils/{getAssignment → generalAssignment}/searchIndices.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/getWorkFlow.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.js +0 -0
- /package/lib-esm/assignment/utils/{getAssignment → generalAssignment}/searchIndices.js +0 -0
- /package/src/assignment/utils/{getAssignment → generalAssignment}/getIntegrationOfAttachedProtons.ts +0 -0
- /package/src/assignment/utils/{getAssignment → generalAssignment}/isSpectraData1D.ts +0 -0
- /package/src/assignment/utils/{getAssignment → generalAssignment}/searchIndices.ts +0 -0
package/src/ml-tree-set.d.ts
CHANGED
|
@@ -32,7 +32,9 @@ export function joinPatterns(
|
|
|
32
32
|
}, 0);
|
|
33
33
|
|
|
34
34
|
if (!couplingPatterns[sum]) {
|
|
35
|
-
throw new Error(
|
|
35
|
+
throw new Error(
|
|
36
|
+
`The joined pattern from ${patterns.join(',')} doesn't exist`,
|
|
37
|
+
);
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
return options?.acsFormat ? couplingACSPatterns[sum] : couplingPatterns[sum];
|
|
@@ -15,7 +15,7 @@ possiblePatterns = possiblePatterns.sort((a, b) => b.length - a.length);
|
|
|
15
15
|
export function splitPatterns(multiplet: string) {
|
|
16
16
|
if (/^\s*$/.exec(multiplet)) return [];
|
|
17
17
|
const regexp = new RegExp(possiblePatterns.join('|'), 'g');
|
|
18
|
-
|
|
18
|
+
const result = multiplet.match(regexp);
|
|
19
19
|
if (result) return result.map((entry) => entry.trim());
|
|
20
20
|
return [multiplet];
|
|
21
21
|
}
|
|
@@ -38,14 +38,15 @@ export function peaksFilterImpurities<T extends NMRPeak1D>(
|
|
|
38
38
|
peakList: T[],
|
|
39
39
|
options: OptionsPeaksFilterImpurities = {},
|
|
40
40
|
) {
|
|
41
|
-
|
|
41
|
+
const { error = 0.025, remove = false } = options;
|
|
42
42
|
|
|
43
|
-
if (solvent) {
|
|
43
|
+
if (options.solvent) {
|
|
44
|
+
let { solvent } = options;
|
|
44
45
|
if (solvent === '(cd3)2so') solvent = 'dmso';
|
|
45
46
|
if (solvent === 'meod') solvent = 'cd3od';
|
|
46
|
-
|
|
47
|
-
for (
|
|
48
|
-
|
|
47
|
+
const solventImpurities = impurities[solvent];
|
|
48
|
+
for (const impurity of toCheck) {
|
|
49
|
+
const impurityShifts = solventImpurities[impurity];
|
|
49
50
|
checkImpurity(peakList, impurityShifts, {
|
|
50
51
|
error,
|
|
51
52
|
remove,
|
|
@@ -61,7 +62,7 @@ function checkImpurity<T extends NMRPeak1D>(
|
|
|
61
62
|
impurity: ImpuritySignal[],
|
|
62
63
|
options: OptionsCheckImpurity,
|
|
63
64
|
) {
|
|
64
|
-
|
|
65
|
+
const { name, error, remove } = options;
|
|
65
66
|
let j, tolerance, difference;
|
|
66
67
|
let i = impurity.length;
|
|
67
68
|
while (i--) {
|
|
@@ -122,7 +122,7 @@ export function peaksToRanges(
|
|
|
122
122
|
peakList: NMRPeak1DIntern[],
|
|
123
123
|
options: OptionsPeaksToRanges = {},
|
|
124
124
|
): NMRRange[] {
|
|
125
|
-
|
|
125
|
+
const {
|
|
126
126
|
integrationSum = 100,
|
|
127
127
|
joinOverlapRanges = true,
|
|
128
128
|
clean = 0.4,
|
|
@@ -134,7 +134,7 @@ export function peaksToRanges(
|
|
|
134
134
|
nucleus = '1H',
|
|
135
135
|
} = options;
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
const signalOptions = {
|
|
138
138
|
integrationSum,
|
|
139
139
|
integralType,
|
|
140
140
|
frequencyCluster,
|
|
@@ -149,7 +149,7 @@ export function peaksToRanges(
|
|
|
149
149
|
data.y = data.y.reverse();
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
const signals = detectSignals(data, peakList, signalOptions);
|
|
153
153
|
if (clean) {
|
|
154
154
|
for (let i = 0; i < signals.length; i++) {
|
|
155
155
|
if (Math.abs(signals[i].integralData.value) < clean) {
|
|
@@ -162,7 +162,7 @@ export function peaksToRanges(
|
|
|
162
162
|
let nHi, sum;
|
|
163
163
|
for (let i = 0; i < signals.length; i++) {
|
|
164
164
|
signals[i] = jAnalyzer.compilePattern(signals[i]);
|
|
165
|
-
|
|
165
|
+
const signal = signals[i];
|
|
166
166
|
if (
|
|
167
167
|
signal.maskPattern &&
|
|
168
168
|
signal.multiplicity !== 'm' &&
|
|
@@ -172,11 +172,11 @@ export function peaksToRanges(
|
|
|
172
172
|
// Create a new signal with the removed peaks
|
|
173
173
|
nHi = 0;
|
|
174
174
|
sum = 0;
|
|
175
|
-
|
|
175
|
+
const peaksO = [];
|
|
176
176
|
for (let j = signal.maskPattern.length - 1; j >= 0; j--) {
|
|
177
177
|
sum += computeArea(signal.peaks[j], frequency);
|
|
178
178
|
if (!signal.maskPattern[j]) {
|
|
179
|
-
|
|
179
|
+
const peakR = signal.peaks.splice(j, 1)[0];
|
|
180
180
|
peaksO.push({
|
|
181
181
|
x: peakR.x,
|
|
182
182
|
y: peakR.intensity,
|
|
@@ -192,12 +192,12 @@ export function peaksToRanges(
|
|
|
192
192
|
if (peaksO.length > 0) {
|
|
193
193
|
nHi = (nHi * signal.integralData.value) / sum;
|
|
194
194
|
signal.integralData.value -= nHi;
|
|
195
|
-
|
|
195
|
+
const peaks1 = [];
|
|
196
196
|
for (let j = peaksO.length - 1; j >= 0; j--) {
|
|
197
197
|
peaks1.push(peaksO[j]);
|
|
198
198
|
}
|
|
199
199
|
signalOptions.integrationSum = Math.abs(nHi);
|
|
200
|
-
|
|
200
|
+
const ranges = detectSignals(data, peaks1, signalOptions);
|
|
201
201
|
|
|
202
202
|
for (const range of ranges) {
|
|
203
203
|
signals.push(range);
|
|
@@ -223,7 +223,7 @@ export function peaksToRanges(
|
|
|
223
223
|
|
|
224
224
|
let ranges: NMRRange[] = [];
|
|
225
225
|
for (let i = 0; i < signals.length; i++) {
|
|
226
|
-
|
|
226
|
+
const signal = signals[i];
|
|
227
227
|
const range: NMRRange = {
|
|
228
228
|
id: generateID(),
|
|
229
229
|
from: signal.integralData.from,
|
|
@@ -277,27 +277,28 @@ export function detectSignals(
|
|
|
277
277
|
peakList: NMRPeak1DIntern[],
|
|
278
278
|
options: OptionsDetectSignals = {},
|
|
279
279
|
): SignalIntern[] {
|
|
280
|
-
|
|
280
|
+
const {
|
|
281
|
+
frequencyCluster = 16,
|
|
281
282
|
integrationSum = 100,
|
|
282
283
|
integralType = 'sum',
|
|
283
|
-
frequencyCluster = 16,
|
|
284
284
|
frequency = 400,
|
|
285
285
|
nucleus = '1H',
|
|
286
286
|
} = options;
|
|
287
287
|
|
|
288
288
|
let signal1D: SignalIntern = assignSignal(peakList[0], frequency, nucleus);
|
|
289
289
|
let peaks;
|
|
290
|
-
|
|
290
|
+
const signals = [];
|
|
291
291
|
let prevPeak = { x: Number.MIN_SAFE_INTEGER };
|
|
292
292
|
|
|
293
|
-
frequencyCluster
|
|
293
|
+
const distantToClustering = frequencyCluster / frequency;
|
|
294
|
+
|
|
294
295
|
for (const peak of peakList) {
|
|
295
|
-
if (Math.abs(peak.x - prevPeak.x) >
|
|
296
|
+
if (Math.abs(peak.x - prevPeak.x) > distantToClustering) {
|
|
296
297
|
signal1D = assignSignal(peak, frequency, nucleus);
|
|
297
298
|
if (peak.kind) signal1D.kind = peak.kind;
|
|
298
299
|
signals.push(signal1D);
|
|
299
300
|
} else {
|
|
300
|
-
|
|
301
|
+
const tmp = peak.x + peak.width / frequency;
|
|
301
302
|
signal1D.stopX = Math.max(signal1D.stopX, tmp);
|
|
302
303
|
signal1D.startX = Math.min(signal1D.startX, tmp);
|
|
303
304
|
signal1D.nbPeaks++;
|
|
@@ -318,14 +319,14 @@ export function detectSignals(
|
|
|
318
319
|
}
|
|
319
320
|
prevPeak = peak;
|
|
320
321
|
}
|
|
321
|
-
for (
|
|
322
|
+
for (const signal of signals) {
|
|
322
323
|
peaks = signal.peaks;
|
|
323
|
-
|
|
324
|
+
const integration = signal.integralData;
|
|
324
325
|
let chemicalShift = 0;
|
|
325
326
|
let integralPeaks = 0;
|
|
326
327
|
|
|
327
328
|
for (const peak of peaks) {
|
|
328
|
-
|
|
329
|
+
const area = computeArea(peak, frequency);
|
|
329
330
|
chemicalShift += peak.x * area;
|
|
330
331
|
integralPeaks += area;
|
|
331
332
|
}
|
|
@@ -25,16 +25,16 @@ export function solventSuppression<T extends NMRPeak1D>(
|
|
|
25
25
|
const { markSolventPeaks = false, solventZoneExtension = 1.2 } = options;
|
|
26
26
|
|
|
27
27
|
for (const solventSignal of solvent) {
|
|
28
|
-
|
|
28
|
+
const solventXYPeaks = solventSignal.peaks
|
|
29
29
|
? solventSignal.peaks
|
|
30
30
|
: getSolventPeaks(solventSignal);
|
|
31
31
|
solventXYPeaks.sort((a, b) => a.x - b.x);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
const upIndex = xFindClosestIndex(
|
|
34
34
|
xValues,
|
|
35
35
|
solventXYPeaks[solventXYPeaks.length - 1].x + solventZoneExtension,
|
|
36
36
|
);
|
|
37
|
-
|
|
37
|
+
const lowIndex = xFindClosestIndex(
|
|
38
38
|
xValues,
|
|
39
39
|
solventXYPeaks[0].x - solventZoneExtension,
|
|
40
40
|
);
|
|
@@ -45,7 +45,7 @@ export function solventSuppression<T extends NMRPeak1D>(
|
|
|
45
45
|
const amplitudeResiduals = [];
|
|
46
46
|
const deltaResiduals = [];
|
|
47
47
|
const positionResiduals = [];
|
|
48
|
-
for (
|
|
48
|
+
for (const peak of nearPeaks) {
|
|
49
49
|
const { peaks: shiftedSolventPeaks, delta: currentDelta } =
|
|
50
50
|
getShiftedSolventPeaks(peak, solventSignal, solventXYPeaks);
|
|
51
51
|
|
|
@@ -88,7 +88,7 @@ export function solventSuppression<T extends NMRPeak1D>(
|
|
|
88
88
|
|
|
89
89
|
let minIndex = -1;
|
|
90
90
|
let minScore = Number.MAX_SAFE_INTEGER;
|
|
91
|
-
|
|
91
|
+
const score = [];
|
|
92
92
|
for (let i = 0; i < deltaResiduals.length; i++) {
|
|
93
93
|
const value =
|
|
94
94
|
(amplitudeResiduals[i] / maxAmplitude +
|
|
@@ -125,12 +125,12 @@ export function solventSuppression<T extends NMRPeak1D>(
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
if (markSolventPeaks) {
|
|
128
|
-
for (
|
|
128
|
+
for (const index of rowAssignments) {
|
|
129
129
|
peaks[index + lowIndex].kind = 'solvent';
|
|
130
130
|
}
|
|
131
131
|
} else {
|
|
132
132
|
rowAssignments.sort((a, b) => b - a);
|
|
133
|
-
for (
|
|
133
|
+
for (const index of rowAssignments) {
|
|
134
134
|
peaks.splice(index + lowIndex, 1);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
@@ -143,8 +143,8 @@ function getSolventPeaks(
|
|
|
143
143
|
signal: NMRSignal1D,
|
|
144
144
|
options: { frequency?: number; maxClusterSize?: number } = {},
|
|
145
145
|
) {
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
const signals = addDummySignals([signal]);
|
|
147
|
+
const spinSystem = signalsToSpinSystem(signals);
|
|
148
148
|
|
|
149
149
|
const { frequency = 400, maxClusterSize = 8 } = options;
|
|
150
150
|
|
|
@@ -175,7 +175,7 @@ function getShiftedSolventPeaks<T extends PointXY>(
|
|
|
175
175
|
shiftedSolventPeaks[0].y,
|
|
176
176
|
);
|
|
177
177
|
let currentDelta = 0;
|
|
178
|
-
for (
|
|
178
|
+
for (const shiftedSolventPeak of shiftedSolventPeaks) {
|
|
179
179
|
shiftedSolventPeak.x += deltaPPM;
|
|
180
180
|
shiftedSolventPeak.y /= maxIntensity;
|
|
181
181
|
currentDelta += shiftedSolventPeak.x;
|
|
@@ -194,7 +194,7 @@ function getClosestPeaks(shiftedSolventPeaks: PointXY[], nearPeaks: PointXY[]) {
|
|
|
194
194
|
|
|
195
195
|
const assignmentPeaks = [];
|
|
196
196
|
let maxValue = Number.MIN_SAFE_INTEGER;
|
|
197
|
-
for (
|
|
197
|
+
for (const index of rowAssignments) {
|
|
198
198
|
if (maxValue < nearPeaks[index].y) maxValue = nearPeaks[index].y;
|
|
199
199
|
assignmentPeaks.push({ ...nearPeaks[index] });
|
|
200
200
|
}
|
|
@@ -10,13 +10,13 @@ const direction16Y = [-2, -1, 0, 1, 2, -2, 2, -2, 2, -2, 2, -2, -1, 0, 1, 2];
|
|
|
10
10
|
type Data = number[] | Float64Array;
|
|
11
11
|
|
|
12
12
|
export function determineRealTop<T extends Peak2D>(peaks: T[], options: any) {
|
|
13
|
-
|
|
13
|
+
const { nCols, absoluteData, originalData, minX, maxX, minY, maxY } = options;
|
|
14
14
|
for (let i = 0; i < peaks.length; i++) {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const xIndex = Math.round(peaks[i].x);
|
|
16
|
+
const yIndex = Math.round(peaks[i].y);
|
|
17
17
|
|
|
18
18
|
let currentIndex = xIndex + yIndex * nCols;
|
|
19
|
-
|
|
19
|
+
const { index, isMax } = determineMax(absoluteData, {
|
|
20
20
|
xIndex,
|
|
21
21
|
yIndex,
|
|
22
22
|
nCols,
|
|
@@ -31,7 +31,7 @@ export function determineRealTop<T extends Peak2D>(peaks: T[], options: any) {
|
|
|
31
31
|
shell: 2,
|
|
32
32
|
}).index;
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
const realTopCoordinates = fitGaussian(originalData, {
|
|
35
35
|
nCols,
|
|
36
36
|
index: currentIndex,
|
|
37
37
|
minY,
|
|
@@ -49,21 +49,21 @@ function determineMax(
|
|
|
49
49
|
data: Data,
|
|
50
50
|
options: { xIndex: number; yIndex: number; shell: number; nCols: number },
|
|
51
51
|
) {
|
|
52
|
-
|
|
52
|
+
const { xIndex, yIndex, shell, nCols } = options;
|
|
53
53
|
let currentIndex = xIndex + yIndex * nCols;
|
|
54
|
-
|
|
54
|
+
const [directionX, directionY] =
|
|
55
55
|
shell > 1 ? [direction16X, direction16Y] : [direction8X, direction8Y];
|
|
56
56
|
|
|
57
57
|
let isMax = false;
|
|
58
58
|
for (let i = 0; i < directionX.length; i++) {
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
const c = xIndex + directionX[i];
|
|
60
|
+
const r = yIndex + directionY[i];
|
|
61
61
|
if (data[c + r * nCols] >= data[currentIndex]) {
|
|
62
62
|
isMax = true;
|
|
63
|
-
|
|
63
|
+
const candidateIndex = c + r * nCols;
|
|
64
64
|
for (let k = 0; k < direction8Y.length; k++) {
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
const nc = c + direction8X[k];
|
|
66
|
+
const nr = r + direction8Y[k];
|
|
67
67
|
if (data[nc + nr * nCols] > data[candidateIndex]) {
|
|
68
68
|
isMax = false;
|
|
69
69
|
break;
|
|
@@ -89,25 +89,25 @@ function fitGaussian(
|
|
|
89
89
|
maxX: number;
|
|
90
90
|
},
|
|
91
91
|
) {
|
|
92
|
-
|
|
92
|
+
const { nCols, index, minY, maxY, minX, maxX } = options;
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
const nRows = data.length / nCols;
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
const intervalX = (maxX - minX) / (nCols - 1);
|
|
97
|
+
const intervalY = (maxY - minY) / (nRows - 1);
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
const col = index % nCols;
|
|
100
|
+
const row = (index - col) / nCols;
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
const newCol = 1;
|
|
103
|
+
const newRow = 1;
|
|
104
104
|
|
|
105
105
|
let max = Number.MIN_SAFE_INTEGER;
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
const z = new Array(direction8X.length + 1);
|
|
107
|
+
const xAxis = new Array(direction8X.length + 1);
|
|
108
108
|
for (let i = -1, xi = 0; i < 2; i++) {
|
|
109
109
|
for (let j = -1; j < 2; j++, xAxis[xi] = xi++) {
|
|
110
|
-
|
|
110
|
+
const value = data[col + j + (row + i) * nCols];
|
|
111
111
|
if (max < value) max = value;
|
|
112
112
|
z[newCol + j + (newRow + i) * 3] = value;
|
|
113
113
|
}
|
|
@@ -115,13 +115,13 @@ function fitGaussian(
|
|
|
115
115
|
|
|
116
116
|
for (let i = 0; i < z.length; i++) z[i] /= max;
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
118
|
+
const maxValues = [newCol + 1, newRow + 1, 1.5, 1, 1];
|
|
119
|
+
const minValues = [newCol - 1, newRow - 1, -1.5, 0.001, 0.001];
|
|
120
|
+
const initialValues = [newCol, newRow, z[newCol + newRow * 3], 0.2, 0.2];
|
|
121
|
+
const gradientDifference = [1e-4, 1e-4, 1e-3, 1e-3, 1e-3];
|
|
122
|
+
const func = paramGaussian2D(intervalX, intervalY, 3);
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
const pFit = levenbergMarquardt({ x: xAxis, y: z }, func, {
|
|
125
125
|
damping: 1.5,
|
|
126
126
|
maxIterations: 100,
|
|
127
127
|
errorTolerance: 1e-8,
|
|
@@ -142,10 +142,10 @@ function paramGaussian2D(intervalX: number, intervalY: number, nCols: number) {
|
|
|
142
142
|
const gaussian2D = new Gaussian2D();
|
|
143
143
|
return (p: number[]) => {
|
|
144
144
|
return (t: number) => {
|
|
145
|
-
|
|
145
|
+
const nL = p.length / 5;
|
|
146
146
|
let result = 0;
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
const xIndex = t % nCols;
|
|
148
|
+
const yIndex = (t - xIndex) / nCols;
|
|
149
149
|
for (let i = 0; i < nL; i++) {
|
|
150
150
|
gaussian2D.fwhm = { x: p[i + 3 * nL], y: p[i + 4 * nL] };
|
|
151
151
|
result +=
|
|
@@ -4,13 +4,13 @@ export interface GetKernelOptions {
|
|
|
4
4
|
yLength?: number;
|
|
5
5
|
}
|
|
6
6
|
export function getKernel(options: GetKernelOptions = {}) {
|
|
7
|
-
|
|
7
|
+
const { sigma = 1.4, xLength = 9, yLength = 9 } = options;
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
const factor = -40 / laplacianOfGaussian(0, 0, sigma);
|
|
10
10
|
|
|
11
11
|
const xCenter = (xLength - 1) / 2;
|
|
12
12
|
const yCenter = (yLength - 1) / 2;
|
|
13
|
-
|
|
13
|
+
const matrix = new Array(xLength);
|
|
14
14
|
for (let x = 0; x < xLength; x++) {
|
|
15
15
|
matrix[x] = new Array(yLength);
|
|
16
16
|
for (let y = 0; y < yLength; y++) {
|
|
@@ -23,6 +23,6 @@ export function getKernel(options: GetKernelOptions = {}) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
const laplacianOfGaussian = (x: number, y: number, sigma: number) => {
|
|
26
|
-
|
|
26
|
+
const factor = -(Math.pow(x, 2) + Math.pow(y, 2)) / 2 / Math.pow(sigma, 2);
|
|
27
27
|
return -(1 / Math.PI / Math.pow(sigma, 4)) * (1 + factor) * Math.exp(factor);
|
|
28
28
|
};
|
|
@@ -2,8 +2,8 @@ import type { Peak2D } from 'ml-matrix-peaks-finder';
|
|
|
2
2
|
|
|
3
3
|
import type { NMRSignal2D } from '../../xyz/NMRSignal2D';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const diagonalError = 0.05;
|
|
6
|
+
const tolerance = 0.05;
|
|
7
7
|
|
|
8
8
|
export function clean(peaks: Peak2D[], threshold: number) {
|
|
9
9
|
let max = Number.NEGATIVE_INFINITY;
|
|
@@ -23,18 +23,18 @@ export function clean(peaks: Peak2D[], threshold: number) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export function enhanceSymmetry(signals: NMRSignal2D[]) {
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
const properties = initializeProperties(signals);
|
|
27
|
+
const output = signals.slice();
|
|
28
28
|
|
|
29
29
|
// First step of the optimization: Symmetry validation
|
|
30
30
|
let hits;
|
|
31
31
|
for (let i = output.length - 1; i >= 0; i--) {
|
|
32
|
-
|
|
32
|
+
const signal = output[i];
|
|
33
33
|
if (signal.peaks && signal.peaks.length > 1) {
|
|
34
34
|
properties[i][1]++;
|
|
35
35
|
}
|
|
36
36
|
if (properties[i][0] === 1) {
|
|
37
|
-
|
|
37
|
+
const index = exist(output, properties, signal, -1, true);
|
|
38
38
|
if (index >= 0) {
|
|
39
39
|
properties[i][1] += 2;
|
|
40
40
|
properties[index][1] += 2;
|
|
@@ -43,7 +43,7 @@ export function enhanceSymmetry(signals: NMRSignal2D[]) {
|
|
|
43
43
|
}
|
|
44
44
|
// Second step of the optimization: Diagonal image existence
|
|
45
45
|
for (let i = output.length - 1; i >= 0; i--) {
|
|
46
|
-
|
|
46
|
+
const signal = output[i];
|
|
47
47
|
if (properties[i][0] === 0) {
|
|
48
48
|
hits = checkCrossPeaks(output, properties, signal, true);
|
|
49
49
|
properties[i][1] += hits;
|
|
@@ -69,7 +69,7 @@ export function enhanceSymmetry(signals: NMRSignal2D[]) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
const toReturn = new Array(count);
|
|
73
73
|
count--;
|
|
74
74
|
for (let i = output.length - 1; i >= 0; i--) {
|
|
75
75
|
if (
|
|
@@ -99,7 +99,7 @@ function completeMissingIfNeeded(
|
|
|
99
99
|
thisProp: number[],
|
|
100
100
|
) {
|
|
101
101
|
// Check for symmetry
|
|
102
|
-
|
|
102
|
+
const index = exist(output, properties, thisSignal, -thisProp[0], true);
|
|
103
103
|
let addedPeaks = 0;
|
|
104
104
|
let newSignal: any;
|
|
105
105
|
let tmpProp = null;
|
|
@@ -189,8 +189,8 @@ function checkCrossPeaks(
|
|
|
189
189
|
) {
|
|
190
190
|
let hits = 0;
|
|
191
191
|
let shift = signal.x.delta * 4;
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
const crossPeaksX = [];
|
|
193
|
+
const crossPeaksY = [];
|
|
194
194
|
let cross;
|
|
195
195
|
for (let i = output.length - 1; i >= 0; i--) {
|
|
196
196
|
cross = output[i];
|
|
@@ -240,15 +240,15 @@ function exist(
|
|
|
240
240
|
if (properties[i][0] === type) {
|
|
241
241
|
if (distanceTo(signal, output[i], symmetricSearch) < tolerance) {
|
|
242
242
|
if (!symmetricSearch) {
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
const shiftX = (output[i].x.delta + signal.x.delta) / 2.0;
|
|
244
|
+
const shiftY = (output[i].y.delta + signal.y.delta) / 2.0;
|
|
245
245
|
output[i].x.delta = shiftX;
|
|
246
246
|
output[i].y.delta = shiftY;
|
|
247
247
|
signal.x.delta = shiftX;
|
|
248
248
|
signal.y.delta = shiftY;
|
|
249
249
|
} else {
|
|
250
|
-
|
|
251
|
-
|
|
250
|
+
const shiftX = signal.x.delta;
|
|
251
|
+
const shiftY = output[i].x.delta;
|
|
252
252
|
output[i].y.delta = shiftX;
|
|
253
253
|
signal.y.delta = shiftY;
|
|
254
254
|
}
|
|
@@ -267,13 +267,13 @@ function exist(
|
|
|
267
267
|
* @private
|
|
268
268
|
*/
|
|
269
269
|
function initializeProperties(signals: NMRSignal2D[]) {
|
|
270
|
-
|
|
270
|
+
const signalsProperties = new Array(signals.length);
|
|
271
271
|
for (let i = signals.length - 1; i >= 0; i--) {
|
|
272
272
|
signalsProperties[i] = [0, 0];
|
|
273
273
|
// We check if it is a diagonal peak
|
|
274
274
|
if (Math.abs(signals[i].x.delta - signals[i].y.delta) <= diagonalError) {
|
|
275
275
|
signalsProperties[i][1] = 1;
|
|
276
|
-
|
|
276
|
+
const shift = (signals[i].x.delta * 2 + signals[i].y.delta) / 3.0;
|
|
277
277
|
signals[i].x.delta = shift;
|
|
278
278
|
signals[i].y.delta = shift;
|
|
279
279
|
} else if (signals[i].x.delta - signals[i].y.delta > 0) {
|
package/src/peaks/util/setIDs.ts
CHANGED
|
@@ -3,12 +3,14 @@ import { v4 as generateID } from '@lukeed/uuid';
|
|
|
3
3
|
const { parse, stringify } = JSON;
|
|
4
4
|
|
|
5
5
|
export function setIDs<T>(peaks: T[], options: { output?: T[] } = {}) {
|
|
6
|
-
const output = (options.output || parse(stringify(peaks))) as
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const output = (options.output || parse(stringify(peaks))) as Array<
|
|
7
|
+
T & {
|
|
8
|
+
id?: string;
|
|
9
|
+
}
|
|
10
|
+
>;
|
|
9
11
|
for (const peak of output) {
|
|
10
12
|
peak.id = generateID();
|
|
11
13
|
}
|
|
12
14
|
|
|
13
|
-
return output as
|
|
15
|
+
return output as Array<T & { id: string }>;
|
|
14
16
|
}
|
|
@@ -64,16 +64,17 @@ export async function predictAll(
|
|
|
64
64
|
molecule: Molecule,
|
|
65
65
|
options: PredictAllOptions = {},
|
|
66
66
|
): Promise<PredictedAll> {
|
|
67
|
-
|
|
67
|
+
const {
|
|
68
68
|
logger,
|
|
69
69
|
predictor = { H: predictProton, C: predictCarbon },
|
|
70
|
-
predictions,
|
|
71
70
|
joinDistance = { H: 0.05, C: 0.5 },
|
|
72
71
|
predictOptions = {},
|
|
73
72
|
} = options;
|
|
74
73
|
|
|
75
74
|
const diaIDs = getDiastereotopicAtomIDs(molecule);
|
|
76
75
|
|
|
76
|
+
let { predictions } = options;
|
|
77
|
+
|
|
77
78
|
const xPrediction = await getPredictions(
|
|
78
79
|
'H',
|
|
79
80
|
molecule,
|
|
@@ -70,7 +70,7 @@ export async function predictCarbon(
|
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
const {
|
|
74
74
|
database,
|
|
75
75
|
webserviceURL = 'https://nmr-prediction.service.zakodium.com/v1/predict/carbon',
|
|
76
76
|
diaIDs = getDiastereotopicAtomIDs(molecule),
|
|
@@ -93,7 +93,7 @@ export async function predictCarbon(
|
|
|
93
93
|
diaIDs,
|
|
94
94
|
});
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
const predictions = queryByHose(carbonDiaIDs, database, {
|
|
97
97
|
maxSphereSize,
|
|
98
98
|
});
|
|
99
99
|
|
|
@@ -111,7 +111,7 @@ export async function predictCarbon(
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
function formatSignals(predictions: Prediction[]) {
|
|
114
|
-
|
|
114
|
+
const signals = [];
|
|
115
115
|
for (const prediction of predictions) {
|
|
116
116
|
const { atoms, nbAtoms, delta, diaIDs, statistic } = prediction;
|
|
117
117
|
const signal = {
|
|
@@ -130,10 +130,10 @@ function formatSignals(predictions: Prediction[]) {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
function joinSignalByDiaID(signals: NMRSignal1D[]) {
|
|
133
|
-
|
|
134
|
-
for (
|
|
133
|
+
const joinedSignals: Record<string, Signal1DFromPrediction> = {};
|
|
134
|
+
for (const signal of signals) {
|
|
135
135
|
checkFromPrediction(signal);
|
|
136
|
-
|
|
136
|
+
const diaID = signal.diaIDs[0];
|
|
137
137
|
if (!joinedSignals[diaID]) {
|
|
138
138
|
joinedSignals[diaID] = JSON.parse(
|
|
139
139
|
JSON.stringify(signal),
|