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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { v4 as generateID } from '@lukeed/uuid';
|
|
2
2
|
|
|
3
3
|
import { NMRRangeWithIds, NMRSignal1DWithId } from '../assignment/nmrAssigment';
|
|
4
|
-
import { addIDs } from '../assignment/utils/
|
|
4
|
+
import { addIDs } from '../assignment/utils/generalAssignment/checkIDs';
|
|
5
5
|
import { NMRPeak1D } from '../peaks/NMRPeak1D';
|
|
6
6
|
import { detectSignals } from '../peaks/peaksToRanges';
|
|
7
7
|
import { solventSuppression } from '../peaks/solventSuppression';
|
|
@@ -23,12 +23,12 @@ export function markSolventPeaks<T extends NMRRange>(
|
|
|
23
23
|
const { frequency = 400 } = options;
|
|
24
24
|
const ranges = addIDs(cloneArray(input)) as NMRRangeWithIds[];
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
const peakList: NMRPeak1DWithSignalID[] = [];
|
|
27
27
|
for (const range of ranges) {
|
|
28
28
|
const rangeID = range.id;
|
|
29
29
|
for (const signal of range.signals || []) {
|
|
30
30
|
const signalID = signal.id;
|
|
31
|
-
for (
|
|
31
|
+
for (const peak of signal.peaks || []) {
|
|
32
32
|
peakList.push({
|
|
33
33
|
...peak,
|
|
34
34
|
rangeID,
|
|
@@ -43,13 +43,13 @@ export function markSolventPeaks<T extends NMRRange>(
|
|
|
43
43
|
});
|
|
44
44
|
|
|
45
45
|
const signalsWithSolvent = getSignalIDsWithSolvent(peaks);
|
|
46
|
-
for (
|
|
46
|
+
for (const range of ranges) {
|
|
47
47
|
if (!range.signals) continue;
|
|
48
|
-
for (
|
|
48
|
+
for (const signal of range.signals) {
|
|
49
49
|
if (!signalsWithSolvent.includes(signal.id)) continue;
|
|
50
50
|
const signalPeaks = [];
|
|
51
51
|
const solventSignalPeaks = [];
|
|
52
|
-
for (
|
|
52
|
+
for (const peak of peaks) {
|
|
53
53
|
if (peak.signalID === signal.id) {
|
|
54
54
|
const { signalID, rangeID, ...newPeak } = peak;
|
|
55
55
|
if (peak.kind === 'solvent') {
|
|
@@ -91,7 +91,7 @@ export function markSolventPeaks<T extends NMRRange>(
|
|
|
91
91
|
|
|
92
92
|
function getSignalIDsWithSolvent(solventPeaks: NMRPeak1DWithSignalID[]) {
|
|
93
93
|
const uniqueSignalID = new Set();
|
|
94
|
-
for (
|
|
94
|
+
for (const peak of solventPeaks) {
|
|
95
95
|
if (peak.kind !== 'solvent') continue;
|
|
96
96
|
uniqueSignalID.add(peak.signalID);
|
|
97
97
|
}
|
|
@@ -100,7 +100,7 @@ function getSignalIDsWithSolvent(solventPeaks: NMRPeak1DWithSignalID[]) {
|
|
|
100
100
|
|
|
101
101
|
function adaptSignals(signals: SignalIntern[]) {
|
|
102
102
|
const newSignals = [];
|
|
103
|
-
for (
|
|
103
|
+
for (const signal of signals) {
|
|
104
104
|
const signalResult: NMRSignal1DWithId = {
|
|
105
105
|
id: generateID(),
|
|
106
106
|
delta: signal.delta,
|
|
@@ -138,7 +138,7 @@ function pushDelta(range: NMRRange, acsRanges: string[], options: any) {
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
if (range.signals && range.signals.length > 0) {
|
|
141
|
-
|
|
141
|
+
const signals = range.signals;
|
|
142
142
|
if (signals.length > 1) {
|
|
143
143
|
if (options.ascending === true) {
|
|
144
144
|
signals.sort((a, b) => {
|
|
@@ -156,7 +156,7 @@ function pushDelta(range: NMRRange, acsRanges: string[], options: any) {
|
|
|
156
156
|
signal.multiplicity || (signal.js && signal.js.length > 0),
|
|
157
157
|
)
|
|
158
158
|
) {
|
|
159
|
-
for (
|
|
159
|
+
for (const signal of signals) {
|
|
160
160
|
parenthesis = [];
|
|
161
161
|
if (signal.delta !== undefined) {
|
|
162
162
|
strings = appendSeparator(strings);
|
|
@@ -208,7 +208,7 @@ function getIntegral(range: NMRRange, options: { nucleus: string[] }) {
|
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
function pushIntegral(range: NMRRange, parenthesis: string[], options: any) {
|
|
211
|
-
|
|
211
|
+
const integration = getIntegral(range, options);
|
|
212
212
|
if (integration.length > 0) parenthesis.push(integration);
|
|
213
213
|
}
|
|
214
214
|
|
|
@@ -218,7 +218,7 @@ function pushmultiplicityFromSignal(
|
|
|
218
218
|
) {
|
|
219
219
|
let multiplicity = signal.multiplicity;
|
|
220
220
|
if (!multiplicity) {
|
|
221
|
-
|
|
221
|
+
const joinedCouplings = signalJoinCouplings(signal, {
|
|
222
222
|
acsFormat: true,
|
|
223
223
|
tolerance: 0.05,
|
|
224
224
|
ignoreDiaIDs: true,
|
|
@@ -285,8 +285,8 @@ function pushCoupling(
|
|
|
285
285
|
return b.coupling - a.coupling;
|
|
286
286
|
});
|
|
287
287
|
|
|
288
|
-
|
|
289
|
-
for (
|
|
288
|
+
const values = [];
|
|
289
|
+
for (const j of signal.js) {
|
|
290
290
|
if (j.coupling !== undefined) {
|
|
291
291
|
values.push(j.coupling.toFixed(options.nbDecimalJ));
|
|
292
292
|
}
|
package/src/ranges/rangesToXY.ts
CHANGED
|
@@ -44,7 +44,7 @@ export interface RangeToXYOptions {
|
|
|
44
44
|
function checkForSignals(
|
|
45
45
|
ranges: NMRRange[],
|
|
46
46
|
): asserts ranges is RangeWithSignal[] {
|
|
47
|
-
for (
|
|
47
|
+
for (const range of ranges) {
|
|
48
48
|
if (!range.signals) throw new Error('range has not signals');
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -63,7 +63,7 @@ export function rangesToXY(
|
|
|
63
63
|
options: any = {},
|
|
64
64
|
): { x: DoubleArray; y: Float64Array } {
|
|
65
65
|
checkForSignals(ranges);
|
|
66
|
-
|
|
66
|
+
const {
|
|
67
67
|
frequency = 400,
|
|
68
68
|
lineWidth = 1,
|
|
69
69
|
nbPoints = 16 * 1024,
|
|
@@ -86,7 +86,7 @@ export function rangesToXY(
|
|
|
86
86
|
frequency,
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
const spectrum: DoubleArray = new Float64Array(nbPoints);
|
|
90
90
|
for (const range of ranges) {
|
|
91
91
|
const { integration, signals = [] } = range;
|
|
92
92
|
const { multiplicity: rangeMulplicity = '' } = range;
|
|
@@ -97,10 +97,10 @@ export function rangesToXY(
|
|
|
97
97
|
multiplicity: 'm',
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
|
-
|
|
100
|
+
const rangeSpectrum: DoubleArray = new Float64Array(nbPoints);
|
|
101
101
|
for (const signal of signals) {
|
|
102
102
|
const { multiplicity } = signal;
|
|
103
|
-
|
|
103
|
+
const signalSpectrum =
|
|
104
104
|
multiplicity === 'm' || multiplicity === 'b' || multiplicity === 'br s'
|
|
105
105
|
? broadPeakOrMultipletSpectrum([signal], spectrumOptions).y
|
|
106
106
|
: hackSignalsToXY([signal], spectrumOptions).y;
|
|
@@ -127,7 +127,7 @@ function broadPeakOrMultipletSpectrum(
|
|
|
127
127
|
const spectrumGenerator = new SpectrumGenerator(options);
|
|
128
128
|
|
|
129
129
|
const broadWidth = (lineWidth * 3) / frequency;
|
|
130
|
-
for (
|
|
130
|
+
for (const signal of signals) {
|
|
131
131
|
const { multiplicity, delta, integration = 1 } = signal;
|
|
132
132
|
if (multiplicity === 'b' || multiplicity === 'br s') {
|
|
133
133
|
spectrumGenerator.addPeak({
|
|
@@ -79,9 +79,9 @@ function groupJCouplings(
|
|
|
79
79
|
signal.js.sort((a, b) => b.coupling - a.coupling);
|
|
80
80
|
|
|
81
81
|
let currentGroup = [signal.js[0]];
|
|
82
|
-
|
|
82
|
+
const groups = [currentGroup];
|
|
83
83
|
for (let i = 1; i < signal.js.length; i++) {
|
|
84
|
-
|
|
84
|
+
const currentJ = signal.js[i];
|
|
85
85
|
if (
|
|
86
86
|
comparator(currentGroup[currentGroup.length - 1], currentJ, tolerance)
|
|
87
87
|
) {
|
|
@@ -93,7 +93,7 @@ function groupJCouplings(
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
signal.js = [];
|
|
96
|
-
for (
|
|
96
|
+
for (const group of groups) {
|
|
97
97
|
let multiplicity = '';
|
|
98
98
|
try {
|
|
99
99
|
multiplicity = joinPatterns(
|
|
@@ -107,33 +107,33 @@ function groupJCouplings(
|
|
|
107
107
|
continue;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
const coupling = xSum(group.map((group) => group.coupling)) / group.length;
|
|
111
|
+
const atoms = distinctValues(
|
|
112
112
|
group
|
|
113
113
|
.filter((group) => group.atoms)
|
|
114
114
|
.map((group) => group.atoms)
|
|
115
115
|
.flat() as number[],
|
|
116
116
|
) as number[];
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
const assignment = distinctValues(
|
|
119
119
|
group
|
|
120
120
|
.filter((group) => group.assignment)
|
|
121
121
|
.map((group) => group.assignment)
|
|
122
122
|
.flat() as string[],
|
|
123
123
|
).join(' ');
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
const diaIDs = distinctValues(
|
|
126
126
|
group
|
|
127
127
|
.filter((group) => group.diaIDs)
|
|
128
128
|
.map((group) => group.diaIDs)
|
|
129
129
|
.flat() as string[],
|
|
130
130
|
) as string[];
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
const distances = distinctValues(
|
|
133
133
|
group.map((group) => group.pathLength) as number[],
|
|
134
134
|
) as number[];
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
const newJ: Jcoupling = {
|
|
137
137
|
coupling,
|
|
138
138
|
multiplicity,
|
|
139
139
|
};
|
|
@@ -9,10 +9,10 @@ export function signalMultiplicityPattern(
|
|
|
9
9
|
signal: NMRSignal1D,
|
|
10
10
|
options?: { acsFormat?: boolean },
|
|
11
11
|
) {
|
|
12
|
-
|
|
12
|
+
const js = signal.js;
|
|
13
13
|
let pattern = '';
|
|
14
14
|
if (js && js.length > 0) {
|
|
15
|
-
for (
|
|
15
|
+
for (const coupling of js) {
|
|
16
16
|
const { multiplicity = '' } = coupling;
|
|
17
17
|
pattern += options?.acsFormat
|
|
18
18
|
? selectACSPattern(multiplicity)
|
|
@@ -4,7 +4,7 @@ import type { Jcoupling } from './Jcoupling';
|
|
|
4
4
|
import { NMRSignal1D } from './NMRSignal1D';
|
|
5
5
|
|
|
6
6
|
export function addDummySignals(signals: NMRSignal1D[]) {
|
|
7
|
-
|
|
7
|
+
const newSignals: NMRSignal1D[] = JSON.parse(JSON.stringify(signals));
|
|
8
8
|
|
|
9
9
|
let nextAtomToAssign =
|
|
10
10
|
signals.reduce((nextAtomToAssign, signal) => {
|
|
@@ -18,7 +18,7 @@ export function addDummySignals(signals: NMRSignal1D[]) {
|
|
|
18
18
|
js: jCouplings = [],
|
|
19
19
|
atoms: signalAssignment = [nextAtomToAssign++],
|
|
20
20
|
} = signal;
|
|
21
|
-
|
|
21
|
+
const { newCouplings, tempSignals } = checkCouplings(
|
|
22
22
|
jCouplings,
|
|
23
23
|
signalAssignment,
|
|
24
24
|
nextAtomToAssign + signals.length,
|
|
@@ -38,13 +38,13 @@ function checkCouplings(
|
|
|
38
38
|
signalAssignment: number[],
|
|
39
39
|
nextAtomToAssign: number,
|
|
40
40
|
) {
|
|
41
|
-
|
|
41
|
+
const tempSignals: NMRSignal1D[] = [];
|
|
42
42
|
const newCouplings = jCouplings.reduce<Jcoupling[]>(
|
|
43
43
|
(newCouplings, jCoupling) => {
|
|
44
44
|
const { atoms = [], multiplicity, coupling } = jCoupling;
|
|
45
45
|
if (atoms.length === 0) {
|
|
46
46
|
if (coupling && multiplicity) {
|
|
47
|
-
|
|
47
|
+
const tempCouplings: Jcoupling[] = [];
|
|
48
48
|
const nbLinks = couplingPatterns.indexOf(multiplicity);
|
|
49
49
|
for (let i = 0; i < nbLinks; i++) {
|
|
50
50
|
nextAtomToAssign++;
|
|
@@ -60,7 +60,7 @@ export function getInternalSignals(
|
|
|
60
60
|
options: GetInternalSignalsOptions,
|
|
61
61
|
) {
|
|
62
62
|
let index = 0;
|
|
63
|
-
|
|
63
|
+
const internalSignals = [];
|
|
64
64
|
const {
|
|
65
65
|
shape: shapeAsOption = { kind: 'gaussian' },
|
|
66
66
|
baseline: shiftValue = minMaxY.min,
|
|
@@ -117,7 +117,7 @@ export function getInternalSignals(
|
|
|
117
117
|
for (const jCoupling of signal.js || []) {
|
|
118
118
|
for (const property of properties) {
|
|
119
119
|
const parameter = 'coupling' as Parameter;
|
|
120
|
-
|
|
120
|
+
const generalParameterValue =
|
|
121
121
|
options?.parameters?.[parameter]?.[property];
|
|
122
122
|
if (generalParameterValue) {
|
|
123
123
|
if (typeof generalParameterValue === 'number') {
|
|
@@ -132,7 +132,7 @@ export function getInternalSignals(
|
|
|
132
132
|
),
|
|
133
133
|
);
|
|
134
134
|
} else {
|
|
135
|
-
|
|
135
|
+
const value = generalParameterValue({ jCoupling });
|
|
136
136
|
propertiesValues[property].push(
|
|
137
137
|
getNormalizedValue(
|
|
138
138
|
value,
|
|
@@ -218,7 +218,7 @@ function getPropertyValue(options: {
|
|
|
218
218
|
const { signal, frequency, parameter, property, minMaxY, shapeFct } = options;
|
|
219
219
|
|
|
220
220
|
// check if the property is specified in the signal
|
|
221
|
-
|
|
221
|
+
const propertyValue = signal?.parameters?.[parameter]?.[property];
|
|
222
222
|
if (propertyValue) {
|
|
223
223
|
return getNormalizedValue(
|
|
224
224
|
propertyValue,
|
|
@@ -232,7 +232,7 @@ function getPropertyValue(options: {
|
|
|
232
232
|
|
|
233
233
|
// check if there are some global option, it could be a number or a callback
|
|
234
234
|
|
|
235
|
-
|
|
235
|
+
const generalParameterValue = options?.parameters?.[parameter]?.[property];
|
|
236
236
|
if (generalParameterValue) {
|
|
237
237
|
if (typeof generalParameterValue === 'number') {
|
|
238
238
|
return getNormalizedValue(
|
|
@@ -244,7 +244,7 @@ function getPropertyValue(options: {
|
|
|
244
244
|
options.baseline,
|
|
245
245
|
);
|
|
246
246
|
} else {
|
|
247
|
-
|
|
247
|
+
const value = generalParameterValue(signal);
|
|
248
248
|
return getNormalizedValue(
|
|
249
249
|
value,
|
|
250
250
|
parameter,
|
|
@@ -66,7 +66,7 @@ export function optimizeSignals(
|
|
|
66
66
|
simulation: simulationOptions,
|
|
67
67
|
...restOptions
|
|
68
68
|
} = options;
|
|
69
|
-
|
|
69
|
+
const temp = xMinMaxValues(data.y);
|
|
70
70
|
const minMaxY = { ...temp, range: temp.max - temp.min };
|
|
71
71
|
|
|
72
72
|
const internalSignals = getInternalSignals(data, signals, minMaxY, {
|
|
@@ -74,7 +74,7 @@ export function optimizeSignals(
|
|
|
74
74
|
...restOptions,
|
|
75
75
|
});
|
|
76
76
|
const { baseline: shiftValue = minMaxY.min } = options;
|
|
77
|
-
|
|
77
|
+
const normalizedY = new Float64Array(data.y.length);
|
|
78
78
|
for (let i = 0; i < data.y.length; i++) {
|
|
79
79
|
normalizedY[i] = (data.y[i] - shiftValue) / minMaxY.range;
|
|
80
80
|
}
|
|
@@ -115,7 +115,7 @@ export function optimizeSignals(
|
|
|
115
115
|
? [directOptimization, defaultDirectOptimizationOptions]
|
|
116
116
|
: [levenbergMarquardt, defaultLMOptimizationOptions];
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
const fitted = algorithm({ x: data.x, y: normalizedY }, sumOfShapes, {
|
|
119
119
|
minValues,
|
|
120
120
|
maxValues,
|
|
121
121
|
initialValues,
|
|
@@ -39,13 +39,9 @@ export function signals2DToZ(
|
|
|
39
39
|
signals: NMRSignal2D[],
|
|
40
40
|
options: Signals2DToZOptions = {},
|
|
41
41
|
) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
nbPoints = 512,
|
|
46
|
-
width = 0.02,
|
|
47
|
-
factor = 3,
|
|
48
|
-
} = options;
|
|
42
|
+
const { from = -1, to = 12, nbPoints = 512, factor = 3 } = options;
|
|
43
|
+
|
|
44
|
+
let { width = 0.02 } = options;
|
|
49
45
|
|
|
50
46
|
const peaks = signals.reduce<Peak2DSeries>(
|
|
51
47
|
(acc, { x, y }) => {
|
|
@@ -77,7 +73,7 @@ function ensureXYNumber(input: number | XYNumber) {
|
|
|
77
73
|
}
|
|
78
74
|
|
|
79
75
|
function mergeClosePeaks(peaksIn: Peak2DSeries) {
|
|
80
|
-
|
|
76
|
+
const peaks = JSON.parse(JSON.stringify(peaksIn));
|
|
81
77
|
for (let i = 0; i < peaks.x.length; i++) {
|
|
82
78
|
for (let j = i + 1; j < peaks.x.length; j++) {
|
|
83
79
|
if (peaks.x[i] === peaks.x[j] && peaks.y[i] === peaks.y[j]) {
|
|
@@ -64,10 +64,10 @@ export function signalsJoin(
|
|
|
64
64
|
|
|
65
65
|
const groupedSignals: Record<string, Signal1DWidthJsAndDiaID[]> = {};
|
|
66
66
|
|
|
67
|
-
for (
|
|
67
|
+
for (const signal of copySignals) {
|
|
68
68
|
signal.js = signal.js.sort(localeCompareJcouplingKeys);
|
|
69
69
|
const keyDiaIDs = signal.diaIDs.join(' ');
|
|
70
|
-
|
|
70
|
+
const id = `${keyDiaIDs} ${signal.js
|
|
71
71
|
.map(
|
|
72
72
|
(j: JcouplingFromPrediction) => `${j.diaIDs.join(' ')} ${j.pathLength}`,
|
|
73
73
|
)
|
|
@@ -82,7 +82,7 @@ export function signalsJoin(
|
|
|
82
82
|
let newSignals: Signal1DWidthJsAndDiaID[] = [];
|
|
83
83
|
Object.values(groupedSignals).forEach((group) => {
|
|
84
84
|
// joining couplings only if diaID and pathLength are equal
|
|
85
|
-
|
|
85
|
+
const js: JcouplingFromPrediction[] = [];
|
|
86
86
|
for (let i = 0; i < group[0].js.length; i++) {
|
|
87
87
|
const coupling = group[0].js[i];
|
|
88
88
|
js.push({
|
|
@@ -92,7 +92,7 @@ export function signalsJoin(
|
|
|
92
92
|
coupling: xMean(group.map((item) => item.js[i].coupling)),
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
const signal: Signal1DWidthJsAndDiaID = {
|
|
96
96
|
id: generateID(),
|
|
97
97
|
nbAtoms: xSum(group.map((item) => item.nbAtoms || 0)),
|
|
98
98
|
delta: xMean(group.map((item) => item.delta)),
|
|
@@ -113,7 +113,7 @@ export function signalsJoin(
|
|
|
113
113
|
|
|
114
114
|
newSignals = newSignals
|
|
115
115
|
.map((signal) => {
|
|
116
|
-
|
|
116
|
+
const newSignal = signalJoinCouplings(signal, {
|
|
117
117
|
tolerance,
|
|
118
118
|
ignoreDiaIDs,
|
|
119
119
|
}) as Signal1DWidthJsAndDiaID;
|
|
@@ -31,7 +31,7 @@ interface WrappedSignal {
|
|
|
31
31
|
function checkNbAtoms(
|
|
32
32
|
signals: NMRSignal1D[],
|
|
33
33
|
): asserts signals is Signals1DWithNbAtoms[] {
|
|
34
|
-
for (
|
|
34
|
+
for (const signal of signals) {
|
|
35
35
|
if (!signal.nbAtoms) throw new Error('nbAtoms is mandatory');
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -56,9 +56,9 @@ export function signalsToRanges(
|
|
|
56
56
|
|
|
57
57
|
wrapped = wrapped.sort((signal1, signal2) => signal1.from - signal2.from);
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
const ranges: RangeFullfiled[] = [];
|
|
60
60
|
let range = {} as RangeFullfiled;
|
|
61
|
-
for (
|
|
61
|
+
for (const signal of wrapped) {
|
|
62
62
|
if (range.from === undefined || signal.from > range.to) {
|
|
63
63
|
range = {
|
|
64
64
|
id: generateID(),
|
|
@@ -75,7 +75,7 @@ export function signalsToXY(
|
|
|
75
75
|
options: OptionsSignalsToXY = {},
|
|
76
76
|
) {
|
|
77
77
|
checkForMandatory(signals);
|
|
78
|
-
|
|
78
|
+
const {
|
|
79
79
|
frequency = 400,
|
|
80
80
|
shape = {
|
|
81
81
|
kind: 'gaussian',
|
|
@@ -95,14 +95,14 @@ export function signalsToXY(
|
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
const spinSystem = signalsToSpinSystem(signals);
|
|
99
99
|
|
|
100
100
|
spinSystem.clusters = splitSpinSystem(spinSystem, {
|
|
101
101
|
frequency,
|
|
102
102
|
maxClusterSize,
|
|
103
103
|
});
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
const spectrum = simulate1D(spinSystem, {
|
|
106
106
|
frequency,
|
|
107
107
|
from,
|
|
108
108
|
to,
|
|
@@ -6,9 +6,7 @@ import type { NMRSignal1D } from '../NMRSignal1D';
|
|
|
6
6
|
import type { SpinSystem } from '../spinSystem';
|
|
7
7
|
import { ensureSpinSystemProps } from '../utils/ensureSpinSystemProps';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
[index: number]: number;
|
|
11
|
-
}
|
|
9
|
+
type Ids = Record<number, number>;
|
|
12
10
|
|
|
13
11
|
type JcouplingFromPrediction = MakeMandatory<Jcoupling, 'atoms'>;
|
|
14
12
|
type Signal1DWidthAtomIDs = MakeMandatory<NMRSignal1D, 'atoms'>;
|
|
@@ -42,10 +40,10 @@ export function signalsToSpinSystem(signals: NMRSignal1D[]): SpinSystem {
|
|
|
42
40
|
}
|
|
43
41
|
//create the coupling matrix
|
|
44
42
|
for (let i = 0; i < nSpins; i++) {
|
|
45
|
-
|
|
43
|
+
const { atoms: signalAssignment, js: jCoupling } = signals[i];
|
|
46
44
|
const fromIndex = signalAssignment[0];
|
|
47
45
|
for (const jcoupling of jCoupling) {
|
|
48
|
-
|
|
46
|
+
const { coupling, atoms } = jcoupling;
|
|
49
47
|
const toIndex = atoms[0];
|
|
50
48
|
couplingConstants.set(ids[fromIndex], ids[toIndex], coupling);
|
|
51
49
|
couplingConstants.set(ids[toIndex], ids[fromIndex], coupling);
|
|
@@ -14,7 +14,7 @@ export function simulate1D(
|
|
|
14
14
|
spinSystemInput: SpinSystem,
|
|
15
15
|
options: Simulate1DOptions = {},
|
|
16
16
|
): DataXY {
|
|
17
|
-
|
|
17
|
+
const {
|
|
18
18
|
lineWidth = 1,
|
|
19
19
|
frequency: frequencyMHz = 400,
|
|
20
20
|
from = 0,
|
|
@@ -26,7 +26,7 @@ export function simulate1D(
|
|
|
26
26
|
} = options;
|
|
27
27
|
|
|
28
28
|
const spinSystem = ensureSpinSystemProps(spinSystemInput);
|
|
29
|
-
|
|
29
|
+
const peakWidth = lineWidth / frequencyMHz;
|
|
30
30
|
|
|
31
31
|
const xyPeaks = simulateXYPeaks(spinSystem, options);
|
|
32
32
|
|
|
@@ -56,7 +56,7 @@ export function simulateXYPeaks(
|
|
|
56
56
|
spinSystemInput: SpinSystem,
|
|
57
57
|
options: Simulate1DOptions = {},
|
|
58
58
|
) {
|
|
59
|
-
|
|
59
|
+
const {
|
|
60
60
|
lineWidth = 1,
|
|
61
61
|
maxClusterSize = 8,
|
|
62
62
|
frequency: frequencyMHz = 400,
|
|
@@ -73,13 +73,13 @@ export function simulateXYPeaks(
|
|
|
73
73
|
|
|
74
74
|
const xyPeaks: Array<{ x: number; y: number }> = [];
|
|
75
75
|
for (const cluster of spinSystem.clusters) {
|
|
76
|
-
|
|
76
|
+
const clusterFake = cluster.map((cluster) =>
|
|
77
77
|
cluster < 0 ? -cluster - 1 : cluster,
|
|
78
78
|
);
|
|
79
79
|
let weight = 1;
|
|
80
80
|
let sumI = 0;
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
const frequencies: number[] = [];
|
|
82
|
+
const intensities: number[] = [];
|
|
83
83
|
if (cluster.length > maxClusterSize) {
|
|
84
84
|
// This is a single spin, but the cluster exceeds the maxClusterSize criteria
|
|
85
85
|
// we use the simple multiplicity algorithm
|
|
@@ -90,8 +90,9 @@ export function simulateXYPeaks(
|
|
|
90
90
|
frequencies.push(-chemicalShifts[index]);
|
|
91
91
|
for (let i = 0; i < cluster.length; i++) {
|
|
92
92
|
if (cluster[i] < 0) {
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
const jc =
|
|
94
|
+
spinSystem.couplingConstants.get(index, clusterFake[i]) / 2;
|
|
95
|
+
const currentSize = frequencies.length;
|
|
95
96
|
for (let j = 0; j < currentSize; j++) {
|
|
96
97
|
frequencies.push(frequencies[j] + jc);
|
|
97
98
|
frequencies[j] -= jc;
|
|
@@ -149,7 +150,7 @@ export function simulateXYPeaks(
|
|
|
149
150
|
assignmentMatrix.forEachNonZero((i, j, v) => {
|
|
150
151
|
if (v > 0) {
|
|
151
152
|
for (let k = 0; k < V.columns; k++) {
|
|
152
|
-
|
|
153
|
+
const element = V.get(j, k);
|
|
153
154
|
if (element !== 0) {
|
|
154
155
|
rhoip.set(i, k, rhoip.get(i, k) + element);
|
|
155
156
|
}
|
|
@@ -162,7 +163,7 @@ export function simulateXYPeaks(
|
|
|
162
163
|
assignmentMatrix.forEachNonZero((i: number, j: number, v: number) => {
|
|
163
164
|
if (v < 0) {
|
|
164
165
|
for (let k = 0; k < V.columns; k++) {
|
|
165
|
-
|
|
166
|
+
const element = V.get(j, k);
|
|
166
167
|
if (element !== 0) {
|
|
167
168
|
rhoip2.set(i, k, rhoip2.get(i, k) + element);
|
|
168
169
|
}
|
|
@@ -192,8 +193,8 @@ export function simulateXYPeaks(
|
|
|
192
193
|
val *= val;
|
|
193
194
|
|
|
194
195
|
sumI += val;
|
|
195
|
-
|
|
196
|
-
|
|
196
|
+
const valFreq = diagB[i] - diagB[j];
|
|
197
|
+
const insertIn = binarySearch(
|
|
197
198
|
frequencies,
|
|
198
199
|
valFreq,
|
|
199
200
|
(a: number, b: number) => a - b,
|
|
@@ -270,22 +271,21 @@ function getHamiltonian(
|
|
|
270
271
|
const clusterHam = new SparseMatrix(hamSize, hamSize);
|
|
271
272
|
|
|
272
273
|
for (let pos = 0; pos < cluster.length; pos++) {
|
|
273
|
-
|
|
274
|
+
const n = cluster[pos];
|
|
274
275
|
|
|
275
276
|
const L = getPauliMatrix(multiplicity[n]);
|
|
276
277
|
|
|
277
|
-
let A1, B1;
|
|
278
278
|
let temp = 1;
|
|
279
279
|
for (let i = 0; i < pos; i++) {
|
|
280
280
|
temp *= multiplicity[cluster[i]];
|
|
281
281
|
}
|
|
282
|
-
A1 = SparseMatrix.eye(temp);
|
|
282
|
+
const A1 = SparseMatrix.eye(temp);
|
|
283
283
|
|
|
284
284
|
temp = 1;
|
|
285
285
|
for (let i = pos + 1; i < cluster.length; i++) {
|
|
286
286
|
temp *= multiplicity[cluster[i]];
|
|
287
287
|
}
|
|
288
|
-
B1 = SparseMatrix.eye(temp);
|
|
288
|
+
const B1 = SparseMatrix.eye(temp);
|
|
289
289
|
|
|
290
290
|
const alpha = chemicalShifts[n];
|
|
291
291
|
const kronProd = A1.kroneckerProduct(L.z).kroneckerProduct(B1);
|
|
@@ -295,18 +295,17 @@ function getHamiltonian(
|
|
|
295
295
|
if (conMatrix.get(n, k) === 1) {
|
|
296
296
|
const S = getPauliMatrix(multiplicity[k]);
|
|
297
297
|
|
|
298
|
-
let A2, B2;
|
|
299
298
|
let temp = 1;
|
|
300
299
|
for (let i = 0; i < pos2; i++) {
|
|
301
300
|
temp *= multiplicity[cluster[i]];
|
|
302
301
|
}
|
|
303
|
-
A2 = SparseMatrix.eye(temp);
|
|
302
|
+
const A2 = SparseMatrix.eye(temp);
|
|
304
303
|
|
|
305
304
|
temp = 1;
|
|
306
305
|
for (let i = pos2 + 1; i < cluster.length; i++) {
|
|
307
306
|
temp *= multiplicity[cluster[i]];
|
|
308
307
|
}
|
|
309
|
-
B2 = SparseMatrix.eye(temp);
|
|
308
|
+
const B2 = SparseMatrix.eye(temp);
|
|
310
309
|
|
|
311
310
|
const kron1 = A1.kroneckerProduct(L.x)
|
|
312
311
|
.kroneckerProduct(B1)
|