nmr-processing 9.7.8 → 9.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/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/degreeToRadians.d.ts +1 -0
- package/lib/constants/degreeToRadians.js +5 -0
- package/lib/constants/degreeToRadians.js.map +1 -0
- 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 +69 -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 +78 -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/splitPatterns.js +1 -1
- package/lib/multiplicity/splitPatterns.js.map +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/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 +9 -9
- 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 +1 -19
- 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 +3 -11
- package/lib/xyz/util/fft2d/fftDirectDimension.js.map +1 -1
- package/lib/xyz/util/fft2d/fftIndirectDimension.d.ts +2 -4
- package/lib/xyz/util/fft2d/fftIndirectDimension.js +104 -50
- 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/util/phaseCorrection/applyOverImag.d.ts +24 -0
- package/lib/xyz/util/phaseCorrection/applyOverImag.js +27 -0
- package/lib/xyz/util/phaseCorrection/applyOverImag.js.map +1 -0
- package/lib/xyz/util/phaseCorrection/applyOverReal.d.ts +22 -0
- package/lib/xyz/util/phaseCorrection/applyOverReal.js +27 -0
- package/lib/xyz/util/phaseCorrection/applyOverReal.js.map +1 -0
- package/lib/xyz/util/phaseCorrection/checkNmrData2DFourQuad.d.ts +3 -0
- package/lib/xyz/util/phaseCorrection/checkNmrData2DFourQuad.js +10 -0
- package/lib/xyz/util/phaseCorrection/checkNmrData2DFourQuad.js.map +1 -0
- package/lib/xyz/util/phaseCorrection/checkNmrData2DTwoQuad.d.ts +3 -0
- package/lib/xyz/util/phaseCorrection/checkNmrData2DTwoQuad.js +10 -0
- package/lib/xyz/util/phaseCorrection/checkNmrData2DTwoQuad.js.map +1 -0
- package/lib/xyz/util/phaseCorrection/getZMinMax.d.ts +6 -0
- package/lib/xyz/util/phaseCorrection/getZMinMax.js +13 -0
- package/lib/xyz/util/phaseCorrection/getZMinMax.js.map +1 -0
- 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/xyz/xyzPhaseCorrectionDirectDimension.d.ts +16 -0
- package/lib/xyz/xyzPhaseCorrectionDirectDimension.js +30 -0
- package/lib/xyz/xyzPhaseCorrectionDirectDimension.js.map +1 -0
- package/lib/xyz/xyzPhaseCorrectionIndirectDimension.d.ts +25 -0
- package/lib/xyz/xyzPhaseCorrectionIndirectDimension.js +32 -0
- package/lib/xyz/xyzPhaseCorrectionIndirectDimension.js.map +1 -0
- 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/degreeToRadians.js +2 -0
- package/lib-esm/constants/degreeToRadians.js.map +1 -0
- 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 +63 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension1.js.map +1 -0
- package/lib-esm/datum/data2d/filter2d/fftDimension2.js +72 -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/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 +9 -9
- 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 +2 -20
- 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 -12
- package/lib-esm/xyz/util/fft2d/fftDirectDimension.js.map +1 -1
- package/lib-esm/xyz/util/fft2d/fftIndirectDimension.js +104 -50
- 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/util/phaseCorrection/applyOverImag.js +20 -0
- package/lib-esm/xyz/util/phaseCorrection/applyOverImag.js.map +1 -0
- package/lib-esm/xyz/util/phaseCorrection/applyOverReal.js +20 -0
- package/lib-esm/xyz/util/phaseCorrection/applyOverReal.js.map +1 -0
- package/lib-esm/xyz/util/phaseCorrection/checkNmrData2DFourQuad.js +6 -0
- package/lib-esm/xyz/util/phaseCorrection/checkNmrData2DFourQuad.js.map +1 -0
- package/lib-esm/xyz/util/phaseCorrection/checkNmrData2DTwoQuad.js +6 -0
- package/lib-esm/xyz/util/phaseCorrection/checkNmrData2DTwoQuad.js.map +1 -0
- package/lib-esm/xyz/util/phaseCorrection/getZMinMax.js +9 -0
- package/lib-esm/xyz/util/phaseCorrection/getZMinMax.js.map +1 -0
- 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/lib-esm/xyz/xyzPhaseCorrectionDirectDimension.js +26 -0
- package/lib-esm/xyz/xyzPhaseCorrectionDirectDimension.js.map +1 -0
- package/lib-esm/xyz/xyzPhaseCorrectionIndirectDimension.js +28 -0
- package/lib-esm/xyz/xyzPhaseCorrectionIndirectDimension.js.map +1 -0
- package/package.json +4 -4
- 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/degreeToRadians.ts +1 -0
- 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 +93 -0
- package/src/datum/data2d/filter2d/fftDimension2.ts +94 -0
- package/src/datum/data2d/utils/getShift.ts +1 -1
- package/src/ml-tree-set.d.ts +1 -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 +9 -9
- 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 +2 -27
- package/src/xyz/util/fft2d/digitalFilter.ts +3 -3
- package/src/xyz/util/fft2d/fftDirectDimension.ts +4 -23
- package/src/xyz/util/fft2d/fftIndirectDimension.ts +123 -73
- 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/util/phaseCorrection/applyOverImag.ts +29 -0
- package/src/xyz/util/phaseCorrection/applyOverReal.ts +29 -0
- package/src/xyz/util/phaseCorrection/checkNmrData2DFourQuad.ts +12 -0
- package/src/xyz/util/phaseCorrection/checkNmrData2DTwoQuad.ts +11 -0
- package/src/xyz/util/phaseCorrection/getZMinMax.ts +10 -0
- package/src/xyz/xyzAutoSignalsPicking.ts +20 -19
- package/src/xyz/xyzBidimensionalFFT.ts +1 -20
- package/src/xyz/xyzJResAnalyzer.ts +21 -21
- package/src/xyz/xyzPhaseCorrectionDirectDimension.ts +52 -0
- package/src/xyz/xyzPhaseCorrectionIndirectDimension.ts +45 -0
- 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
|
@@ -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),
|
|
@@ -95,14 +95,14 @@ function protonParser(
|
|
|
95
95
|
if (result.includes('ERR')) {
|
|
96
96
|
throw Error(`Spinus optimization: ${result}`);
|
|
97
97
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
for (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
const distanceMatrix = getConnectivityMatrix(molecule, { pathLength: true });
|
|
99
|
+
const lines = result.split('\n').filter((line) => line);
|
|
100
|
+
const signals = [];
|
|
101
|
+
for (const line of lines) {
|
|
102
|
+
const fields: string[] = line.split('\t');
|
|
103
|
+
const couplings = fields.slice(4);
|
|
104
|
+
const atom = Number(fields[0]) - 1;
|
|
105
|
+
const signal: NMRSignal1D = {
|
|
106
106
|
id: generateID(),
|
|
107
107
|
atoms: [atom],
|
|
108
108
|
diaIDs: [diaIDs[atom]],
|
|
@@ -115,7 +115,7 @@ function protonParser(
|
|
|
115
115
|
throw new Error(`For atom js property was not added`);
|
|
116
116
|
}
|
|
117
117
|
for (let i = 0; i < couplings.length; i += 3) {
|
|
118
|
-
|
|
118
|
+
const linked = Number(couplings[i]) - 1;
|
|
119
119
|
signal.js.push({
|
|
120
120
|
coupling: Number(couplings[i + 2]),
|
|
121
121
|
atoms: [linked],
|
|
@@ -24,11 +24,11 @@ export function getFilteredIDiaIDs(
|
|
|
24
24
|
|
|
25
25
|
const molfile = molecule.toMolfile();
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
const groupedDiaIDs = groupDiastereotopicAtomIDs(diaIDs, molecule, {
|
|
28
28
|
atomLabel: 'C',
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
const carbonDiaIDs = groupedDiaIDs.sort((a, b) => {
|
|
32
32
|
if (a.atomLabel === b.atomLabel) {
|
|
33
33
|
return b.counter - a.counter;
|
|
34
34
|
}
|
|
@@ -45,7 +45,7 @@ export function getFilteredIDiaIDs(
|
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
const toReturn = {
|
|
49
49
|
molfile,
|
|
50
50
|
carbonDiaIDs: carbonDiaIDs as GroupedDiaIDsWithHose,
|
|
51
51
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const nucleusMap:
|
|
1
|
+
const nucleusMap: Record<string, string> = {
|
|
2
2
|
h: '1H',
|
|
3
3
|
c: '13C',
|
|
4
4
|
};
|
|
5
5
|
|
|
6
|
-
export function getNuclei(input:
|
|
6
|
+
export function getNuclei(input: Record<string, string>) {
|
|
7
7
|
return Object.values(input).map((e) => nucleusMap[e.toLowerCase()]);
|
|
8
8
|
}
|
|
@@ -101,9 +101,7 @@ export interface PredictOptions {
|
|
|
101
101
|
C?: PredictCarbonOptions;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
export
|
|
105
|
-
[key: string]: Prediction1D | undefined;
|
|
106
|
-
}
|
|
104
|
+
export type Predictions = Record<string, Prediction1D | undefined>;
|
|
107
105
|
|
|
108
106
|
type GroupDiastereotopicAtomIDsWithAtomInfo = GroupDiastereotopicAtomIDs & {
|
|
109
107
|
pathInfo: PathInfo;
|
|
@@ -122,9 +120,7 @@ function checkFromTo(
|
|
|
122
120
|
}
|
|
123
121
|
}
|
|
124
122
|
|
|
125
|
-
|
|
126
|
-
[key: string]: { [key: string]: NMRSignal1D };
|
|
127
|
-
}
|
|
123
|
+
type Signal1DByDiaID = Record<string, Record<string, NMRSignal1D>>;
|
|
128
124
|
|
|
129
125
|
export async function predict2D(
|
|
130
126
|
molecule: Molecule,
|
|
@@ -134,7 +130,7 @@ export async function predict2D(
|
|
|
134
130
|
|
|
135
131
|
molecule.addImplicitHydrogens();
|
|
136
132
|
|
|
137
|
-
|
|
133
|
+
const {
|
|
138
134
|
from,
|
|
139
135
|
to,
|
|
140
136
|
diaIDs,
|
|
@@ -158,8 +154,8 @@ export async function predict2D(
|
|
|
158
154
|
? groupDiastereotopicAtomIDs(diaIDs, molecule)
|
|
159
155
|
: getGroupedDiastereotopicAtomIDs(molecule);
|
|
160
156
|
|
|
161
|
-
|
|
162
|
-
for (
|
|
157
|
+
const diaIDswithAtomInfo: GroupDiastereotopicAtomIDsWithAtomInfo[] = [];
|
|
158
|
+
for (const diaID of groupedDiaIDS) {
|
|
163
159
|
diaIDswithAtomInfo.push({
|
|
164
160
|
...diaID,
|
|
165
161
|
pathInfo: JSON.parse(
|
|
@@ -191,7 +187,7 @@ export async function predict2D(
|
|
|
191
187
|
throw new Error('predictions are not availaible');
|
|
192
188
|
}
|
|
193
189
|
|
|
194
|
-
const spectra:
|
|
190
|
+
const spectra: Record<string, Prediction1D> = {
|
|
195
191
|
x: xPrediction,
|
|
196
192
|
y: yPrediction,
|
|
197
193
|
};
|
|
@@ -206,7 +202,7 @@ export async function predict2D(
|
|
|
206
202
|
signalsByDiaID[axis][signal.diaIDs[0]] = signal;
|
|
207
203
|
}
|
|
208
204
|
}
|
|
209
|
-
|
|
205
|
+
const group: Record<string, NMRSignal2D> = {};
|
|
210
206
|
for (const diaID of diaIDswithAtomInfo) {
|
|
211
207
|
const pathInfo = diaID.pathInfo;
|
|
212
208
|
if (pathInfo.paths.length < 1) continue;
|
|
@@ -217,7 +213,7 @@ export async function predict2D(
|
|
|
217
213
|
for (const path of currentPaths) {
|
|
218
214
|
if (!signalsByDiaID.y[pathsInfo[path.to].oclID]) continue;
|
|
219
215
|
|
|
220
|
-
|
|
216
|
+
const fromToDiaID: Record<string, AtomInfo> = {
|
|
221
217
|
x: pathInfo,
|
|
222
218
|
y: pathsInfo[path.to],
|
|
223
219
|
};
|
|
@@ -228,10 +224,10 @@ export async function predict2D(
|
|
|
228
224
|
continue;
|
|
229
225
|
}
|
|
230
226
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
for (
|
|
234
|
-
|
|
227
|
+
const peak: any = { id: generateID(), z: 100 };
|
|
228
|
+
const signal: any = { id: generateID(), x: {}, y: {} };
|
|
229
|
+
for (const axis in fromToDiaID) {
|
|
230
|
+
const diaID = fromToDiaID[axis].oclID;
|
|
235
231
|
peak[axis] = signalsByDiaID[axis][diaID].delta;
|
|
236
232
|
signal[axis].delta = signalsByDiaID[axis][diaID].delta;
|
|
237
233
|
signal[axis].diaIDs = [diaID];
|
|
@@ -263,11 +259,11 @@ export async function predict2D(
|
|
|
263
259
|
}
|
|
264
260
|
|
|
265
261
|
function splitSignals(joinedSignals: NMRSignal2D[]) {
|
|
266
|
-
|
|
262
|
+
const signals: NMRSignal2D[] = [];
|
|
267
263
|
for (const signal of joinedSignals) {
|
|
268
264
|
for (const xAtom of signal.x.atoms || []) {
|
|
269
265
|
for (const yAtom of signal.y.atoms || []) {
|
|
270
|
-
|
|
266
|
+
const newSignal = JSON.parse(JSON.stringify(signal));
|
|
271
267
|
newSignal.x.atoms = [xAtom];
|
|
272
268
|
newSignal.y.atoms = [yAtom];
|
|
273
269
|
signals.push(newSignal);
|
|
@@ -282,21 +278,21 @@ interface AddSelftCorrelationOptions {
|
|
|
282
278
|
signalsByDiaID: Signal1DByDiaID;
|
|
283
279
|
}
|
|
284
280
|
function addSelftCorrelation(
|
|
285
|
-
group:
|
|
281
|
+
group: Record<string, NMRSignal2D>,
|
|
286
282
|
options: AddSelftCorrelationOptions,
|
|
287
283
|
) {
|
|
288
284
|
const { paths = [], signalsByDiaID } = options;
|
|
289
285
|
for (const atom of paths) {
|
|
290
286
|
if (atom.paths.length < 1) continue;
|
|
291
287
|
|
|
292
|
-
|
|
288
|
+
const diaID = atom.oclID;
|
|
293
289
|
if (!signalsByDiaID.x[diaID]) continue;
|
|
294
290
|
if (group[`${diaID}-${diaID}`]) continue;
|
|
295
291
|
|
|
296
|
-
|
|
292
|
+
const signal: any = { x: {}, y: {} };
|
|
297
293
|
|
|
298
|
-
|
|
299
|
-
for (
|
|
294
|
+
const peak: any = { z: 1 };
|
|
295
|
+
for (const axis of ['x', 'y']) {
|
|
300
296
|
peak[axis] = signalsByDiaID[axis][diaID].delta;
|
|
301
297
|
signal[axis].delta = signalsByDiaID[axis][diaID].delta;
|
|
302
298
|
signal[axis].diaIDs = [diaID];
|
|
@@ -335,7 +331,7 @@ function createZones(signals: NMRSignal2D[], options: CreateZonesOptions) {
|
|
|
335
331
|
Math.pow(joinDistance[to] / (maxY - minY), 2),
|
|
336
332
|
);
|
|
337
333
|
|
|
338
|
-
|
|
334
|
+
const hClusters = agnes(deltas.to2DArray(), { method: 'centroid' });
|
|
339
335
|
const clusters = splitClusters([hClusters], cutOff);
|
|
340
336
|
|
|
341
337
|
const zones: NMRZone[] = [];
|
|
@@ -376,7 +372,7 @@ function fromTo(signals: NMRSignal2D[], options: CreateZonesOptions) {
|
|
|
376
372
|
}
|
|
377
373
|
|
|
378
374
|
function splitClusters(clusters: Cluster[], maxDistance: number): Cluster[] {
|
|
379
|
-
|
|
375
|
+
const originalLength = clusters.length;
|
|
380
376
|
for (let i = 0; i < clusters.length; i++) {
|
|
381
377
|
const cluster = clusters[i];
|
|
382
378
|
if (cluster.height > maxDistance) {
|